Приложение для подключения сайта к деньгам@mail.ru
Project description
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
из корня репозитория.
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
File details
Details for the file django-mailru-money-0.1.tar.gz
.
File metadata
- Download URL: django-mailru-money-0.1.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea1873acfa57cac8f5dd01944ead97cf9140c949c18fe3b7ca3e346125c0d7eb |
|
MD5 | 88db903531dfe61751b5d0f2701848c8 |
|
BLAKE2b-256 | d753f89674ddc3bcfd37071441dda04734db59cd87a812005e38a80815a78bc3 |