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.

Source Distribution

django-paynova-0.1.6.tar.gz (10.0 kB view details)

Uploaded Source

File details

Details for the file django-paynova-0.1.6.tar.gz.

File metadata

File hashes

Hashes for django-paynova-0.1.6.tar.gz
Algorithm Hash digest
SHA256 252b7b8a00a01b08e1f0a145f9b58450b365f1b10bee50dc009241b67c4c0d7f
MD5 9958e5624bfed0d9dc1d0730979464a2
BLAKE2b-256 6bfe52093ffbdaf9c5d03e8740a354346a41e9225fd23f044b88e8a1069a6716

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page