eCard payments system for django-oscar shop application.
django-oscar-ecard can be installed as a normal Python package.
Example instalation for pip:
$ pip install django-facebook-auth
Add facebook_auth to INSTALLED_APPS:
INSTALLED_APPS = (
...
'oscar_ecard',
...
)
To your Shop instance (primary app.py) add the application and urls:
from oscar_ecard.app import application as ecard_application
class BaseApplication(Shop):
...
ecard_application = ecard_application
...
def get_urls(self):
urlpatterns = super(BaseApplication, self).get_urls()
urlpatterns += patterns(
'',
(r'^ecard/', include(self.ecard_application.urls)),
)
return urlpatterns
Implement eCardPaymentRequest creation in PaymentDetailsView like so:
from django.core.urlresolvers import reverse
from django.db.models import get_model
from django import http
from oscar.apps.checkout import views as base_views
SourceType = get_model('payment', 'SourceType')
eCardPaymentRequest = get_model('oscar_ecard', 'eCardPaymentRequest')
class PaymentDetailsView(base_views.PaymentDetailsView):
def handle_payment(self, order_number, total_incl_tax, **kwargs):
self._create_source(total_incl_tax)
def handle_successful_order(self, order):
super(PaymentDetailsView, self).handle_successful_order(order)
return http.HttpResponseRedirect(reverse('payment-redirect-form', kwargs={'order_id': order.id}))
def _create_source(self, total_incl_tax):
source = eCardPaymentRequest(source_type=self._get_source_type(),
amount_allocated=total_incl_tax)
self.add_payment_source(source)
def _get_source_type(self):
type = SourceType.objects.get(name='eCard')
return type
In settings set:
ECARD_RESPONSE_SERVER_IP = '193.178.213.69' ECARD_MERCHANT_ID = '' ECARD_PASSWORD = '' ECARD_SUCCESS_URL = '' ECARD_FAIL_URL = ''
In eCard panel at https://pay.ecard.pl/gui/configuration.do set "Adres HTTP powiadomienia POST" as http://yourapp/ecard/post/