Skip to main content

Приложение для интеграции платежной системы ASSIST в проекты на Django.

Project description

django-assist-ru - это приложение для интеграции платежной системы ASSIST в проекты на Django.

До использования следует ознакомиться с официальной документацией ASSIST (http://assist.ru/files/manual_new.pdf). Приложение реализует протокол взаимодействия, описанный в этом документе.

Установка

Как обычно:

$ pip install django-assist-ru

или

$ easy_install django-assist-ru

или

$ hg clone http://bitbucket.org/kmike/django-assist-ru/
$ cd django-assist-ru
$ python setup.py install

Потом следует добавить ‘assist’ в INSTALLED_APPS и выполнить

$ python manage.py syncdb

Если используется South, то вместо syncdb нужно сделать

$ python manage.py migrate

Настройка

В settings.py нужно указать следующие настройки:

  • ASSIST_SHOP_IDP - идентификатор магазина (число)

  • ASSIST_LOGIN - логин

  • ASSIST_PASSWORD - пароль

Необязательный параметар: ASSIST_TEST_MODE - включен ли тестовый режим. По умолчанию False (т.е. включен боевой режим).

Использование

Форму для приема платежей следует показывать на странице, у которой кодировка 1251. Для тех, кто использует кодировку utf-8, в django-assist-ru есть декоратор cp1251, который перекодирует страницу в 1251, исправляет http-заголовки и меняет meta-теги на нужные

from assist.decorators import cp1251

@cp1251
@login_required
def go_to_assist(request)
    ...

Формы для приема платежей

Для того, чтобы упростить конструирование html-форм для отправки пользователей в ASSIST, в django-assist-ru есть 2 формы: AssistMode1Form и AssistMode2Form (для 2х режимов работы ASSIST). Эти формы нужны не для валидации данных, а для упрощения вывода информации в шаблонах.

Пример:

# views.py

from django.shortcuts import get_object_or_404
from django.views.generic.simple import direct_to_template
from django.contrib.auth.decorators import login_required

from assist.decorators import cp1251

@cp1251
@login_required
def go_to_assist(request, order_id)
    order = get_object_or_404(Order, pk = order_id)
    form = AssistMode2Form(initial={
               'Order_IDP': order.id,
               'Subtotal_P': order.total,
               'Comment': order.name,
               'LastName': request.user.last_name,
               'FirstName': request.user.first_name,
               'Email': request.user.email,
               'Phone': request.user.get_profile().phone,
           })
    return direct_to_template(request, 'go_to_assist.html', {'form': form})

За полным перечнем допустимых в initial полей можно обратиться к документации ASSIST или к исходникам, названия полей совпадают.

django-assist-ru не включает в себя модели “Покупка”, т.к. эта модель будет отличаться от сайта к сайту. Задача разработчика - сформировать и передать параметры Order_IDP (номер заказа) и Subtotal_P (сумма заказа) в форму. Остальные поля являются необязательными.

Соответствующий шаблон:

{% extends 'base.html' %}

{% block content %}
    <form action="{{ form.target }}" method="POST">
        <p>{{ form.as_p }}</p>
        <p><input type="submit" class="button" name='SUBMIT' value="Купить"></p>
    </form>
{% endblock %}

Форма выведется в виде набора скрытых input-тегов.

У форм AssistMode1Form и AssistMode2Form есть атрибут target, содержащий URL, по которому форму следует отправлять. В тестовом режиме это будет тестовый URL, в боевом - боевой.

Получение результатов платежей

from assist.models import AssistAuthResult
AssistAuthResult.objects.update_auth_report()

Метод получает результаты авторизации через запрос к серверу ASSIST и создает/обновляет по ним записи в БД (по одной записи AssistAuthResult на каждый BillNumber).

По правилам ASSIST, не стоит выполнять эту операцию чаще, чем 1 раз в 10 минут.

Не следует выполнять эту операцию при возврате пользователя со страницы оплаты, лучше делать это по расписанию.

Двустадийный режим работы

При двустадийном механизме работы разделены процессы авторизации кредитной карты и совершения финансовой транзакции.

Для того, чтобы активировать двустадийный режим, следует передать параметр Delay=1 при создании формы:

@cp1251
@login_required
def go_to_assist(request, order_id)
    order = get_object_or_404(Order, pk = order_id)
    form = AssistMode1Form(initial={
               'Order_IDP': order.id,
               'Subtotal_P': order.total,
               'Delay': 1
           })
    return direct_to_template(request, 'go_to_assist.html', {'form': form})

Деньги будут не списываться со счета, а блокироваться. Списание денег со счета инициируется отдельно (в течение 14 дней с момента блокировки) с помощью метода charge:

bill = AssistAuthResult.objects.get(id=123)
bill.charge()

Разблокировать деньги, не дожидаясь 14 дней, можно с помощью метода refund:

bill = AssistAuthResult.objects.get(id=123)
bill.refund()

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-assist-ru-0.2.0.tar.gz (11.9 kB view details)

Uploaded Source

File details

Details for the file django-assist-ru-0.2.0.tar.gz.

File metadata

File hashes

Hashes for django-assist-ru-0.2.0.tar.gz
Algorithm Hash digest
SHA256 902f8af8d1ab65d998ee7d3e577333d8dee8e330ada7f58dfe5bc6d7b99db62f
MD5 9628126a86dfb8cb14cb592e75351819
BLAKE2b-256 35dcd6522dcc692b1cea8a2e42b4e02eba7f87dddd8f25fb48ff7cf9d57863bc

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