Инструменты пользователя

Инструменты сайта


api-for-pay-form

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
Последняя версия Both sides next revision
api-for-pay-form [2015/10/19 09:56]
admin
api-for-pay-form [2015/10/19 11:14]
admin
Строка 1: Строка 1:
 ====== API платежной формы ====== ====== API платежной формы ======
- 
 ===== Общее описание ===== ===== Общее описание =====
- 
 Взаимодействие с платежным агрегатором Onpay возможно без перенаправления плательщика на платежную форму. Взаимодействие с платежным агрегатором Onpay возможно без перенаправления плательщика на платежную форму.
  
Строка 8: Строка 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 следующего формата:​
-''​{+  ​{
   "​paysystem_interfaces":​{...},​   "​paysystem_interfaces":​{...},​
   "​paysystems":​{...},​   "​paysystems":​{...},​
Строка 25: Строка 22:
   "​phone_codes":​{...},​   "​phone_codes":​{...},​
   "​locales":​{...}   "​locales":​{...}
-}''​+  ​}
  
 в случае ошибки вида: в случае ошибки вида:
-''​{+  ​{
   "​errors":​{"​key":​["​text1","​text2",​...]},​   "​errors":​{"​key":​["​text1","​text2",​...]},​
-}''​ +  ​
-где key - ключ ошибки,​ значение которого массив текстовых описаний ошибок(может быть одно или несколько). +где key - ключ ошибки,​ значение которого массив текстовых описаний ошибок(может быть одно или несколько ​- text1, text2...).\\ 
 +От сервера Onpay придет JSON с ответом (успешный или с ошибкой).\\ 
 +\\
 Пример ответа с ошибкой:​ Пример ответа с ошибкой:​
-''​{+  ​{
     "​errors":​ {     "​errors":​ {
         "​recipient":​ [         "​recipient":​ [
-            "​Для использования API платежной формы необходимо обратится в техническую поддержку Onpay для активации данного функционала для магазина"​+            "​Для использования API платежной формы необходимо обратиться в техническую поддержку Onpay для активации данного функционала для магазина"​
         ]         ]
     }     }
-}''​+  ​}
  
 Пример полного успешного ответа см. в разделе "​Пример расчета параметров"​ Пример полного успешного ответа см. в разделе "​Пример расчета параметров"​
  
 ==== Описание параметров ==== ==== Описание параметров ====
- 
 === paysystem_interfaces === === paysystem_interfaces ===
- +Значением является hash, ключами которого являются названия доступных и включенных интерфейсов оплаты (данные значения ​нужны ​для использования в запросе на создание ордера ​для параметра "​interface_ticker"​)\\
-Значением является hash, ключами которого являются названия доступных и включенных интерфейсов оплаты(данные значения для использования в запросе на создание ордера ​как "​interface_ticker"​)\\+
 Значениями ключей-интерфейсов является также хеш, содержащий 2 ключа:​\\ Значениями ключей-интерфейсов является также хеш, содержащий 2 ключа:​\\
-"​**paysystem**"​ - для определения комиссий и курсов обмена, а также списка дополнительных полей,+"​**paysystem**"​ - 3-буквенный код платежной системы (к нему привязаны ​комиссиикурсы, а также список дополнительных полей ​подлежащих заполнению пользователем - вся эта информация находится в соответствующих справочниках)\\
 "​**logo**"​ - урл логотипа для интерфейса. "​**logo**"​ - урл логотипа для интерфейса.
  
 Пример: ​ Пример: ​
-''​"​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 ===
- 
 Значением является hash, содержащий следующие ключи:​\\ Значением является hash, содержащий следующие ключи:​\\
 "​**min**"​ - сумма минимального платежа через данный способ в единицах данной системы\\ "​**min**"​ - сумма минимального платежа через данный способ в единицах данной системы\\
Строка 68: Строка 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.\\
  
 Пример:​ Пример:​
-'' ​   ​"​BBR":​{+      ​"​BBR":​{
       "​min":​100.0,​       "​min":​100.0,​
       "​max":​150000.0,​       "​max":​150000.0,​
Строка 87: Строка 86:
       }       }
     }     }
-''​ 
  
-=== additional_params === 
  
 +=== additional_params ===
 Значением является hash, ключи которого - именование платежной системы Значением является hash, ключи которого - именование платежной системы
  
 Пример:​ Пример:​
- +"​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":​[]
-    }''​ +    }
- +
-Значением может быть null или hash +
-Если null - значит для данной платежной системы нет дополнительных полей. +
-Если hash - значит в запросе на создание платежного ордера должны присутствовать перечисленные поля.+
  
-Список полей находится по ключу "​data",​ кроме данного ​ключа могут ​присутствовать ​другие, а именно именования интерфейсов оплаты.+Значением может быть null или hash:\\ 
 +**Если null** - значит для данной платежной системы нет ​дополнительных ​полей.\\ 
 +**Если hash** - значит в запросе на создание платежного ​ордера должны ​присутствовать ​перечисленные поля.\\
  
-Пример выше расшифровывается ​как: +Список полей находится по ключу "​**data**"​кроме данного ключа могут присутствовать другие, а именно именования ​интерфейсов оплаты.
-''​Для ​платежной системы BBR 4 дополнительных ​поля: first_namemiddle_name,​ last_name, address. +
-Следовательно для всех интерфейсов ​данной системы их необходимо передаватьза исключением платежного интерфейса "​SBR"​ (передан отдельным ключом).''​+
  
 +Пример выше расшифровывается как:\\
 +Для платежной системы BBR 4 дополнительных поля: first_name, middle_name,​ last_name, address.\\
 +Следовательно для всех интерфейсов данной системы их необходимо передавать,​ за исключением платежного интерфейса "​SBR"​ (передан отдельным ключом).\\
 +\\
 Следует отметить,​ что у ключа интерфейса может быть свой вложенный ключ "​data",​ в этом случае для данного интерфейса используются поля из вложенного hash-а (запись в том же формате) Следует отметить,​ что у ключа интерфейса может быть свой вложенный ключ "​data",​ в этом случае для данного интерфейса используются поля из вложенного hash-а (запись в том же формате)
  
 Значение поля "​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",​
Строка 149: Строка 151:
     "​tr":"​+90",​     "​tr":"​+90",​
     "​na":"​+" ​     "​na":"​+" ​
-  }''​ +  }
- +
 где ключ - двухсимвольное наименование страны,​ значение - код телефона для данной страны. где ключ - двухсимвольное наименование страны,​ значение - код телефона для данной страны.
  
Строка 158: Строка 158:
  
 === 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 для получения файла локализации.
  
Строка 170: Строка 168:
  
 Пример:​ Пример:​
- 
 Если требуется отобразить ключ локализации "​user_phone.errors.required"​ то нужно использовать значение из файла локализации Если требуется отобразить ключ локализации "​user_phone.errors.required"​ то нужно использовать значение из файла локализации
- +  ​{ "​user_phone":​{
-''​ +
-{ "​user_phone":​{+
   "​errors":​{   "​errors":​{
     "​required":"​This field is required"​     "​required":"​This field is required"​
   }   }
-}''​ +  ​}
  
 ==== Пример расчета параметров ==== ==== Пример расчета параметров ====
- 
- 
 === Пример полного ответа на запрос получения информации === === Пример полного ответа на запрос получения информации ===
- +  ​{
- +
-{+
   "​paysystem_interfaces":​{   "​paysystem_interfaces":​{
     "​SBR":​{     "​SBR":​{
Строка 278: Строка 268:
     "​en":"​https://​secure.onpay.ru/​pay_app/​i18n/​en.json"​     "​en":"​https://​secure.onpay.ru/​pay_app/​i18n/​en.json"​
   }   }
-} +  ​
- +В данном случае сайт мерчанта должен отобразить плательщику 3 способа оплаты (из раздела "​paysystem_interfaces"​):​ "​SBR",​ "​BBR"​ и "​USD"​ с логотипами,​ ссылки которых указаны в том же разделе.\\ 
- +Названия должны быть взяты из нужного файла локализации по ключам "​paysystem_interface.SBR.name",​ "​paysystem_interface.BBR.name",​ "​paysystem_interface.USD.name"​. В качестве доп описания можно использовать ключи вида ​ "​paysystem_interface.XXX.description"​.\\ 
-В данном случае сайт мерчанта должен отобразить плательщику 3 способа оплаты (из раздела "​paysystem_interfaces"​):​ "​SBR",​ "​BBR"​ и "​USD"​ с логотипами,​ ссылки которых указаны в том же разделе. +\\ 
-Названия должны быть взяты из нужного файла локализации по ключам "​paysystem_interface.SBR.name",​ "​paysystem_interface.BBR.name",​ "​paysystem_interface.USD.name"​. В качестве доп описания можно использовать ключи вида ​ "​paysystem_interface.XXX.description"​. +Одно из значений "​SBR",​ "​BBR",​ "​USD"​ должно быть использовано в качестве значения параметра "​interface_ticker"​ в запросе на создание ордера.\\ 
- +\\ 
-Одно из значений "​SBR",​ "​BBR",​ "​USD"​ должно быть использовано в качестве значения параметра "​interface_ticker"​ в запросе на создание ордера. +Из hash-а "​paysystems"​ из полей "​convert_to"​ получаем возможный список значений для поля "​ticker"​ запроса на создание платежной формы. В нашем случае это "​RUR"​ и "​USD"​.\\ 
- +\\ 
-Из hash-а "​paysystems"​ из полей "​convert_to"​ получаем возможный список значений для поля "​ticker"​ запроса на создание платежной формы. В нашем случае это "​RUR"​ и "​USD"​. +Если плательщик выберет вариант "​BBR"​ или "​USD"​ то он также должен заполнить соответствующие дополнительные поля, для способа "​SBR"​ их нет.\\ 
- +\\
-Если плательщик выберет вариант "​BBR"​ или "​USD"​ то он также должен заполнить соответствующие дополнительные поля, для способа "​SBR"​ их нет. +
 Если магазину необходимо получить 100 USD (в запросе на создание платежного ордера поля ticker="​USD",​ receive_amount=100.0),​ то он должен рассчитать сумму, которую должен заплатить плательщик через интерфейс оплаты. Если магазину необходимо получить 100 USD (в запросе на создание платежного ордера поля ticker="​USD",​ receive_amount=100.0),​ то он должен рассчитать сумму, которую должен заплатить плательщик через интерфейс оплаты.
  
 === Пример расчета для интерфейса оплаты SBR === === Пример расчета для интерфейса оплаты SBR ===
 +**1) SBR принадлежит платежной системе BBR, значит для расчета суммы берем курсы обмена из этой платежной системы**
  
-*1) SBR принадлжеит платежной системе BBR, значит для расчета суммы берем курсы обмена из этой платежной системы* +  ​"​exchange_rates":​ 
- +  ​{"​USD":​0.01597, ​     
-''​"​exchange_rates":​{ +  "​RUR":​1.0,​}
-        ​"​USD":​0.01597, ​     +
-        "​RUR":​1.0,​ +
-}''​+
  
  
-*2) Считаем сумму в BBR, которая должна поступить в систему Onpay для обмена на 100 USD*+**2) Считаем сумму в BBR, которая должна поступить в систему Onpay для обмена на 100 USD**
 сумма = 100 / 0.01597 = 6261.740763932373 сумма = 100 / 0.01597 = 6261.740763932373
  
-*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-ого знака)
  
-*4) Проверяем минимальную комиссию* +**4) Проверяем минимальную комиссию*
-комиссия = 6330.04 - 6261.75 = 68.31 +комиссия = 6330.04 - 6261.75 = 68.31\\ 
-если комиссия меньше чем mci, то делаем пересчет суммы как: +если комиссия меньше чем mci, то делаем пересчет суммы как:\\ 
-сумма до обмена + mci (6261.75 + mci) +сумма до обмена + mci (6261.75 + mci)\\ 
-в нашем случае это не требуется,​ так как рассчитанная комиссия больше чем значение минимальной.+в нашем случае это не требуется,​ так как рассчитанная комиссия больше чем значение минимальной.\\
  
-*5) Проверяем сумму на ограничения платежного интерфейса*+**5) Проверяем сумму на ограничения платежного интерфейса**
 Берем ограничения от платежной системы BBR Берем ограничения от платежной системы BBR
-''​{+  ​{
   "​min":​100.0,​   "​min":​100.0,​
   "​max":​150000.0   "​max":​150000.0
-}''​ +  ​}
 значение 6330.04 находится в данном диапозоне,​ следовательно плательщик сможет оплатить через данный способ (в случае превышения лимита НЕ стоит предлагать плательщику платежный интерфейс. У разных интерфейсов разные ограничения) значение 6330.04 находится в данном диапозоне,​ следовательно плательщик сможет оплатить через данный способ (в случае превышения лимита НЕ стоит предлагать плательщику платежный интерфейс. У разных интерфейсов разные ограничения)
  
-*6) Результирующая сумма к оплате*+**6) Результирующая сумма к оплате**
 Для получения магазином 100 USD плательщик может заплатить 6330.04 BBR Для получения магазином 100 USD плательщик может заплатить 6330.04 BBR
  
-*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":"​Test", +  "​middle_name":"​Ilyich", 
-  "​middle_name":"​Testovich", +  "​last_name","​Lenin", 
-  "​last_name","​Testov", +  "​address":"​Mausoleum
-  "​address":"​Address+}
-}''​+
  
 Другие обязательные поля смотреть в разделе *Создание ордера* Другие обязательные поля смотреть в разделе *Создание ордера*
  
 ===== Создание ордера ===== ===== Создание ордера =====
- 
 ==== Запрос ==== ==== Запрос ====
- 
 === Обязательные параметры === === Обязательные параметры ===
- 
 Для создания ордера необходимо отправить POST запрос на адрес https://​secure.onpay.ru/​pay в формате JSON со следующими обязательными параметрами:​ Для создания ордера необходимо отправить POST запрос на адрес https://​secure.onpay.ru/​pay в формате JSON со следующими обязательными параметрами:​
 | Название | Тип | Значение и описание | | Название | Тип | Значение и описание |
Строка 367: Строка 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 |
Строка 382: Строка 362:
 === Пример запроса === === Пример запроса ===
 Пример запроса на создание ордера через системы BBR, которая имеет 4 дополнительных поля(first_name,​ last_name, middle_name,​ address): Пример запроса на создание ордера через системы BBR, которая имеет 4 дополнительных поля(first_name,​ last_name, middle_name,​ address):
- +  ​{
- +
-{+
   "​user_email":"​test@email.com",​   "​user_email":"​test@email.com",​
   "​pay_for":"​test_pay_for",​   "​pay_for":"​test_pay_for",​
Строка 402: Строка 380:
     "​number":"​9001234567"​     "​number":"​9001234567"​
   }   }
-}+  ​}
  
-Маски для первичной валидации и сообщения об ошибках для дополнительных полей можно получить при помощи запроса информации. +Маски для первичной валидации и сообщения об ошибках для дополнительных полей можно получить при помощи запроса информации.\\ 
- +Значениями поля "​user_phone.code"​ может быть одно из значений кодов стран из запроса на получение информации. Для некоторых платежных интерфейсов список кодов ограничивается (см. в разделе *additional_params*)\\
-Значениями поля "​user_phone.code"​ может быть одно из значений кодов стран из запроса на получение информации. Для некоторых платежных интерфейсов список кодов ограничивается (см. в разделе *additional_params*)+
  
 ==== Ответ ==== ==== Ответ ====
- 
 === Формат и общее описание === === Формат и общее описание ===
- 
 Сервер 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 НЕ пустое(НЕ пустыми могут быть ​несколько полей). +
- +
-Алгоритм обработки ответа:​ +
-Если НЕ пустое ​"​errors"​ +
-  сайт магазина должен отобразить ошибки плательщику и переформировать данные для отправки(пример:​ в случае отсутствия обязательного поля ​заполнить данное поле). (подробнее читать в разделе "​errors"​) +
-Иначе +
-  Если НЕ пустое "​redirect_to"​ +
-    сайт магазина должен перенаправить плательщика на url, указанный в этом параметре. (подробнее читать в разделе "​redirect_to"​) +
-  Иначе +
-    сайт магазина,​ должен сформировать форму из данных,​ содержащихся в поле "​po_psi_data_request",​ и перенаправить пользователя сабмитом данной формы(подробнее читать в разделе "​po_psi_data_request"​)+
  
 +Алгоритм обработки ответа:​\\
 +**Если НЕ пустое "​errors"​** сайт магазина должен отобразить ошибки плательщику и переформировать данные для отправки (пример:​ в случае отсутствия обязательного поля - заполнить данное поле). Подробнее см. в разделе "​errors"​)\\
 +**Иначе**\\
 +\\
 +**Если НЕ пустое "​redirect_to"​** сайт магазина должен перенаправить плательщика на url, указанный в этом параметре. (подробнее читать в разделе "​redirect_to"​)\\
 +**Иначе** сайт магазина,​ должен сформировать форму из данных,​ содержащихся в поле "​po_psi_data_request",​ и перенаправить пользователя сабмитом данной формы. (подробнее читать в разделе "​po_psi_data_request"​)\\
  
 === errors === === errors ===
- 
- 
 в качестве значения errors выступает hash. в качестве значения errors выступает hash.
- 
 Примеры:​ Примеры:​
-    ​''​"​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"​
Строка 450: Строка 421:
             "​pay_form_add_p_message.last_name"​             "​pay_form_add_p_message.last_name"​
         ]         ]
-    }''​ +    }
- +
- +
-Ключ ошибки - это поле, значение которого неверно. +
-Значение - массив текстов ошибок. +
-Иногда текст ошибки представлен в виде ключа для локализации,​ пример:​ "​pay_form_add_p_message.first_name"​. В таких случаях перевод нужно брать из файлов локализации,​ url которых можно получить при помощи запроса получения информации.+
  
 +**Ключ ошибки** - это поле, значение которого неверно.\\
 +**Значение** - массив текстов ошибок.\\
 +Иногда текст ошибки представлен в виде ключа для локализации,​ пример:​ "​pay_form_add_p_message.first_name"​. В таких случаях перевод нужно брать из файлов локализации,​ url которых можно получить при помощи запроса получения информации.\\
 +\\
 Если присутствует ключ ошибки "​system",​ значит допущена фатальная ошибке при запросе(примеры:​ неверный формат,​ пустой запрос) Если присутствует ключ ошибки "​system",​ значит допущена фатальная ошибке при запросе(примеры:​ неверный формат,​ пустой запрос)
  
 === 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"​. В ответе могут присутствовать другие ключи, они являются служебными и должны игнорироваться сайтом магазина.
  
Строка 488: Строка 457:
             "​order_id"​="​123"​             "​order_id"​="​123"​
             "​sum"​=103.09             "​sum"​=103.09
-При этом сайт магазина должен передавать значения полей в неизменяемом виде(соблюдая типы данных и не применяя дополнительных функций(округление,​ изменение регистра)) +При этом сайт магазина должен передавать значения полей в неизменяемом виде (соблюдая типы данных и не применяя дополнительных функций(округление,​ изменение регистра)) 
-hash кроме ключей route и data может содержать дополнительные ключи, сайт магазина должен игнорировать их.+Данный ​hash кроме ключей route и data может содержать дополнительные ключи, сайт магазина должен игнорировать их.
api-for-pay-form.txt · Последние изменения: 2015/10/19 11:25 — admin