Skip to main content

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

  1. Install django-paynova:

    pip install django-paynova
    

    Python 2.7, 3.3, 3.4, PyPy are supported Django 1.6, 1.7 are supported

  2. Add django-paynova to INSTALLED_APPS:

    INSTALLED_APPS = (
        ...
        'django_paynova',
        ...
    )
    
  3. Configure settings:

    PAYNOVA_MERCHANT_ID = 'MERCHANT_ID'
    PAYNOVA_PASSWORD = 'PASSWORD'
    PAYNOVA_SECRET = 'SECRET'
    PAYNOVA_CALLBACK_URL = 'http://mysite.com'
    

    For production:

    PAYNOVA_LIVE = True
    
  4. Run ./manage migrate

  5. Add urls to handle Paynova’s callbacks:

    urlpatterns = patterns('',
        url(r'^(?i)payments/paynova/', include('django_paynova.urls')),
    )
    

Usage

  1. 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

  2. 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

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 test

License

MIT licence

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for django-paynova, version 0.1.6
Filename, size File type Python version Upload date Hashes
Filename, size django-paynova-0.1.6.tar.gz (10.0 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page