Package: django-yandex-cash-register
NoteThis application is suitable only for russian web services, so I don’t
provide English readme. If you need English docs, please contact me.Простое приложение для подключения в Django оплаты через Яндекс.Кассу. Поддерживает
Python 2.7, 3.4 и 3.5. Совместимо со всеми версиями Django>=1.8.В приложении реализован протокол интеграции, описанный вофициальной документацииУстановка и настройкаПеред тем приступить к настройке приложения, убедитесь, что у вас уже есть аккаунт вkassa.yandex.ruи вы знаете SCID, ShopID и платежный
пароль.Устанавливаем пакет:pipinstalldjango-yandex-cash-registerДобавляем приложениеyandex_cash_registerвsettings.INSTALLED_APPS:INSTALLED_APPS=(...'yandex_cash_register',...)Указываем вsettings.pyследующие настройки:# True - Использование тестого платежного сервиса, False - основногоYANDEX_CR_DEBUG=False# Идентификатор магазина, полученный в Яндекс.КассеYANDEX_CR_SCID=12345# Идентификатор витрины магазина, полученный в Яндекс.КассеYANDEX_CR_SHOP_ID=123456# Платежный пароль магазинаYANDEX_CR_SHOP_PASSWORD='password'# Идентификаторы используемых видов оплаты (https://tech.yandex.ru/money/doc/payment-solution/reference/payment-type-codes-docpage/)YANDEX_CR_PAYMENT_TYPE=['pc','ac','wm']# Название модели заказа. Модель должна соответствовать# интерфейсу yandex_cash_register.interfaces.IPayableOrderYANDEX_CR_ORDER_MODEL='your_app.Order'# Публичный домен магазинаYANDEX_CR_SHOP_DOMAIN='https://example.com'Создаем таблицы в базе данных:pythonmanage.pymigrateДобавляем приложение вurls.py, обязательно указываяnamespaceиapp_name:url(r'^money/',include('yandex_cash_register.urls',namespace='yandex_cash_register',app_name='yandex_cash_register')),Если ваш доменexample.comи вы указалиmoneyкак урл приложения, то
вашcheckURLв настройках должен бытьhttps://example.com/money/order-check/,
аpaymentAvisoURL-https://example.com/money/payment-aviso/.
URL успеха и провала платежа указывать не нужно.ИспользованиеПервым делом нужно имплементировать интерфейсyandex_cash_register.interfaces.IPayableOrderв модели заказа своего приложения для того, чтобы по завершении платежа
вернуть клиента на соответствующую страницу.Для создания платежа достаточно знать уникальный идентификатор заказа,
почтовый адрес и телефон клиента (требование Яндекс.Кассы), а также сумму
заказа и (опционально) выбранный клиентом способ оплаты:fromyandex_cash_register.modelsimportPaymentpayment=Payment(order_sum=Decimal('100.50'),# Сумма к оплатеorder_id='unique_id',# Идентификатор заказаcps_email='customer@example.com',# Почтовый адрес клиентаcps_phone='70000000000',# Телефон клиента, 11 цифр без символовpayment_type='wm',# Способ оплаты (опционален), если его не задать,# клиент будет выбирать его на стороне Яндекс.Кассы)payment.save()# После создания заказа можно получить платежную форму, которую нужно отобразить клиенту# c method="post" и target="yandex_cash_register.conf.TARGET"# После ее сабмита (можно это сделать автоматически) клиент попадет в# интерфейс Яндекс.Кассы, где сможет завершить платежform=payment.form()Для получения информации о результатах оплаты, нужно начать слушать сигналы
из модуляyandex_cash_register.signals. В наличии три сигнала:payment_process - отсылается при получении Яндекс.Кассой информации о платежеpayment_success - отсылается при успешном платежеpayment_fail - отсылается при ошибочном платежеВ качестве sender сигнала выступает объектyandex_cash_register.Payment,
для которого этот сигнал актуален.