django-gate2shop

Gate2Shop gateway for accept payments on your website.


Keywords
payment, django, g2s, gate2shop
License
Other
Install
pip install django-gate2shop==1.0.2

Documentation

Django Gate2Shop

How to install

  1. Using pip:
$ pip install django-gate2shop
  1. Edit "settings.py"
    • add "g2s" to your "INSTALLED_APPS"
    • add following settings:
G2S_MERCHANT_ID = "123456"
G2S_SECRET_KEY = "YourSecretWord"
G2S_MERCHANT_SITE_ID = "1234567"
G2S_CURRENCY = 'USD'
  1. Add to "urls.py" paths
urlpatterns = patterns('',
    url(r'^g2s/g2s_form/$', 'g2s_form', name='g2s-form'),
    url(r'^g2s/', include('g2s.urls')),
)
  1. Create table in your database
$ python manage.py syncdb
$ python manage.py migrate
  1. Create/render form

Create an instance of the form in your "views.py" and make render in your template

from g2s.forms import G2SForm

def g2s_form(request):
    # this is what user wants to buy
    items_list = [
        {
            'item_name': 'Test',
            'item_amount': 1.11,
            'item_quantity': 1,
        },
    ]

    # this data you can get from user profile or from custom user model
    payment_details = {
        'country': 'Russia',
        'city': 'Moscow',
        'address1': 'Moscow, Arbat',
        'zip': '121099',
        'first_name': 'Ivan',
        'last_name': 'Ivanov',
        'email': 'ivanov.ivan@yandex.ru',
        'phone1': '+79031234567',
        'total_amount': 1.11,
        'user_token_id': 1,
        'productId': 1,
    }

    form = G2SForm(items_list, initial=payment_details)
    return render(request, "g2s/order.html", {"form": form})

In "order.html":

{{ form.render }}

After payment G2S sends a signal to your server (DMN URL). The transaction will be saved in the database, then will be send a signal. You can use it to process your own actions (add amount to users account, etc..)

from django.forms.models import model_to_dict
from g2s.signals import g2s_payment_was_successful
from pprint import pprint


def transaction_result(sender, **kwargs):
    if sender.Status == 'APPROVED':
        pprint(model_to_dict(sender))


g2s_payment_was_successful.connect(
    transaction_result, dispatch_uid="demo.models.transaction_result")

Demo installation:

$ pip install virtualenvwrapper
$ source /usr/local/bin/virtualenvwrapper.sh
$ mkvirtualenv django-gate2shop
$ git clone https://github.com/gotlium/django-gate2shop.git
$ cd django-gate2shop
$ python setup.py develop
$ cd demo
$ pip install -r requirements.txt
$ python manage.py syncdb --noinput && python manage.py migrate --noinput
$ python manage.py runserver >& /tmp/runserver.log &
$ xdg-open http://127.0.0.1:8000/g2s/

Full Gateway Specification available at: http://www.g2s.com/documentation/