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.

Download files

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

Source Distribution

django-spgateway-0.4.0.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_spgateway-0.4.0-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

File details

Details for the file django-spgateway-0.4.0.tar.gz.

File metadata

  • Download URL: django-spgateway-0.4.0.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

File hashes

Hashes for django-spgateway-0.4.0.tar.gz
Algorithm Hash digest
SHA256 505bcad8bf01bb35b445e7d6a9bfb6cc979025cd6850967dc26d0b15d1ad2556
MD5 c3d9ec697c14cca305c45f2679195adc
BLAKE2b-256 d27c9f2c5f51343d8c4cf6fedaa596ab74489a6352692a745f3f2eb6b11038f2

See more details on using hashes here.

File details

Details for the file django_spgateway-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: django_spgateway-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 17.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

File hashes

Hashes for django_spgateway-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6aa73fefeca85a283ef909be6c2cb169809fa01b3437afa2a5e0b319b5b1f9fe
MD5 166f0e347900de7ecfd211b04831adfa
BLAKE2b-256 97efa857132f57d7d80464fabf7a12e2de8a328bca989063afade731f47212f6

See more details on using hashes here.

Release history Release notifications | RSS feed

0.7.6

2 files

0.7.5

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

This release

0.4.0 This release

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.2.1

2 files

0.2.0

2 files

0.1.9

2 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