Здесь показаны различия между двумя версиями данной страницы.
Both sides previous revision Предыдущая версия Следущая версия | Предыдущая версия Следущая версия Both sides next revision | ||
api-for-pay-form [2015/10/19 10:04] admin |
api-for-pay-form [2015/10/19 10:12] admin |
||
---|---|---|---|
Строка 16: | Строка 16: | ||
Для получения информации следует отправить GET запрос в формате JSON на URL " https://secure.onpay.ru/pay/merchant_login", где merchant_login - идентификатор сайта. | Для получения информации следует отправить GET запрос в формате JSON на URL " https://secure.onpay.ru/pay/merchant_login", где merchant_login - идентификатор сайта. | ||
В ответ будет получен JSON следующего формата: | В ответ будет получен JSON следующего формата: | ||
- | ''{ | + | { |
"paysystem_interfaces":{...}, | "paysystem_interfaces":{...}, | ||
"paysystems":{...}, | "paysystems":{...}, | ||
Строка 22: | Строка 22: | ||
"phone_codes":{...}, | "phone_codes":{...}, | ||
"locales":{...} | "locales":{...} | ||
- | }'' | + | } |
в случае ошибки вида: | в случае ошибки вида: | ||
- | ''{ | + | { |
"errors":{"key":["text1","text2",...]}, | "errors":{"key":["text1","text2",...]}, | ||
- | }'' | + | } |
где key - ключ ошибки, значение которого массив текстовых описаний ошибок(может быть одно или несколько). | где key - ключ ошибки, значение которого массив текстовых описаний ошибок(может быть одно или несколько). | ||
Пример ответа с ошибкой: | Пример ответа с ошибкой: | ||
- | ''{ | + | { |
"errors": { | "errors": { | ||
"recipient": [ | "recipient": [ | ||
Строка 37: | Строка 37: | ||
] | ] | ||
} | } | ||
- | }'' | + | } |
Пример полного успешного ответа см. в разделе "Пример расчета параметров" | Пример полного успешного ответа см. в разделе "Пример расчета параметров" | ||
Строка 49: | Строка 49: | ||
Пример: | Пример: | ||
- | ''"paysystem_interfaces":{ | + | "paysystem_interfaces":{ |
"SBR":{ | "SBR":{ | ||
"paysystem":"BBR", | "paysystem":"BBR", | ||
"logo":"/assets/payment_systems/logo/SBR.png" | "logo":"/assets/payment_systems/logo/SBR.png" | ||
} | } | ||
- | }'' | + | } |
=== paysystems === | === paysystems === | ||
Строка 66: | Строка 66: | ||
Пример: | Пример: | ||
- | '' "BBR":{ | + | "BBR":{ |
"min":100.0, | "min":100.0, | ||
"max":150000.0, | "max":150000.0, | ||
Строка 81: | Строка 81: | ||
} | } | ||
} | } | ||
- | '' | + | |
=== additional_params === | === additional_params === | ||
Строка 88: | Строка 88: | ||
Пример: | Пример: | ||
- | ''"BBR":{ | + | "BBR":{ |
"data":[ | "data":[ | ||
{"name":"first_name","regexp":"^[A-ZА-Яa-zа-яёЁ\\-\\s']{2,30}$","label":"pay_form_add_p_label.first_name","message":"pay_form_add_p_message.first_name"}, | {"name":"first_name","regexp":"^[A-ZА-Яa-zа-яёЁ\\-\\s']{2,30}$","label":"pay_form_add_p_label.first_name","message":"pay_form_add_p_message.first_name"}, | ||
Строка 96: | Строка 96: | ||
], | ], | ||
"SBR":[] | "SBR":[] | ||
- | }'' | + | } |
Значением может быть null или hash:\\ | Значением может быть null или hash:\\ | ||
Строка 112: | Строка 112: | ||
Значение поля "data" - массив hash-ей, каждый из которых описывает одно дополнительное поле. | Значение поля "data" - массив hash-ей, каждый из которых описывает одно дополнительное поле. | ||
- | hash описания может содержать следующие ключи: | + | hash описания может содержать следующие ключи:\\ |
- | *name* - название параметра, именно оно должно быть использовано при запросе на создание ордера. | + | **name** - название параметра, именно оно должно быть использовано при запросе на создание ордера.\\ |
- | *regexp* - regex для первичной валидации значения на стороне сайта магазина. | + | **regexp** - regex для первичной валидации значения на стороне сайта магазина.\\ |
- | *label* - ключ локализации (перевод брать из файлов локализации, см. в разделе "locales"), который должен быть использован для отображения плательщику названия поля. | + | **label** - ключ локализации (перевод брать из файлов локализации, см. в разделе "locales"), который должен быть использован для отображения плательщику названия поля.\\ |
- | *message* - ключ локализации (перевод брать из файлов локализации, см. в разделе "locales"), который должен быть использован для отображения ошибки плательщику при нарушении regex-а. | + | **message** - ключ локализации (перевод брать из файлов локализации, см. в разделе "locales"), который должен быть использован для отображения ошибки плательщику при нарушении regex-а.\\ |
- | *countries* - данный ключ, присутствует только у полей с name равным "user_phone", значение данного поля - список стран, с телефонов которых можно платить данным способом. (Полный список стран см. в разделе "phone_codes"). При выборе плательщиком данного способа список возможных кодов стран должен быть ограничен. | + | **countries** - данный ключ, присутствует только у полей с name равным "user_phone", значение данного поля - список стран, с телефонов которых можно платить данным способом. (Полный список стран см. в разделе "phone_codes"). При выборе плательщиком данного способа список возможных кодов стран должен быть ограничен.\\ |
- | *type* - данный ключ указывает тип дополнительного поля(если ключ отсутствует, то "input type='text'"). может принимать значение "checkbox", в данном случае поле regexp будет равно "true". Это означает что валидное значение параметра в запросе на создание ордера будет строка "true", а плательщику в форме должен отображаться checkbox. | + | **type** - данный ключ указывает тип дополнительного поля(если ключ отсутствует, то "input type='text'"). может принимать значение "checkbox", в данном случае поле regexp будет равно "true". Это означает что валидное значение параметра в запросе на создание ордера будет строка "true", а плательщику в форме должен отображаться checkbox.\\ |
- | *hint* - содержит ключ локализации подсказки к полю. Перевод должен быть отображен плательщику рядом с полем. (может быть пустым, в данном случае отображать не следует) | + | **hint** - содержит ключ локализации подсказки к полю. Перевод должен быть отображен плательщику рядом с полем. (может быть пустым, в данном случае отображать не следует) |
=== phone_codes === | === phone_codes === | ||
Значением является hash вида: | Значением является hash вида: | ||
- | ''{ | + | { |
"ru":"+7", | "ru":"+7", | ||
"ua":"+38", | "ua":"+38", | ||
Строка 141: | Строка 141: | ||
"tr":"+90", | "tr":"+90", | ||
"na":"+" | "na":"+" | ||
- | }'' | + | } |
где ключ - двухсимвольное наименование страны, значение - код телефона для данной страны. | где ключ - двухсимвольное наименование страны, значение - код телефона для данной страны. | ||
Строка 149: | Строка 149: | ||
=== locales === | === locales === | ||
значением является hash вида: | значением является hash вида: | ||
- | ''{ | + | { |
"ru":"https://secure.onpay.ru/pay_app/i18n/ru.json", | "ru":"https://secure.onpay.ru/pay_app/i18n/ru.json", | ||
"en":"https://secure.onpay.ru/pay_app/i18n/en.json" | "en":"https://secure.onpay.ru/pay_app/i18n/en.json" | ||
- | }'' | + | } |
где ключ - двухсимвольное обозначение языка перевода, значение - url для получения файла локализации. | где ключ - двухсимвольное обозначение языка перевода, значение - url для получения файла локализации. | ||
Строка 159: | Строка 159: | ||
Пример: | Пример: | ||
Если требуется отобразить ключ локализации "user_phone.errors.required" то нужно использовать значение из файла локализации | Если требуется отобразить ключ локализации "user_phone.errors.required" то нужно использовать значение из файла локализации | ||
- | |||
- | '' | ||
{ "user_phone":{ | { "user_phone":{ | ||
"errors":{ | "errors":{ | ||
"required":"This field is required" | "required":"This field is required" | ||
} | } | ||
- | }'' | + | } |
==== Пример расчета параметров ==== | ==== Пример расчета параметров ==== | ||
Строка 275: | Строка 273: | ||
**1) SBR принадлжеит платежной системе BBR, значит для расчета суммы берем курсы обмена из этой платежной системы** | **1) SBR принадлжеит платежной системе BBR, значит для расчета суммы берем курсы обмена из этой платежной системы** | ||
- | ''"exchange_rates":{ | + | "exchange_rates": |
- | "USD":0.01597, | + | {"USD":0.01597, |
- | "RUR":1.0, | + | "RUR":1.0,} |
- | }'' | + | |
Строка 286: | Строка 283: | ||
**3) Считаем сумму в BBR, которая должна поступить от плательщика в платежную систему, чтобы в систему Onpay поступило 6261.740763932373 BBR* | **3) Считаем сумму в BBR, которая должна поступить от плательщика в платежную систему, чтобы в систему Onpay поступило 6261.740763932373 BBR* | ||
Используем комиссии платежной системы BBR** | Используем комиссии платежной системы BBR** | ||
- | ''{ | + | { |
"pip":1.0, | "pip":1.0, | ||
"pif":5.0, | "pif":5.0, | ||
"mci":0.0 | "mci":0.0 | ||
- | }'' | + | } |
сумма = (6261.740763932373 + pif) / (1 - (pip / 100)) (обратный расчет комиссии) = (6261.740763932373 + 5.0) / (1 - (1.0 / 100)) = 6330.041175689265 = 6330.04 (математическое округление до 2-ого знака) | сумма = (6261.740763932373 + pif) / (1 - (pip / 100)) (обратный расчет комиссии) = (6261.740763932373 + 5.0) / (1 - (1.0 / 100)) = 6330.041175689265 = 6330.04 (математическое округление до 2-ого знака) | ||
Строка 301: | Строка 298: | ||
**5) Проверяем сумму на ограничения платежного интерфейса** | **5) Проверяем сумму на ограничения платежного интерфейса** | ||
Берем ограничения от платежной системы BBR | Берем ограничения от платежной системы BBR | ||
- | ''{ | + | { |
"min":100.0, | "min":100.0, | ||
"max":150000.0 | "max":150000.0 | ||
- | }'' | + | } |
значение 6330.04 находится в данном диапозоне, следовательно плательщик сможет оплатить через данный способ (в случае превышения лимита НЕ стоит предлагать плательщику платежный интерфейс. У разных интерфейсов разные ограничения) | значение 6330.04 находится в данном диапозоне, следовательно плательщик сможет оплатить через данный способ (в случае превышения лимита НЕ стоит предлагать плательщику платежный интерфейс. У разных интерфейсов разные ограничения) | ||
Строка 311: | Строка 308: | ||
**7) Формируем данные для запроса на создание платежного ордера** | **7) Формируем данные для запроса на создание платежного ордера** | ||
- | ''{ | + | { |
"ticker":"USD", | "ticker":"USD", | ||
"interface_ticker":"SBR", | "interface_ticker":"SBR", | ||
"pay_amoun":6330.04, | "pay_amoun":6330.04, | ||
"receive_amount":100.0 | "receive_amount":100.0 | ||
- | }'' | + | } |
**8) Отображаем плательщику форму для ввода дополнительных полей** | **8) Отображаем плательщику форму для ввода дополнительных полей** | ||
В случае SBR - таковых нет.\\ | В случае SBR - таковых нет.\\ | ||
в случае BBR:\\ | в случае BBR:\\ | ||
- | ''{ | + | { |
"first_name":"Vladimir", | "first_name":"Vladimir", | ||
"middle_name":"Ilyich", | "middle_name":"Ilyich", | ||
"last_name","Lenin", | "last_name","Lenin", | ||
"address":"Mausoleum" | "address":"Mausoleum" | ||
- | }'' | + | } |
Другие обязательные поля смотреть в разделе *Создание ордера* | Другие обязательные поля смотреть в разделе *Создание ордера* | ||
Строка 381: | Строка 378: | ||
=== Формат и общее описание === | === Формат и общее описание === | ||
Сервер Onpay отвечает в формате JSON | Сервер Onpay отвечает в формате JSON | ||
- | ''{ | + | { |
"redirect_to": {}, | "redirect_to": {}, | ||
"po_psi_data_request": {}, | "po_psi_data_request": {}, | ||
"errors": {} | "errors": {} | ||
- | }'' | + | } |
Где, одно из полей, errors, redirect_to или po_psi_data_request НЕ пустое(НЕ пустыми могут быть несколько полей). | Где, одно из полей, errors, redirect_to или po_psi_data_request НЕ пустое(НЕ пустыми могут быть несколько полей). | ||
Строка 402: | Строка 399: | ||
Примеры: | Примеры: | ||
- | ''"errors": { | + | "errors": { |
"receive_amount": [ | "receive_amount": [ | ||
"Ошибка в курсе обмена. Возможно курс обмена изменился. Пожалуйста, попробуйте продолжить операцию еще раз. <a href='http://wiki.onpay.ru/doku.php?id=oshibki#ошибки_платежной_формы' target='_blank'>Подробнее</a>" | "Ошибка в курсе обмена. Возможно курс обмена изменился. Пожалуйста, попробуйте продолжить операцию еще раз. <a href='http://wiki.onpay.ru/doku.php?id=oshibki#ошибки_платежной_формы' target='_blank'>Подробнее</a>" | ||
] | ] | ||
- | }'' | + | } |
- | ''"errors": { | + | -- |
+ | |||
+ | "errors": { | ||
"first_name": [ | "first_name": [ | ||
"pay_form_add_p_message.first_name" | "pay_form_add_p_message.first_name" | ||
Строка 415: | Строка 414: | ||
"pay_form_add_p_message.last_name" | "pay_form_add_p_message.last_name" | ||
] | ] | ||
- | }'' | + | } |
Ключ ошибки - это поле, значение которого неверно.\\ | Ключ ошибки - это поле, значение которого неверно.\\ | ||
Строка 425: | Строка 424: | ||
=== redirect_to === | === redirect_to === | ||
в качестве значения redirect_to выступает hash вида | в качестве значения redirect_to выступает hash вида | ||
- | ''{ | + | { |
"url": "https://secure.onpay.ru/1234567890/instruction", | "url": "https://secure.onpay.ru/1234567890/instruction", | ||
"...": "..." | "...": "..." | ||
- | }'' | + | } |
сайт магазина должен осуществить перенаправление плательщика GET запросом на URL, указанный как значение ключа "url". В ответе могут присутствовать другие ключи, они являются служебными и должны игнорироваться сайтом магазина. | сайт магазина должен осуществить перенаправление плательщика GET запросом на URL, указанный как значение ключа "url". В ответе могут присутствовать другие ключи, они являются служебными и должны игнорироваться сайтом магазина. | ||