django-mailru-money - это приложение для подключения django-сайта к платежной системе деньги@mail.ru.
Лицензия - MIT. Поддерживается python 2.6, 2.7 и 3.2; django 1.3 и 1.4.
Установка
$ pip install django-mailru-money
В settings.py пропишите данные своего магазина:
MAILRU_MONEY_SHOP_ID = 'my_shop_id' MAILRU_MONEY_SECRET_KEY = 'my_secret_key'
Подключите обработчик приема платежей в urls.py:
urlpatterns = patterns('',
# ...
url(r'^mailru-money/', include('mailru_money.urls')),
# ...
)
ResultURL (который нужно сообщить в money.mail.ru) в этом случае будет http://your-site.com/mailru-money/result/.
Затем добавьте 'mailru_money' в INSTALLED_APPS и выполните syncdb (migrate, если используется South).
В INSTALLED_APPS также должны быть 'django.contrib.auth' и 'django.contrib.contenttypes'.
Использование
На странице оплаты используйте mailru_money.forms.MailruOrderForm для вывода формы оплаты и формирования заказа:
# views.py
from django.shortcuts import get_object_or_404, render
from mailru_money.forms import MailruOrderForm
from myapp.models import Item
@login_required
def pay(request, item_id)
# товар, который будем оплачивать
item = get_object_or_404(Item, id=item_id)
# создаем заказ
form = MailruOrderForm(
amount = item.price,
description = item.description,
user = request.user
pay_for = item,
)
return render(request, 'myapp/pay.html', {'form': form})
В шаблоне требуется сформировать форму оплаты:
{# myapp/pay.html #}
{# ... #}
<form method='post' action='{{ form.ACTION }}'>
{{ form }}
<input type='submit' value='Оплатить через Деньги@mail.ru'>
</form>
{# ... #}
Обратите внимание, что {% csrf_token %} использовать не нужно. Форма будет выведена как набор скрытых полей.
Обработку платежей можно осуществлять в сигнале mailru_money.signals.order_status_changed:
from mailru_money.models import MailruOrder
from mailru_money.signals import order_status_changed
from myapp.models import Item
def mailru_payment_received(sender, order, old_status, **kwargs):
item = order.pay_for
if order.state == MailruOrder.PAID:
item.deliver_to(order.user)
elif order.state == MailruOrder.REJECTED:
item.unblock()
order_status_changed.connect(mailru_payment_received)
Сигнал шлется только когда у заказа изменился статус. Оплаченный заказ при этом стать неоплаченным не может.
django-mailru-money поддерживает и другую схему работы (можно не использовать встроенные средства для контроля заказов). См. исходный код, если описанная выше схема не устраивает.
Разработка
Разработка идет на bitbucket.org и github.com:
Баг-трекер - на битбакете: https://bitbucket.org/kmike/django-mailru-money/issues/new
Для запуска тестов склонируйте репозиторий, установите tox и запустите
$ tox
из корня репозитория.
Release files for django-mailru-money 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django-mailru-money-0.1.2.tar.gz | 9.6 kB | Details |
Release files / django-mailru-money-0.1.2.tar.gz
| Download URL | django-mailru-money-0.1.2.tar.gz |
|---|---|
| Size | 9.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a1d41aaf8138401b1907bb5bd6fc7cab82512b62831ad0786b6a125f204602b8
|
|
BLAKE2b-256 checksum How to use checksums |
139cf1bec2dfc4165e9fc3bbe404e60c1e4061050dc79b50fca2892aeaa27945
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |