Python client for Paynova's API. For Django framework.
Project description
Paynova Aero for Django
Implementation of Paynova Aero work flow for Django. Using Paynova API python library: paynova-api-python-client.
Installation
Install django-paynova:
pip install django-paynova
Python 2.7, 3.3, 3.4, PyPy are supported Django 1.6, 1.7 are supported
Add django-paynova to INSTALLED_APPS:
INSTALLED_APPS = ( ... 'django_paynova', ... )
Configure settings:
PAYNOVA_MERCHANT_ID = 'MERCHANT_ID' PAYNOVA_PASSWORD = 'PASSWORD' PAYNOVA_SECRET = 'SECRET' PAYNOVA_CALLBACK_URL = 'http://mysite.com'
Run syncdb
Add urls to handle Paynova’s callbacks:
urlpatterns = patterns('', url(r'^(?i)payments/paynova/', include('django_paynova.urls')), )
Usage
Create order and init payment with default params:
from django_paynova import create_order, PaynovaException try: pp = create_order({ 'orderNumber': '0001', 'currencyCode': 'EUR', 'totalAmount': 10 }) # TODO: redirect to pp.url except PaynovaException as e: # TODO: handle exception
create_order takes dictionary with Create Order parameters
Handle Event Hook Notifications:
from django.dispatch import receiver from django_paynova.signals import paynova_payment @receiver(paynova_payment) def paynova_payment_signal(sender, status, params, **kwargs): # TODO: handle paynova payment notification
where
sender - PaynovaPayment model
status - status of payment
params - payment params from Paynova
Advanced
Also you can create order and initialize payment separately:
from django_paynova import create_order, initialize_payment, PaynovaException
try:
# create order
pp = create_order({
'orderNumber': '0005',
'currencyCode': 'EUR',
'totalAmount': 10
}, init_payment=False)
# init payment. http://docs.paynova.com/display/API/Initialize+Payment
pp = initialize_payment({'orderId': pp.order_id})
# TODO: redirect to pp.url
except PaynovaException as e:
# TODO: handle exception
create_order takes dictionary with Create Order parameters
initialize_payment takes dictionary with Initialize Payment parameters
Errors
If Paynova return an error, PaynovaException will be raised
from django-paynova import create_order, PaynovaException
try:
pp = create_order()
except PaynovaException as e:
# process exception
# e.errorNumber, e.statusKey, e.statusMessage, e.errors
pass
Tests
At first make sure that you are in virtualenv.
Install all dependencies:
make setup
To run tests:
make tests
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.