Здесь показаны различия между двумя версиями данной страницы.
| Both sides previous revision Предыдущая версия Следущая версия | Предыдущая версия | ||
| api-for-pay-form [2015/10/19 10:17] admin | api-for-pay-form [2015/10/19 11:25] (текущий) admin | ||
|---|---|---|---|
| Строка 6: | Строка 6: | ||
| 1) **Запрос на получение информации о платежной форме** (курсы обмена, комиссии, списки платежных интерфейсов, получение локализации ключей...) | 1) **Запрос на получение информации о платежной форме** (курсы обмена, комиссии, списки платежных интерфейсов, получение локализации ключей...) | ||
| - | GET запрос отправляется в формате JSON на url идентичный адресу платежной формы - https://secure.onpay.ru/pay/merchant_login | + | **GET запрос** отправляется в формате JSON на url идентичный адресу платежной формы - https://secure.onpay.ru/pay/merchant_login | 
| 2) **Запрос на создание платежного ордера**. Ответом является инструкция для дальнейшего перенаправления плательщика для оплаты или показа инструкции. | 2) **Запрос на создание платежного ордера**. Ответом является инструкция для дальнейшего перенаправления плательщика для оплаты или показа инструкции. | ||
| - | POST запрос отправялется в формате json на url - https://secure.onpay.ru/pay | + | **POST запрос** отправялется в формате JSON на url - https://secure.onpay.ru/pay | 
| Шаг получения информации является НЕобязательным для создания платежного ордера. Но он необходим для получения свежих данных, в том числе о курсах обмена. Сайт магазина может делать его раз в сутки, либо после получения ошибки об изменении курса обмена, либо при изменении настроек платежных систем в своем кабинете. | Шаг получения информации является НЕобязательным для создания платежного ордера. Но он необходим для получения свежих данных, в том числе о курсах обмена. Сайт магазина может делать его раз в сутки, либо после получения ошибки об изменении курса обмена, либо при изменении настроек платежных систем в своем кабинете. | ||
| ===== Получение информации о платежной форме ===== | ===== Получение информации о платежной форме ===== | ||
| - | Для получения информации следует отправить 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 следующего формата: | ||
| { | { | ||
| Строка 28: | Строка 28: | ||
| "errors":{"key":["text1","text2",...]}, | "errors":{"key":["text1","text2",...]}, | ||
| } | } | ||
| - | где key - ключ ошибки, значение которого массив текстовых описаний ошибок(может быть одно или несколько). | + | где key - ключ ошибки, значение которого массив текстовых описаний ошибок(может быть одно или несколько - text1, text2...).\\ | 
| + | От сервера Onpay придет JSON с ответом (успешный или с ошибкой).\\ | ||
| + | \\ | ||
| Пример ответа с ошибкой: | Пример ответа с ошибкой: | ||
| { | { | ||
| "errors": { | "errors": { | ||
| "recipient": [ | "recipient": [ | ||
| - | "Для использования API платежной формы необходимо обратится в техническую поддержку Onpay для активации данного функционала для магазина" | + | "Для использования API платежной формы необходимо обратиться в техническую поддержку Onpay для активации данного функционала для магазина" | 
| ] | ] | ||
| } | } | ||
| Строка 43: | Строка 44: | ||
| ==== Описание параметров ==== | ==== Описание параметров ==== | ||
| === paysystem_interfaces === | === paysystem_interfaces === | ||
| - | Значением является hash, ключами которого являются названия доступных и включенных интерфейсов оплаты(данные значения для использования в запросе на создание ордера как "interface_ticker")\\ | + | Значением является hash, ключами которого являются названия доступных и включенных интерфейсов оплаты (данные значения нужны для использования в запросе на создание ордера для параметра "interface_ticker")\\ | 
| Значениями ключей-интерфейсов является также хеш, содержащий 2 ключа:\\ | Значениями ключей-интерфейсов является также хеш, содержащий 2 ключа:\\ | ||
| - | "**paysystem**" - для определения комиссий и курсов обмена, а также списка дополнительных полей, | + | "**paysystem**" - 3-буквенный код платежной системы (к нему привязаны комиссии, курсы, а также список дополнительных полей подлежащих заполнению пользователем - вся эта информация находится в соответствующих справочниках)\\ | 
| "**logo**" - урл логотипа для интерфейса. | "**logo**" - урл логотипа для интерфейса. | ||
| Строка 63: | Строка 64: | ||
| "**currency_code**" - 3-ех символьный код валюты (для отображения плательщику, если необходимо)\\ | "**currency_code**" - 3-ех символьный код валюты (для отображения плательщику, если необходимо)\\ | ||
| "**convert_to**" - платежная система, в которую будет осуществлена автоконвертация, если не указана валюта в которую должен быть сконвертирован платеж. НЕ во все системы можно зачислять средства, поэтому в качестве значения поля "ticker" в запросе на создание ордера необходимо использовать только значения из данного поля, а не любую из платежных систем.\\ | "**convert_to**" - платежная система, в которую будет осуществлена автоконвертация, если не указана валюта в которую должен быть сконвертирован платеж. НЕ во все системы можно зачислять средства, поэтому в качестве значения поля "ticker" в запросе на создание ордера необходимо использовать только значения из данного поля, а не любую из платежных систем.\\ | ||
| - | "**commissions**" - комиссии платежной системы, содержит 3 параметра: pip - процентная комиссия, pif - фиксированная комиссия, mci - минимальная комиссия.\\ | + | "**commissions**" - комиссии платежной системы, содержит 3 параметра:\\ | 
| + | **pip** - процентная комиссия,\\ | ||
| + | **pif** - фиксированная комиссия,\\ | ||
| + | **mci** - минимальная комиссия.\\ | ||
| "**exchange_rates**" - курсы обмена, представленные в виде хеша вида: {"USD":0.01597,"RUR":1.0}. Такая запись означает, что одна единица в данной платежной системе может быть обменяна на 0.01597 единиц в валюте USD или на 1.0 в валюте RUR.\\ | "**exchange_rates**" - курсы обмена, представленные в виде хеша вида: {"USD":0.01597,"RUR":1.0}. Такая запись означает, что одна единица в данной платежной системе может быть обменяна на 0.01597 единиц в валюте USD или на 1.0 в валюте RUR.\\ | ||
| Строка 90: | Строка 94: | ||
| "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":"middle_name","regexp":"^[A-ZА-Яa-zа-яёЁ\\-\\s']{2,30}$","label":"pay_form_add_p_label.middle_name","message":"pay_form_add_p_message.middle_name"}, | + | {"name":"first_name","regexp":"^[A-ZА-Яa-zа-яёЁ\\-\\s'] | 
| - | {"name":"last_name","regexp":"^[A-ZА-Яa-zа-яёЁ\\-\\s']{2,30}$","label":"pay_form_add_p_label.last_name","message":"pay_form_add_p_message.last_name"}, | + | {2,30}$","label":"pay_form_add_p_label.first_name","message":"pay_form_add_p_message.first_name"}, | 
| - | {"name":"address","regexp":"^[a-zA-Z\\s'0-9,\\-А-Яа-яЁё,\\d\\/\\\\.\\,\"]{4,250}$","label":"pay_form_add_p_label.address","message":"pay_form_add_p_message.address"} | + | {"name":"middle_name","regexp":"^[A-ZА-Яa-zа-яёЁ\\-\\s'] | 
| + | {2,30}$","label":"pay_form_add_p_label.middle_name","message":"pay_form_add_p_message.middle_name"}, | ||
| + | {"name":"last_name","regexp":"^[A-ZА-Яa-zа-яёЁ\\-\\s'] | ||
| + | {2,30}$","label":"pay_form_add_p_label.last_name","message":"pay_form_add_p_message.last_name"}, | ||
| + | {"name":"address","regexp":"^[a-zA-Z\\s'0-9,\\-А-Яа-яЁё,\\d\\/\\\\.\\,\"] | ||
| + | {4,250}$","label":"pay_form_add_p_label.address","message":"pay_form_add_p_message.address"} | ||
| ], | ], | ||
| "SBR":[] | "SBR":[] | ||
| Строка 105: | Строка 114: | ||
| Список полей находится по ключу "**data**", кроме данного ключа могут присутствовать другие, а именно именования интерфейсов оплаты. | Список полей находится по ключу "**data**", кроме данного ключа могут присутствовать другие, а именно именования интерфейсов оплаты. | ||
| - | Пример выше расшифровывается как: | + | Пример выше расшифровывается как:\\ | 
| - | ''Для платежной системы BBR 4 дополнительных поля: first_name, middle_name, last_name, address. | + | Для платежной системы BBR 4 дополнительных поля: first_name, middle_name, last_name, address.\\ | 
| - | Следовательно для всех интерфейсов данной системы их необходимо передавать, за исключением платежного интерфейса "SBR" (передан отдельным ключом).'' | + | Следовательно для всех интерфейсов данной системы их необходимо передавать, за исключением платежного интерфейса "SBR" (передан отдельным ключом).\\ | 
| + | \\ | ||
| Следует отметить, что у ключа интерфейса может быть свой вложенный ключ "data", в этом случае для данного интерфейса используются поля из вложенного hash-а (запись в том же формате) | Следует отметить, что у ключа интерфейса может быть свой вложенный ключ "data", в этом случае для данного интерфейса используются поля из вложенного hash-а (запись в том же формате) | ||
| Строка 272: | Строка 281: | ||
| === Пример расчета для интерфейса оплаты SBR === | === Пример расчета для интерфейса оплаты SBR === | ||
| - | **1) SBR принадлжеит платежной системе BBR, значит для расчета суммы берем курсы обмена из этой платежной системы** | + | **1) SBR принадлежит платежной системе BBR, значит для расчета суммы берем курсы обмена из этой платежной системы** | 
| "exchange_rates": | "exchange_rates": | ||
| Строка 338: | Строка 347: | ||
| | interface_ticker | string | Название способа оплата (через который плательщик будет платить) | | | interface_ticker | string | Название способа оплата (через который плательщик будет платить) | | ||
| | recipient | string | идентификатор магазина | | | recipient | string | идентификатор магазина | | ||
| - | | pay_mode | string | тип платежа, fix, free или inv | | + | | pay_mode | string | тип платежа, fix или free | | 
| | pay_amount | float | сумма, которую должен заплатить плательщик способом interface_ticker (может быть пустым, в этом слечае будет рассчитано автоматически, в зависимости от receive_amount) | | | pay_amount | float | сумма, которую должен заплатить плательщик способом interface_ticker (может быть пустым, в этом слечае будет рассчитано автоматически, в зависимости от receive_amount) | | ||
| | receive_amount | float | сумма, которую должен будет получить магазин в валюте ticker | | | receive_amount | float | сумма, которую должен будет получить магазин в валюте ticker | | ||
| Строка 373: | Строка 382: | ||
| } | } | ||
| - | Маски для первичной валидации и сообщения об ошибках для дополнительных полей можно получить при помощи запроса информации. | + | Маски для первичной валидации и сообщения об ошибках для дополнительных полей можно получить при помощи запроса информации.\\ | 
| - | Значениями поля "user_phone.code" может быть одно из значений кодов стран из запроса на получение информации. Для некоторых платежных интерфейсов список кодов ограничивается (см. в разделе *additional_params*) | + | Значениями поля "user_phone.code" может быть одно из значений кодов стран из запроса на получение информации. Для некоторых платежных интерфейсов список кодов ограничивается (см. в разделе *additional_params*)\\ | 
| ==== Ответ ==== | ==== Ответ ==== | ||
| Строка 384: | Строка 393: | ||
| "errors": {} | "errors": {} | ||
| } | } | ||
| - | Где, одно из полей, errors, redirect_to или po_psi_data_request НЕ пустое(НЕ пустыми могут быть несколько полей). | + | Где одно или несколько из полей из **errors**, **redirect_to** или **po_psi_data_request** НЕ пустое(-ые). | 
| Алгоритм обработки ответа:\\ | Алгоритм обработки ответа:\\ | ||
| - | **Если НЕ пустое "errors"** сайт магазина должен отобразить ошибки плательщику и переформировать данные для отправки(пример: в случае отсутствия обязательного поля - заполнить данное поле). (подробнее читать в разделе "errors")\\ | + | **Если НЕ пустое "errors"** сайт магазина должен отобразить ошибки плательщику и переформировать данные для отправки (пример: в случае отсутствия обязательного поля - заполнить данное поле). Подробнее см. в разделе "errors")\\ | 
| - | **Иначе**\\ | + | **Иначе** (ордер успешно создан, и мы смотрим на два остальных поля redirect_to или po_psi_data_request)\\ | 
| \\ | \\ | ||
| **Если НЕ пустое "redirect_to"** сайт магазина должен перенаправить плательщика на url, указанный в этом параметре. (подробнее читать в разделе "redirect_to")\\ | **Если НЕ пустое "redirect_to"** сайт магазина должен перенаправить плательщика на url, указанный в этом параметре. (подробнее читать в разделе "redirect_to")\\ | ||
| **Иначе** сайт магазина, должен сформировать форму из данных, содержащихся в поле "po_psi_data_request", и перенаправить пользователя сабмитом данной формы. (подробнее читать в разделе "po_psi_data_request")\\ | **Иначе** сайт магазина, должен сформировать форму из данных, содержащихся в поле "po_psi_data_request", и перенаправить пользователя сабмитом данной формы. (подробнее читать в разделе "po_psi_data_request")\\ | ||
| + | Чем отличают **redirect_to** или **po_psi_data_request**.\\ | ||
| + | **redirect_to** используется, когда перенаправление покупателя нужно осуществить запросом типа GET\\ | ||
| + | **po_psi_data_request** используется, когда перенаправление покупателя нужно осуществить запросом типа POST\\. | ||
| + | Пример платежной системы с типом GET киви с выводом инструкции.\\ | ||
| + | Пример платежной системы с типом POST - UNR.\\ | ||
| + | Информацию о типе перенаправления (GET/POST) вы получите в ответ на запрос о создании ордера. | ||
| === errors === | === errors === | ||
| Строка 398: | Строка 413: | ||
| "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>" | ||
| ] | ] | ||
| } | } | ||
| Строка 413: | Строка 429: | ||
| } | } | ||
| - | Ключ ошибки - это поле, значение которого неверно.\\ | + | **Ключ ошибки** - это поле, значение которого неверно.\\ | 
| - | Значение - массив текстов ошибок.\\ | + | **Значение** - массив текстов ошибок.\\ | 
| Иногда текст ошибки представлен в виде ключа для локализации, пример: "pay_form_add_p_message.first_name". В таких случаях перевод нужно брать из файлов локализации, url которых можно получить при помощи запроса получения информации.\\ | Иногда текст ошибки представлен в виде ключа для локализации, пример: "pay_form_add_p_message.first_name". В таких случаях перевод нужно брать из файлов локализации, url которых можно получить при помощи запроса получения информации.\\ | ||
| \\ | \\ | ||
| Строка 447: | Строка 463: | ||
| "order_id"="123" | "order_id"="123" | ||
| "sum"=103.09 | "sum"=103.09 | ||
| - | При этом сайт магазина должен передавать значения полей в неизменяемом виде(соблюдая типы данных и не применяя дополнительных функций(округление, изменение регистра)) | + | При этом сайт магазина должен передавать значения полей в неизменяемом виде (соблюдая типы данных и не применяя дополнительных функций(округление, изменение регистра)) | 
| - | hash кроме ключей route и data может содержать дополнительные ключи, сайт магазина должен игнорировать их. | + | Данный hash кроме ключей route и data может содержать дополнительные ключи, сайт магазина должен игнорировать их. |