Skip to main content

Write Django and your store as usual, and let django-spgateway handle your transactions with Spgateway

Requirements

  • Python 3.7

  • Django 2.1

  • pycrypto 2.6.1

  • We only tested on environment as below

Installation

  1. Install using pip or pipenv:

    pip install django-spgageway

    Alternatively, you can install download or clone this repo and call pip install -e ..

  2. Add to INSTALLED_APPS in your settings.py:

    'spgateway',

  3. Add settings in your settings.py:

    SPGATEWAY_PROFILE = {
        'YOUR_MerchantID': {
            'MerchantID': 'YOUR_MerchantID',
            'HashKey': 'YOUR_HashKey',
            'HashIV': 'YOUR_HashIV',
        },
    }
    SPGATEWAY_MERCHANTID = 'YOUR_MerchantID'
    SPGATEWAY_ORDERMODEL = 'yourapp.Order'
  4. Add urlpattern into your urls.py:

    path('spgateway/', include('spgateway.urls')), for Django 2

    url(r'^spgateway/', include('spgateway.urls')), for Django 1

  5. Import from spgateway.models import SpgatewayOrderMixin and inherit from it with your order model.

  6. Run python manage.py makemigrations and python manage.py migrate as usual.

  7. Get form from your order by calling generate_credit_form in view:

    credit_form = order_object.generate_credit_form(request)

    And use it in your template:

    <form action="{{ credit_form.action }}" method="POST">
        {{ credit_form.as_p }}
        <input type="submit">
    </form>
  8. Add SpgatewaySameSiteCookieMiddleware before SessionMiddleware to avoid SameSite cookie while return from payment gateway:

    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'spgateway.middleware.SpgatewaySameSiteCookieMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        ...
    ]

Example model

from spgateway.models import SpgatewayOrderMixin

class Order(SpgatewayOrderMixin, models.Model):
    total = models.IntegerField(default=0, verbose_name='Total Price')
    user = models.ForeignKey(User, verbose_name='Order by user')
    is_paid = models.BooleanField(default=False)

    # Add this parameter to let django-spgateway know which field is amount of price
    SpgatewayAmtFieldName = 'total'

    # Add this parameter to let django-spgateway set item description
    SpgatewayItemDesc = 'Items descriptions'

    # Add this method to let django-spgateway retrieve email
    def get_SpgatewayEmail(self, **kwargs):
        return self.user.email

    # Add this method let django-spgateway call when notify from Spgateway server
    # Change your order with this method
    def spgateway_notify(self, request, trade_info):
        status = trade_info['Status']
        status_msg = trade_info['Message']

        if status == 'SUCCESS':
            self.is_paid = True
            self.save()
        else:
            # TODO: Handle error

    # Add this method let django-spgateway call when client return from Spgateway server
    # Never trust data from client. Display messages only
    def spgateway_return(self, request, trade_info):
        status = trade_info['Status']
        status_msg = trade_info['Message']

        if status == 'SUCCESS':
            # TODO: Display success message to user
        else:
            # TODO: Display error message to user

    # django-spgateway will call this method to redirect user after user return from Spgateway server
    def get_absolute_url(self):
        return reverse('ORDER_DETAIL_VIEW_NAME_HERE')

Bugs and suggestions

If you have found a bug or if you have a request for additional functionality, please use the issue tracker on GitHub.

https://github.com/cjltsod/django-spgateway/issues

License

You can use this under MIT. See LICENSE file for details.

Author

Developed and maintained by CJLTSOD.

Thanks to everybody that has contributed pull requests, ideas, issues, comments and kind words.

Please see AUTHORS.rst for a list of contributors.

Release files for django-spgateway 0.7.6

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-spgateway 0.7.6
File Size Uploaded
django-spgateway-0.7.6.tar.gz 14.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-spgateway 0.7.6
File Interpreter ABI Platform
django_spgateway-0.7.6-py3-none-any.whl Python 3 none any Details

Total release size: 32.9 kB

Release files / django-spgateway-0.7.6.tar.gz

Download URL django-spgateway-0.7.6.tar.gz
Size 14.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e7057acc678b444c686cfc49ef17ae4faefd30b11ebf035a1d6b10b3fb5c9e35
BLAKE2b-256 checksum
How to use checksums
6b00ab57cd045110c91f44663b8280aecb46868118ad1903a6da0b489abf52d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Python-urllib/3.7

Release files / django_spgateway-0.7.6-py3-none-any.whl

Download URL django_spgateway-0.7.6-py3-none-any.whl
Size 18.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ca8cb59027b7986015518dd34146be87132dcd3d6ab77322d97945b0610c5e4
BLAKE2b-256 checksum
How to use checksums
72ec2abf22d78c575655b032e1fbfc220b888719542a5f5c8e124f824e9f0995
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Python-urllib/3.7

Release history Release notifications | RSS feed

This release

0.7.6 This release

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.9

2 release files

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