Документация по интеграции
Установить пакет:
pip install git+https://github.com/aTastyCookie/yandexmoney_django.git
Добавить
yandex_money
вsettings.INSTALLED_APPS
:INSTALLED_APPS = ( ... 'yandex_money', ... )
Выполнить синхронизацию с БД:
python manage.py syncdb python manage.py migrate # для тех, кто использует south
Добавить в
urls.py
:urlpatterns = patterns('', # ... url(r'^fail-payment/$', TemplateView.as_view(template_name='fail.html'), name='payment_fail'), url(r'^success-payment/$', TemplateView.as_view(template_name='success.html'), name='payment_success'), url(r'^yandex-money/', include('yandex_money.urls')), )
Указать в settings.py следующие параметры:
YANDEX_MONEY_DEBUG = False YANDEX_MONEY_SCID = 12345 YANDEX_MONEY_SHOP_ID = 56789 YANDEX_MONEY_SHOP_PASSWORD = 'password' YANDEX_MONEY_FAIL_URL = 'https://example.com/fail-payment/' YANDEX_MONEY_SUCCESS_URL = 'https://example.com/success-payment/' # информировать о случаях, когда модуль вернул Яндекс.Кассе ошибку YANDEX_MONEY_MAIL_ADMINS_ON_PAYMENT_ERROR = True
Указать в кабинете Яндекс.Деньги настройки для приема уведомлений:
- paymentAvisoURL: https://example.com/yandex-money/aviso/
- checkURL: https://example.com/yandex-money/check/
- failURL: https://example.com/fail-payment/
- successURL: https://example.com/success-payment/
Представление платежной формы:
# -*- coding: utf-8 -*- from django.views.generic import TemplateView from yandex_money.forms import PaymentForm from yandex_money.models import Payment class OrderPage(TemplateView): template_name = 'order_page.html' def get_context_data(self, **kwargs): payment = Payment(order_amount=123) payment.save() ctx = super(OrderPage, self).get_context_data(**kwargs) ctx['form'] = PaymentForm(instance=payment) return ctx
Шаблон платежной формы:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> </head> <body> <div style="border: 1px dotted gray; padding: 15px 15px 0; margin: 30px auto; width: 300px;"> <form name="ShopForm" method="POST" action="https://money.yandex.ru/eshop.xml"> <ul style="list-style: none;"> <li style="margin-bottom: 20px;"> Сумма заказа: <b>{{ form.sum.value }}</b> </li> {{ form.as_ul }} <li style="margin-top: 20px;"> <input type="submit" value="Оплатить"> </li> </ul> </form> </div> </body> </html>
Также вы можете определить logger 'yandex_money':
LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'root': { 'level': 'INFO', 'handlers': ['default'], }, 'formatters': { 'simple': { 'format': '[%(asctime)s] %(levelname)s: %(message)s', 'datefmt': '%d/%m/%Y %H:%M:%S', }, }, 'handlers': 'default': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', 'filename': os.path.join(LOGGING_DIR, 'messages.log'), 'maxBytes': 1024 * 1024 * 5, 'backupCount': 5, 'formatter': 'message', }, 'yandex_money': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', 'filename': os.path.join(LOGGING_DIR, 'yandex_money.log'), 'maxBytes': 1024 * 1024 * 5, 'backupCount': 5, 'formatter': 'standard', }, }, 'loggers': { '': { 'handlers': ['default'], 'level': 'INFO', 'propagate': True }, 'yandex_money': { 'handlers': ['yandex_money'], 'level': 'DEBUG', 'propagate': False }, } }
Tnx to @DrMartiner & @sdfsdhgjkbmnmxc