Простое API для mandarinbank.com (http://docs.mandarinbank.com/api_v2.html)
Добавьте в ваш Gemfile:
gem 'mandarinbank_api'
и выпллните в консоле:
$ bundle
Или установите вручную:
$ gem install mandarinbank_api
Для указания данных по работе с платежной системой используется файл .env в корневой директории вашего приложения со следующей сруктурой:
# Ваш идентификатор в банке
MANDARIN_BANK_MECHANT_ID=0001
# Ваше секретный клю
MANDARIN_BANK_SECRET=XXXxxxXXX
# ссылка совершения транзакций банка
MANDARIN_BANK_PURCHASE_URL=https://secure.mandarinpay.com/api/transactions
# Url для отправки callback-уведомления о статусе трназакции
MANDARIN_BANK_CHECK_URL=https://вашсайт.ру/payments/check
# Url для редиректа пользователя после оплаты
MANDARIN_BANK_RETURN_URL=https://вашсайт.ру/payments/success
# включить/отключить режим отладки HTTP-запросов к банку
MANDARIN_BANK_DEBUG=false
# Верификация SSL-сертифкатов HTTPS
MANDARIN_BANK_VERIFY_MODE=false
# Таймаут запроса к банку
MANDARIN_BANK_TIMEOUT=25
- Одностадийная оплата (http://docs.mandarinbank.com/api_v2.html#purchase)
MandarinbankApi.purchase(
price: 500.00, # Сумма оплаты
order_id: 1234, # Номер заказа
email: '[email protected]', # Электронная почта клиена
actual_till: nil, # Дата жизни транзакции (необязаельно)
phone: nil, # Телефон клиента (необязаельно)
custom_values: [] # Произвольный набор данных согласно документации банка (необязаельно)
)
Результатом выполнения будем экземпляр класса MandarinbankApi::Respond, с методами:
- success? -- Успешна ли операция
- failure? -- Возникла ли ошибка во время формирования платежа
- error -- Ошибка в формате (json) или класс ошибки
- result -- Ответ сервера банка (в соответствии с документацией банка, http://docs.mandarinbank.com/api_v2.html#purchase)
- Для верификации ответа банка используется метод (http://docs.mandarinbank.com/api_v2.html#callback)
MandarinbankApi.valid?(raw_post)
Метод возвращает true/false. Необходимо передать сырое тело запроса. В rails это request.raw_post
- Отмена успешной оплаты (http://docs.mandarinbank.com/api_v2.html#refund)
MandarinbankApi.refund(
price: 500.00, # Сумма оплаты
order_id: 1234, # Номер заказа
transaction_id: 'asqwq1asas', # Номер транакции полученой в результате проведения оплаты
custom_values: [] # Произвольный набор данных согласно документации банка (необязаельно)
)
Результатом выполнения будем экземпляр класса MandarinbankApi::Respond, с методами:
- success? -- Успешна ли операция
- failure? -- Возникла ли ошибка во время формирования платежа
- error -- Ошибка в формате (json) или класс ошибки
- result -- Ответ сервера банка (в соответствии с документацией банка, http://docs.mandarinbank.com/api_v2.html#purchase)
- Методы двухстадийной оплаты (http://docs.mandarinbank.com/api_v2.html#preauth-confirmauth-reversal)
4.1 Первичная блокировка денежный средств (http://docs.mandarinbank.com/api_v2.html#preauth)
MandarinbankApi.preauth(
price: 500.00, # Сумма оплаты
order_id: 1234, # Номер заказа
email: '[email protected]', # Электронная почта клиена
actual_till: nil, # Дата жизни транзакции (необязаельно)
phone: nil, # Телефон клиента (необязаельно)
custom_values: [] # Произвольный набор данных согласно документации банка (необязаельно)
)
Результатом выполнения будем экземпляр класса MandarinbankApi::Respond, с методами:
- success? -- Успешна ли операция
- failure? -- Возникла ли ошибка во время формирования платежа
- error -- Ошибка в формате (json) или класс ошибки
- result -- Ответ сервера банка (в соответствии с документацией банка, http://docs.mandarinbank.com/api_v2.html#purchase)
4.2 Полное или частичное списание ранее заблокированных средств (http://docs.mandarinbank.com/api_v2.html#confirmauth)
MandarinbankApi.confirm_auth(
price: 500.00, # Сумма оплаты
order_id: 1234, # Номер заказа
email: '[email protected]', # Электронная почта клиена
transaction_id: 'asqwq1asas', # Номер транакции полученой в результате проведения оплаты
phone: nil, # Телефон клиента (необязаельно)
custom_values: [] # Произвольный набор данных согласно документации банка (необязаельно)
)
Результатом выполнения будем экземпляр класса MandarinbankApi::Respond, с методами:
- success? -- Успешна ли операция
- failure? -- Возникла ли ошибка во время формирования платежа
- error -- Ошибка в формате (json) или класс ошибки
- result -- Ответ сервера банка (в соответствии с документацией банка, http://docs.mandarinbank.com/api_v2.html#purchase)
4.3 Разблокировка ранее заблокированной суммы (http://docs.mandarinbank.com/api_v2.html#reversal)
MandarinbankApi.reversal(
order_id: 1234, # Номер заказа
email: '[email protected]', # Электронная почта клиена
transaction_id: 'asqwq1asas', # Номер транакции полученой в результате проведения оплаты
phone: nil, # Телефон клиента (необязаельно)
custom_values: [] # Произвольный набор данных согласно документации банка (необязаельно)
)
Результатом выполнения будем экземпляр класса MandarinbankApi::Respond, с методами:
- success? -- Успешна ли операция
- failure? -- Возникла ли ошибка во время формирования платежа
- error -- Ошибка в формате (json) или класс ошибки
- result -- Ответ сервера банка (в соответствии с документацией банка, http://docs.mandarinbank.com/api_v2.html#purchase)
Bug reports and pull requests are welcome on GitHub at https://github.com/dancingbytes/mandarinbank_api.