Payment gateway integration for MultiSafepay. MultiSafepay is a large payment gateway based in The Netherlands that supports many international payment methods.
MultiSafepay offers two methods for payments, see https://www.multisafepay.com/en/Payment-services/:
- Fast checkout requires customers to create a MultiSafePay account. You only have to pay a transaction fee, but the account system is not very user-friendly.
- Connect provides direct payments. As a merchant, you have to pay a monthly subscription.
Install via pip:
pip install django-multisafepay
In the MultiSafepay merchant site settings, add a new website. Use those settings to configure the application:
- MULTISAFEPAY_ACCOUNT_ID
The account ID, provided by MultiSafepay.
- MULTISAFEPAY_SITE_ID
The site ID, found in the MultiSafepay website settings panel.
- MULTISAFEPAY_SITE_CODE
The site security code, found in the MultiSafepay website settings panel.
- MULTISAFEPAY_TESTING
Whether or not to run in testing mode. Defaults to True.
Add to urls.py
:
urlpatterns += patterns('',
url(r'^api/multisafepay/', include('django_multisafepay.urls')),
)
As recommendation, temporary log all events from this package as well:
LOGGING = {
# ...
'handlers': {
# ...
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
# ...
'django_multisafepay': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
},
}
Creating a new payment transaction:
from django_multisafepay.client import MultiSafepayClient
from django_multisafepay.data import Transaction, Customer
from django.shortcuts import redirect
def pay(request):
client = MultiSafepayClient()
reply = client.start_checkout(
transaction = Transaction(
),
customer = Customer(
)
)
return redirect(reply.payment_url)
- For the Fast Checkout, use the
start_checkout()
method. - For the Connect method, use the
redirect_transaction()
method.
Both methods return an URL to redirect the user to.
Fetching status:
client = MultiSafepayClient()
statusreply = client.status(self.transaction_id)
- Integrate nicely in django-merchant or django-getpaid.
- Not all XML features are implemented, e.g.:
- checkout-shopping-cart
- custom-fields
- shipping
- iDEAL issuers request (simple to add)