Skip to main content
https://badge.fury.io/py/django-pesapal.png https://travis-ci.org/odero/django-pesapal.png?branch=master https://coveralls.io/repos/odero/django-pesapal/badge.png?branch=master Development Status

A django port of pesapal payment gateway

Documentation

The full documentation is at https://django-pesapal.readthedocs.org.

Quickstart

Install django-pesapal:

pip install django-pesapal

Then use it in a project:

import django_pesapal
  1. Add django_pesapal to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = (
        ...
        'django_pesapal',
    )
  2. Include the django_pesapal URLconf in your project urls.py like this:

    url(r'^payments/', include('django_pesapal.urls')),
  3. You can set your own return url by adding this to settings.py:

    PESAPAL_TRANSACTION_DEFAULT_REDIRECT_URL = 'app_name:url_name'  # this needs to be a reversible
  4. Run python manage.py migrate to create the models.

  5. Create a method that receives payment details and returns the pesapal iframe url:

    from django_pesapal.views import PaymentRequestMixin
    
    class PaymentView(PaymentRequestMixin):
    
        def get_pesapal_payment_iframe(self):
    
            '''
            Authenticates with pesapal to get the payment iframe src
            '''
            order_info = {
                'first_name': 'Some',
                'last_name': 'User',
                'amount': 100,
                'description': 'Payment for X',
                'reference': 2,  # some object id
                'email': 'user@example.com',
            }
    
            iframe_src_url = self.get_payment_url(**order_info)
            return iframe_src_url
  6. Once payment has been processed, you will be redirected to an intermediate screen where the user can finish ordering. Clicking the “Finish Ordering” button will check the payment status to ensure that the payment was successful and then redirects the user to PESAPAL_TRANSACTION_DEFAULT_REDIRECT_URL.

Configuration

Setting

Default Value

PESAPAL_DEMO

True

PESAPAL_CONSUMER_KEY

‘’

PESAPAL_CONSUMER_SECRET

‘’

PESAPAL_IFRAME_LINK (if PESAPAL_DEMO=True)

http://demo.pesapal.com/api/PostPesapalDirectOrderV4

PESAPAL_IFRAME_LINK (if PESAPAL_DEMO=False)

https://www.pesapal.com/api/PostPesapalDirectOrderV4

PESAPAL_QUERY_STATUS_LINK (Demo Mode=True)

http://demo.pesapal.com/API/QueryPaymentDetails

PESAPAL_QUERY_STATUS_LINK (Demo Mode=False)

https://www.pesapal.com/API/QueryPaymentDetails

PESAPAL_OAUTH_CALLBACK_URL

‘transaction_completed’

PESAPAL_OAUTH_SIGNATURE_METHOD

‘SignatureMethod_HMAC_SHA1’

PESAPAL_TRANSACTION_DEFAULT_REDIRECT_URL

‘/’

PESAPAL_TRANSACTION_FAILED_REDIRECT_URL

‘’

PESAPAL_REDIRECT_WITH_REFERENCE

True

PESAPAL_TRANSACTION_MODEL

‘django_pesapal.Transaction’

History

1.3.1 (2019-07-16)

  • Update dependencies

  • Support Py37

  • Remove EOL py34

1.3.0 (2018-09-29)

  • Support for Django 2.1

  • Support Py36

1.2.0 (2016-12-11)

  • Dropped support for Django 1.7

  • Fixes and Upgrades to support Django 1.8 - 1.10

  • Use Django’s UUIDField

1.1.0 (2016-05-03)

  • Support Django 1.9

  • Update payment_method field length from 16 to 24

  • Remove support for Py33. Support Py35

1.0.1 (2015-11-21)

  • Fix querydict bug

1.0.0 (2015-11-11)

  • Support Django 1.8

  • Support Py33 and Py34

  • Return proper IPN response

0.3.4 (2015-08-12)

  • Restructure flow to better support IPN processing

0.3.3 (2015-06-29)

  • Setup build had not packaged the templates

0.3.2 (2015-06-13)

  • Fix documentation formatting issues

0.3.1 (2015-06-13)

  • Allow specifying own transaction model

  • Pass all transaction info when redirecting

  • Update intermediate template

0.3 (2015-06-12)

  • Introduce intermediate payment processing screen

  • Update Django version to 1.7+

  • Add support to receive and process IPN

  • Save all details about the transaction and status

0.2.1 (2015-04-03)

  • Added test sandbox

  • Updated Django version

  • Updated django-uuidfield

0.2 (2015-03-17)

  • Support anonymous checkouts

  • Add support for getting payment status

  • Major structural refactoring. Use mixins

  • Use Mixins and XML Builder

0.1.5 (2014-09-25)

  • Pin dependencies to specific versions

  • Update how imports should be done

  • Remove imports from __init__.py

0.1.4 (2014-09-23)

  • Fix import bug. Tests for projects using this fail in Shippable

  • Set max Django version to 1.7

0.1.3 (2014-07-18)

  • Packaging for PyPi

0.1.2 (2014-06-30)

  • Fix import bug in urls.py

  • Fix how callback url is constructed

  • Fix: Live URL uses https

0.1.1 (2014-06-30)

  • Refactor handling of redirect urls. Model validation of transaction and merchant reference

  • Rename settings to conf. Set default oauth redirect url

  • Add django-uuidfield to dependencies

0.1.0 (2014-06-30)

  • First release on PyPI.

Release files for django-pesapal 1.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-pesapal 1.3.1
File Size Uploaded
django-pesapal-1.3.1.tar.gz 14.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-pesapal 1.3.1
File Interpreter ABI Platform
django_pesapal-1.3.1-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 29.4 kB

Release files / django-pesapal-1.3.1.tar.gz

Download URL django-pesapal-1.3.1.tar.gz
Size 14.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3a5ea80371f088f7e6513abbdd9aa936a79539b2653e046cba9cf30a3e7c4c38
BLAKE2b-256 checksum
How to use checksums
2136067f53e34df469774ad9e3a865105a1ab0ee59409003a413d7f4c57a692c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.22.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.5

Release files / django_pesapal-1.3.1-py2.py3-none-any.whl

Download URL django_pesapal-1.3.1-py2.py3-none-any.whl
Size 14.8 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
bc2cdf3faf0ddbc493ace5dbd347e35d88c5ee17f2995a00b1055cb50c3809d7
BLAKE2b-256 checksum
How to use checksums
9de991a61d987842aff8eeef71976f81ae980cc58722648c4f9e4b3af68055e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.22.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.5

Release history Release notifications | RSS feed

2.0

2 release files

1.3.3

1 release file

1.3.2

2 release files

This release

1.3.1 This release

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

1 release file

1.0.1

1 release file

1.0.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3

2 release files

0.2.1

2 release files

0.2

2 release files

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page