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

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


api-for-pay-form

Различия

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

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

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 11:14]
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 следующего формата:​
-''​{+  ​{
   "​paysystem_interfaces":​{...},​   "​paysystem_interfaces":​{...},​
   "​paysystems":​{...},​   "​paysystems":​{...},​
Строка 22: Строка 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 для активации данного функционала для магазина"​
         ]         ]
     }     }
-}''​+  ​}
  
 Пример полного успешного ответа см. в разделе "​Пример расчета параметров"​ Пример полного успешного ответа см. в разделе "​Пример расчета параметров"​
Строка 43: Строка 44:
 ==== Описание параметров ==== ==== Описание параметров ====
 === 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 ===
Строка 62: Строка 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,​
Строка 81: Строка 86:
       }       }
     }     }
-''​+
  
 === additional_params === === additional_params ===
Строка 87: Строка 92:
  
 Пример:​ Пример:​
- +"​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:\\
Строка 104: Строка 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-а (запись в том же формате)
  
 Значение поля "​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: Строка 151:
     "​tr":"​+90",​     "​tr":"​+90",​
     "​na":"​+" ​     "​na":"​+" ​
-  }''​+  }
 где ключ - двухсимвольное наименование страны,​ значение - код телефона для данной страны. где ключ - двухсимвольное наименование страны,​ значение - код телефона для данной страны.
  
Строка 149: Строка 159:
 === 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: Строка 169:
 Пример:​ Пример:​
 Если требуется отобразить ключ локализации "​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":​{
Строка 260: Строка 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"​ с логотипами,​ ссылки которых указаны в том же разделе.\\ В данном случае сайт мерчанта должен отобразить плательщику 3 способа оплаты (из раздела "​paysystem_interfaces"​):​ "​SBR",​ "​BBR"​ и "​USD"​ с логотипами,​ ссылки которых указаны в том же разделе.\\
 Названия должны быть взяты из нужного файла локализации по ключам "​paysystem_interface.SBR.name",​ "​paysystem_interface.BBR.name",​ "​paysystem_interface.USD.name"​. В качестве доп описания можно использовать ключи вида ​ "​paysystem_interface.XXX.description"​.\\ Названия должны быть взяты из нужного файла локализации по ключам "​paysystem_interface.SBR.name",​ "​paysystem_interface.BBR.name",​ "​paysystem_interface.USD.name"​. В качестве доп описания можно использовать ключи вида ​ "​paysystem_interface.XXX.description"​.\\
Строка 273: Строка 281:
  
 === Пример расчета для интерфейса оплаты SBR === === Пример расчета для интерфейса оплаты SBR ===
-**1) SBR принадлжеит платежной системе BBR, значит для расчета суммы берем курсы обмена из этой платежной системы**+**1) SBR принадлежит платежной системе BBR, значит для расчета суммы берем курсы обмена из этой платежной системы**
  
-''​"​exchange_rates":​{ +  ​"​exchange_rates":​ 
-        "​USD":​0.01597, ​     +  {"​USD":​0.01597, ​     
-        "​RUR":​1.0,​ +  "​RUR":​1.0,​}
-}''​+
  
  
Строка 286: Строка 293:
 **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: Строка 308:
 **5) Проверяем сумму на ограничения платежного интерфейса** **5) Проверяем сумму на ограничения платежного интерфейса**
 Берем ограничения от платежной системы BBR Берем ограничения от платежной системы BBR
-''​{+  ​{
   "​min":​100.0,​   "​min":​100.0,​
   "​max":​150000.0   "​max":​150000.0
-}''​+  ​}
 значение 6330.04 находится в данном диапозоне,​ следовательно плательщик сможет оплатить через данный способ (в случае превышения лимита НЕ стоит предлагать плательщику платежный интерфейс. У разных интерфейсов разные ограничения) значение 6330.04 находится в данном диапозоне,​ следовательно плательщик сможет оплатить через данный способ (в случае превышения лимита НЕ стоит предлагать плательщику платежный интерфейс. У разных интерфейсов разные ограничения)
  
Строка 311: Строка 318:
  
 **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"​
-}''​+}
  
 Другие обязательные поля смотреть в разделе *Создание ордера* Другие обязательные поля смотреть в разделе *Создание ордера*
Строка 340: Строка 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 |
Строка 355: Строка 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",​
Строка 373: Строка 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"​** сайт магазина должен отобразить ошибки плательщику и переформировать данные для отправки (пример:​ в случае отсутствия обязательного поля - заполнить данное поле). ​Подробнее ​см. в разделе "​errors"​)\\ 
-  ​сайт магазина должен отобразить ошибки плательщику и переформировать данные для отправки(пример:​ в случае отсутствия обязательного поля - заполнить данное поле). ​(подробнее ​читать ​в разделе "​errors"​)\\ +**Иначе**\\ 
-Иначе +\\ 
-  **Если НЕ пустое "​redirect_to"​** +**Если НЕ пустое "​redirect_to"​** сайт магазина должен перенаправить плательщика на url, указанный в этом параметре. (подробнее читать в разделе "​redirect_to"​)\\ 
-    ​сайт магазина должен перенаправить плательщика на url, указанный в этом параметре. (подробнее читать в разделе "​redirect_to"​) +**Иначе** сайт магазина,​ должен сформировать форму из данных,​ содержащихся в поле "​po_psi_data_request",​ и перенаправить пользователя сабмитом данной формы. (подробнее читать в разделе "​po_psi_data_request"​)\\
-  Иначе +
-    ​сайт магазина,​ должен сформировать форму из данных,​ содержащихся в поле "​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"​
Строка 415: Строка 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 которых можно получить при помощи запроса получения информации.\\
 \\ \\
Строка 425: Строка 431:
 === 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"​. В ответе могут присутствовать другие ключи, они являются служебными и должны игнорироваться сайтом магазина.
  
Строка 451: Строка 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