Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Django app for Sberbank payment API

License

NotificationsYou must be signed in to change notification settings

madprogrammer/django-sberbank

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyPI version fury.ioPyPI license

Оплата через платежный API Сбербанка в Django

Это Django-приложение позволяет быстро приделать к сайту на Django прием оплаты с банковских карт с помощью платежного API Сбербанка. Приложение поддерживает:

  • Оплату через веб-формы (пользователь вводит данные карты на сервере Сбербанка)
  • Оплату с помощью Apple Pay и Google Pay
  • Привязку банковских карт и получение списка привязанных карт
  • Отслеживание истории транзакций и журналирование обмена с API Сбербанка в БД

Установка

  1. Добавитьsberbank в список INSTALLED_APPS:
INSTALLED_APPS= [  ...'sberbank',  ...]
  1. Добавить параметры мерчанта вsettings.py:
MERCHANTS= {%merchant_id%: {'username':'%merchant_username%','password':'%merchant_password%','success_url':'http://ваш.домен/sberbank/payment/success','fail_url':'http://ваш.домен/sberbank/payment/fail','app_success_url':'http://ваш.домен/payment/success','app_fail_url':'http://ваш.домен/payment/fail',  }}
  1. Добавить URL-ы приложения в вашurls.py:
urlpatterns= [  ...url('/sberbank',include('sberbank.urls'))]
  1. Запуститьpython manage.py migrate чтобы создать модели.

Установка окружения

Переменная окружения:ENVIRONMENT

Возможные значения:

По-умолчанию:development

Параметры словаряMERCHANTS

  • success_url - на данный URL Сбербанк будет перенаправлять браузер после успешного платежа
  • fail_url - на данный URL Сбербанк будет перенаправлять браузер после неуспешного платежа
  • app_success_url - это URL, с помощью которого ваше приложение может среагировать на успешный платеж после того, как отработает коллбэкsuccess_url.
  • app_fail_url - это URL, с помощью которого ваше приложение может среагировать на неуспешный платеж после того, как отработает коллбэкfail_url.

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

Платеж с помощью веб-формы

fromsberbank.serviceimportBankServicefromsberbank.modelsimportPayment,Status...try:# Сумма в рубляхamount=10.0# Уникальный ID пользователя, используется для привязки карт# Если None, пользователь не сможет выбрать ранее привязанную карту# или привязать карту в процессе оплатыclient_id=request.data.get("client_id")svc=BankService(%merchant_id%)# url - адрес, на который следует перенаправить пользователя для оплаты# payment - объект Payment из БД, содержит информацию о платеже# description - назначение платежа в веб-форме банка# params - произвольные параметры, которые можно привязать к платежуpayment,url=svc.pay(amount,params={'foo':'bar'},client_id=client_id,description="Оплата заказа №1234")returnHttpResponseRedirect(url)exceptExceptionasexc:# Что-то пошло не такraise

Привязка карты со списанием и возвратом 1 рубля

fromsberbank.serviceimportBankServicefromsberbank.modelsimportPayment,Status...try:# Уникальный ID пользователя, используется для привязки карт# параметр необходимо передавать при использовании функции привязки карт# через списание и возвратclient_id=request.data.get("client_id")ifclient_idisNone:returnHttpResponseBadRequest()svc=BankService(%merchant_id%)# url - адрес, на который следует перенаправить пользователя для оплаты# payment - объект Payment из БД, содержит информацию о платежеpayment,url=svc.bind_refund(client_id=client_id)returnHttpResponseRedirect(url)exceptExceptionasexc:# Что-то пошло не такraise

Оплата с помощью Apple/Google Pay

fromsberbank.serviceimportBankServicefromsberbank.modelsimportPayment,Status...try:# Уникальный ID пользователя, используется для привязки карт# параметр необходимо передавать при использовании функции привязки карт# через списание и возвратclient_id=request.data.get("client_id")# Сумма платежа в рубляхamount=10.0# Токен, переданный приложением для Apple/Android# библиотека сама определяет тип платежа по формату# переданного токена и вызывает соответствующее API Сбербанкаtoken=request.data.get("token")# IP адрес клиентаip=request.META.get('REMOTE_ADDR','127.0.0.1')svc=BankService(%merchant_id%)payment,response=svc.mobile_pay(amount,token,ip,client_id=client_id,params={'foo':'bar'},description="Оплата заказа №1234")ifresponse['success']!=True:returnResponse({"status":"error"})ifpayment.status==Status.SUCCEEDED:# Платеж успешенjson_response= {"status":"success"}# Платежи с некоторых карт требуют особой обработки на клиенте# При наличии в ответе acsUrl клиенту нужно перенаправить пользователя# на адрес redirect_url, POST-запросом передав параметры в виде x-www-form-urlencodedifresponse['data'].get('acsUrl'):json_response.update({"redirect_url":response['data'].get('acsUrl','')})json_response.update({"params": {'paReq':response['data'].get('paReq',''),'termUrl':response['data'].get('termUrl',''),'orderId':response['data'].get('orderId','')}})returnResponse(json_response)exceptExceptionasexc:# Что-то пошло не такraise

Периодическая проверка платежей по которым не известно состояние

fromdatetimeimporttimedeltafromcelery.taskimportperiodic_taskfromsberbank.tasksimportcheck_payments@periodic_task(run_every=timedelta(minutes=20))deftask_check_payments():check_payments()

About

Django app for Sberbank payment API

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp