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

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


payment-links-specs

Различия

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

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

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
payment-links-specs [2014/09/26 08:18]
admin [Параметры платежной ссылки]
payment-links-specs [2024/03/07 06:04] (текущий)
support
Строка 1: Строка 1:
-===== Спецификации платежных ссылок агрегатора Onpay.ru =====+===== Платежные ссылки агрегатора Onpay.ru =====
  
-ВНИМАНИЕ. Все запросы к платежной форме выполняются только методом GET. Селектор POST/GET в Кабинете продавца меняет тип запросов API мерчанта,​ т.е. каким образом Onpay будет присылать запрос мерчанту с уведомлением о свершившейся оплате.+**ВНИМАНИЕ. Все запросы к платежной форме выполняются только методом GET.** Селектор POST/GET в Кабинете продавца меняет тип запросов API мерчанта,​ т.е. каким образом Onpay будет присылать запрос мерчанту с уведомлением о свершившейся оплате.
  
 **Мерчант** – пользователь сервиса Onpay.ru обладающий правами получать платежи от третьих лиц ("​продавец"​) через систему Onpay (сайт продающий услуги или товары,​ интернет магазин,​ интернет -сервис и т.п.) **Мерчант** – пользователь сервиса Onpay.ru обладающий правами получать платежи от третьих лиц ("​продавец"​) через систему Onpay (сайт продающий услуги или товары,​ интернет магазин,​ интернет -сервис и т.п.)
Строка 8: Строка 8:
  
 ==== Настройки панели управления,​ касающиеся платежных ссылок ==== ==== Настройки панели управления,​ касающиеся платежных ссылок ====
 +
 +При помощи настроек в личном кабинете продавца можно:
 +
 +1) определить набор методов оплаты,​ которые будут присутствовать на платежной форме, а также задать им группировку и сортировку,​
 +
 +2) выбрать шаблон внешнего вида формы, а также настроить подходящие цвета,
 +
 +3) определить набор и названия полей, которые плательщик должен будет заполнить,​
 +
 +4) включить и настроить защиту платежных ссылок. Для этого используются настройки из следующей таблицы.
  
 ^ Название ​     ^ Возможные\\ значения ​      ^ Описание ​         ^ ^ Название ​     ^ Возможные\\ значения ​      ^ Описание ​         ^
Строка 13: Строка 23:
 | Ключ для\\ API IN    | 10-20 символов ​    | Используется для вычисления контрольной подписи при отправке уведомлений о поступлении платежей в вашу систему и сверки с контрольной подписью,​ полученной при переходе пользователей по ссылкам-формам с вашего сайта.\\ Внимание! Никогда не указывайте секретные ключи в ссылках,​ формах или других публично доступных местах,​ т.к. зная его, злоумышленник сможет подделывать уведомления о платежах и платежные ссылки! ​       | | Ключ для\\ API IN    | 10-20 символов ​    | Используется для вычисления контрольной подписи при отправке уведомлений о поступлении платежей в вашу систему и сверки с контрольной подписью,​ полученной при переходе пользователей по ссылкам-формам с вашего сайта.\\ Внимание! Никогда не указывайте секретные ключи в ссылках,​ формах или других публично доступных местах,​ т.к. зная его, злоумышленник сможет подделывать уведомления о платежах и платежные ссылки! ​       |
 | Запрет свободных платежей | Да\\ Нет | Если опция включена,​ то плательщик сможет совершить оплату только перейдя с Вашего сайта, на котором должна быть сформирована ссылка со всеми необходимыми параметрами и подписью MD5 | | Запрет свободных платежей | Да\\ Нет | Если опция включена,​ то плательщик сможет совершить оплату только перейдя с Вашего сайта, на котором должна быть сформирована ссылка со всеми необходимыми параметрами и подписью MD5 |
-\\ 
- 
 ==== Параметры платежной ссылки ==== ==== Параметры платежной ссылки ====
  
Строка 30: Строка 38:
 | pay_for | String (100max) (Для «прямых» платежей можно использовать только цифры!) | Номер заказа,​ заявки,​ аккаунт пользователя и т.п. для идентификации платежа в системе магазина. | | pay_for | String (100max) (Для «прямых» платежей можно использовать только цифры!) | Номер заказа,​ заявки,​ аккаунт пользователя и т.п. для идентификации платежа в системе магазина. |
 | md5 | string(32) | Подпись параметров ссылки,​ для защиты от изменений пользователем. Принцип формирования см. ниже. | | md5 | string(32) | Подпись параметров ссылки,​ для защиты от изменений пользователем. Принцип формирования см. ниже. |
-| convert | "​yes"​ или "​no"​ (по умолчанию "​yes"​) | Принудительная конвертация платежей в валюту ценника. Если включена – все поступающие платежи будут конвертироваться в валюту ценника. Т.е. если в ссылке установлена стоимость 100RUR, а клиент оплатил с помощью USD – вы получите на счет 100RUR. Если выключена,​ вы получите ту валюту,​ которой платит клиент. Т.е. например,​ пользователь платит 3.5WMZ за ваш товар стоимостью 100RUR – вы получите 3.5WMZ на свой WMZ счет в системе Onpay (при этом уведомление по API будет содержать 100RUR). |+| convert | "​yes"​ или "​no"​ (по умолчанию "​yes"​) | Принудительная конвертация платежей в валюту ценника. Если включена – все поступающие платежи будут конвертироваться в валюту ценника. Т.е. если в ссылке установлена стоимость 100RUR, а клиент оплатил с помощью USD – вы получите на счет 100RUR. Если выключена,​ вы получите ту валюту,​ которой платит клиент. Т.е. например,​ пользователь платит 3.5WMZ за ваш товар стоимостью 100RUR – вы получите 3.5WMZ на свой WMZ счет в системе Onpay (при этом уведомление по API будет содержать 100RUR). ВНИМАНИЕ! Если оплата поступает из НЕбалансовой системы(система,​ не имеющая собственного баланса,​ пример - OSP), то конвертация будет происходить в валюту ценника. |
 | url_success | http:* / https:* (255max) | Ссылка,​ на которую будет переадресован пользователь после успешного завершения платежа. Внимание! Не может содержать параметры запроса (все, что идет после «?» в ссылке). Если Вам нужны параметры после «?» в ссылке используйте url_success_enc. | | url_success | http:* / https:* (255max) | Ссылка,​ на которую будет переадресован пользователь после успешного завершения платежа. Внимание! Не может содержать параметры запроса (все, что идет после «?» в ссылке). Если Вам нужны параметры после «?» в ссылке используйте url_success_enc. |
-| url_success_enc | http:* / https:* (255max) | Необязательный параметр,​ содержащий ссылку для перехода в случае успешного платежа,​ закодированную ​согласно RFC3986 с отличием лишь ​в том, что по историческим соображениям пробелы заменяются знаком '​+'​. Такое кодирование реализует функция PHP urlencode. Параметр url_success_enc имеет приоритет над параметром url_success в том смысле,​ что если в ссылке будут присутствовать оба параметра,​ параметр url_success будет проигнорирован. Если в ссылке присутствует только параметр url_success,​ а параметра url_success_enc - нет, то будет использован параметр url_success,​ но по техническим причинам он будет обрезан справа начиная с первого встретившегося символа '&'​. |+| url_success_enc | http:* / https:* (255max) | Необязательный параметр,​ содержащий ссылку для перехода в случае успешного платежа,​ закодированную в base64. Параметр url_success_enc имеет приоритет над параметром url_success в том смысле,​ что если в ссылке будут присутствовать оба параметра,​ параметр url_success будет проигнорирован. Если в ссылке присутствует только параметр url_success,​ а параметра url_success_enc - нет, то будет использован параметр url_success,​ но по техническим причинам он будет обрезан справа начиная с первого встретившегося символа '&'​. |
 | url_fail | http:* / https:* (255max) | Ссылка,​ на которую будет переадресован пользователь после неудачного завершения платежа. Внимание! Не может содержать параметры запроса (все, что идет после «?» в ссылке). Если Вам нужны параметры после «?» в ссылке используйте url_fail_enc. | | url_fail | http:* / https:* (255max) | Ссылка,​ на которую будет переадресован пользователь после неудачного завершения платежа. Внимание! Не может содержать параметры запроса (все, что идет после «?» в ссылке). Если Вам нужны параметры после «?» в ссылке используйте url_fail_enc. |
-| url_fail_enc | http:* / https:* (255max) | Необязательный параметр,​ содержащий ссылку для перехода в случае неудачного или отмененного платежа,​ закодированную ​согласно RFC3986 с отличием лишь ​в том, что по историческим соображениям пробелы заменяются знаком '​+'​. Такое кодирование реализует функция PHP urlencode. Параметр url_fail_enc имеет приоритет над параметром url_fail в том смысле,​ что если в ссылке будут присутствовать оба параметра,​ параметр url_fail будет проигнорирован. Если в ссылке присутствует только параметр url_fail, а параметра url_fail_enc - нет, то будет использован параметр url_fail, но по техническим причинам он будет обрезан справа начиная с первого встретившегося символа '&'​. |+| url_fail_enc | http:* / https:* (255max) | Необязательный параметр,​ содержащий ссылку для перехода в случае неудачного или отмененного платежа,​ закодированную в base64. Параметр url_fail_enc имеет приоритет над параметром url_fail в том смысле,​ что если в ссылке будут присутствовать оба параметра,​ параметр url_fail будет проигнорирован. Если в ссылке присутствует только параметр url_fail, а параметра url_fail_enc - нет, то будет использован параметр url_fail, но по техническим причинам он будет обрезан справа начиная с первого встретившегося символа '&'​. |
 | user_email | String (40max) | E-mail плательщика | | user_email | String (40max) | E-mail плательщика |
 | user_phone | String (40max) | Телефон плательщика | | user_phone | String (40max) | Телефон плательщика |
 | note | String (255max) | Заметка. В этом параметре можно передать любой комментарий,​ который будет передан через API вашему сайту при поступлении платежа (в запросе типа PAY) | | note | String (255max) | Заметка. В этом параметре можно передать любой комментарий,​ который будет передан через API вашему сайту при поступлении платежа (в запросе типа PAY) |
 | ln | "​en"​ или "​ru"​(по умолчанию "​ru"​) | Язык отображения платежной формы | | ln | "​en"​ или "​ru"​(по умолчанию "​ru"​) | Язык отображения платежной формы |
-| f | 7, 8, 9, 10, 11 | Вариант дизайна платежной формы | +| f | 1, 7, 8, 9, 10, 11 | Вариант дизайна платежной формы | 
-| one_way | 3-х символьное наименование валюты | Формы оплаты одним способом (выбрана валюта и сумма платежа,​ для ввода доступен только e-mail пользователя) Для использования форм с выбранной платежной системой в ссылку необходимо передать параметры:​ one_way - валюта,​ отличная от RUR, pay_mode - "​fix",​ pay_for - номер заказа,​ price - цена, ​currency ​- RUR |+| one_way | 3-х символьное наименование валюты | Формы оплаты одним способом (выбрана валюта и сумма платежа,​ для ввода доступен только e-mail пользователя) Для использования форм с выбранной платежной системой в ссылку необходимо передать параметры:​ one_way - валюта,​ отличная от RUR, pay_mode - "​fix",​ pay_for - номер заказа,​ price - цена, ​ticker ​- RUR |
 | price_final | "​true"​ | Комиссию платежной системы взымать с продавца. К стоимости заказа не будет прибавляться комиссия платежной системы на ввод. Если параметр не указан,​ или в нем передано значение отличное от "​true",​ то комиссия будет взыматься с плательщика | | price_final | "​true"​ | Комиссию платежной системы взымать с продавца. К стоимости заказа не будет прибавляться комиссия платежной системы на ввод. Если параметр не указан,​ или в нем передано значение отличное от "​true",​ то комиссия будет взыматься с плательщика |
 +| onpay_ap_xxx | string | Дополнительные параметры |
 \\ \\
 Конструктор платежных ссылок,​ находящийся на странице "​Настройки по умолчанию"​ Личного Кабинета будет всегда использовать параметры url_success_enc и url_fail_enc. Использование параметров в ссылках,​ задаваемых в настройках по-умолчанию разрешено.\\ Конструктор платежных ссылок,​ находящийся на странице "​Настройки по умолчанию"​ Личного Кабинета будет всегда использовать параметры url_success_enc и url_fail_enc. Использование параметров в ссылках,​ задаваемых в настройках по-умолчанию разрешено.\\
Строка 65: Строка 74:
  
 При формировании квитанции (ордера) к оплате на фиксированную сумму (fix), система по-разному работает с «ошибочными» платежами. Возьмем самый типичный пример:​ ордер был сформирован на определенную сумму, покупатель платит выбранной платежной системой (платежные терминалы),​ но не имеет возможности оплатить копейка-в-копейку (терминалы не принимают мелочь). В этом случае возможны три сценария: ​ При формировании квитанции (ордера) к оплате на фиксированную сумму (fix), система по-разному работает с «ошибочными» платежами. Возьмем самый типичный пример:​ ордер был сформирован на определенную сумму, покупатель платит выбранной платежной системой (платежные терминалы),​ но не имеет возможности оплатить копейка-в-копейку (терминалы не принимают мелочь). В этом случае возможны три сценария: ​
-1. Вариант 1. Покупатель не прочитал мелкий шрифт про 5%-ную комиссию владельца терминала. Как итог - не хватило каких то копеек для совершения покупки. В этом случае вся сумма будет зачислена на кошелек Onpay, с которого он либо оплатит без комиссий чуть меньше нужной суммы (согласовав с магазином),​ либо пополнит кошелек на небольшую сумму и оплатит полную сумму. Оставшиеся копейки можно будет потратить,​ например,​ на оплату телефона. +  * Вариант 1. Покупатель не прочитал мелкий шрифт про 5%-ную комиссию владельца терминала. Как итог - не хватило каких то копеек для совершения покупки. В этом случае вся сумма будет зачислена на кошелек Onpay, с которого он либо оплатит без комиссий чуть меньше нужной суммы (согласовав с магазином),​ либо пополнит кошелек на небольшую сумму и оплатит полную сумму. Оставшиеся копейки можно будет потратить,​ например,​ на оплату телефона. 
-2. Вариант 2. Покупатель оплатил покупку полностью - идет зачисление на счет Продавца. Переплата в 5 рублей и менее не инициирует создание кошелька. Если покупатель желает получить «сдачу» - он может потребовать ее у Продавца (тот зачислит разницу на баланс телефона или создаст для него кошелек Onpay). +  ​* ​Вариант 2. Покупатель оплатил покупку полностью - идет зачисление на счет Продавца. Переплата в 5 рублей и менее не инициирует создание кошелька. Если покупатель желает получить «сдачу» - он может потребовать ее у Продавца (тот зачислит разницу на баланс телефона или создаст для него кошелек Onpay). 
-3. Вариант 3. У покупателя только большая купюра,​ очевидно,​ что ему не хочется дарить более 100 рублей,​ когда он платит за товар стоимостью 370 рублей 500-рублевой купюрой. В этом случае для покупателя создается специальный «кошелек» (уведомление о его создании высылается ему на почту, которую он указывал при формировании ордера). С данного кошешька можно без комиссий оплатить товар в этом же магазине,​ или же вывести «сдачу»,​ например,​ пополнив баланс собственного телефона.+  ​* ​Вариант 3. У покупателя только большая купюра,​ очевидно,​ что ему не хочется дарить более 100 рублей,​ когда он платит за товар стоимостью 370 рублей 500-рублевой купюрой. В этом случае для покупателя создается специальный «кошелек» (уведомление о его создании высылается ему на почту, которую он указывал при формировании ордера). С данного кошешька можно без комиссий оплатить товар в этом же магазине,​ или же вывести «сдачу»,​ например,​ пополнив баланс собственного телефона.
  
-Теперь опишем то, что происходит,​ терминами API. +Теперь опишем ​ в таблице ​то, что происходит,​ терминами API. 
-pay_mode - параметр,​ определяющий тип платежа:​ free или fix. Если не указан в ссылке,​ то по умолчанию pay_mode=free +  ​* ​pay_mode - параметр,​ определяющий тип платежа:​ free или fix. Если не указан в ссылке,​ то по умолчанию pay_mode=free. 
-free - это электронные платежи на произвольную сумму, как правило используются интернет-сервисами для пополнения баланса пользователя на сайте.  +  ​* ​free - это электронные платежи на произвольную сумму, как правило используются интернет-сервисами для пополнения баланса пользователя на сайте.  
-fix - это платежи на фиксированную сумму равную стоимости товара.  +  ​* ​fix - это платежи на фиксированную сумму равную стоимости товара.  
-В зависимости от того, какой способ выбран,​ пользователю будет предлагаться к оплате разные суммы, с учетом комиссий выбранного способа. Комиссии автоматически рассчитывается таким образом,​ чтобы магазин получил сумму точно равную стоимости товара. +  ​* ​В зависимости от того, какой способ выбран,​ пользователю будет предлагаться к оплате разные суммы, с учетом комиссий выбранного способа. Комиссии автоматически рассчитываются таким образом,​ чтобы магазин получил сумму точно равную стоимости товара. 
-способ ​= Способ оплаты,​ платежная системаметод платежа выбранный покупателем в Платежной форме +  * Способ ​- способ оплаты, ​ ​под этим термином подразумевается: ​платежная системаметод платежа выбранный покупателем в "Платежной форме"; ​онлайновый ​способ платежа,​ выполняемый в текущем времени с проверкой вводимых данныхофлайновый ​способ оплаты по которому невозможно отклонить оплату в случае ввода неверных данных (например:​ терминалы,​ банковские переводы). 
-онлайновый способ платежа,​ выполняемый в текущем времени с проверкой вводимых данных+  ​* ​Кошелек ​кошелек в Onpay, специально создаваемый для возврата ошибочных платежей.
-офлайновый способ оплаты по которому невозможно отклонить оплату в случае ввода неверных данных (например:​ терминалы,​ банковские переводы). +
-Кошелек ​кошелек в Onpay, специально создаваемый для возврата ошибочных платежей+
  
-^ режим pay_mode ^ Сумма относительно суммы в ордере ^ способ верный,​ онлайновый ^ способ не тот, онлайновый ^ способ верный,​ офлайновый ^ способ не тот, офлайновый ^+^ режим pay_mode ^ Сумма относительно суммы в ордере ^ Способ верный,​ онлайновый ^ Способ не тот, онлайновый ^ Способ верный,​ офлайновый ^ Способ не тот, офлайновый ^
 | FIX | НЕДОплата | Отказ (ошибка «получатель денег запретил прием платежей с произвольными параметрами») | Отказ (ошибка «получатель денег запретил прием платежей с произвольными параметрами») | В Кошелек в RUR | В Кошелек в RUR | | FIX | НЕДОплата | Отказ (ошибка «получатель денег запретил прием платежей с произвольными параметрами») | Отказ (ошибка «получатель денег запретил прием платежей с произвольными параметрами») | В Кошелек в RUR | В Кошелек в RUR |
 | FIX | Сумма как в ордере или до 5 руб. больше | Зачисление продавцу | Отказ (ошибка «получатель денег запретил прием платежей с произвольными параметрами») | Зачисление | Зачисление (в валюте фактического зачисления) | | FIX | Сумма как в ордере или до 5 руб. больше | Зачисление продавцу | Отказ (ошибка «получатель денег запретил прием платежей с произвольными параметрами») | Зачисление | Зачисление (в валюте фактического зачисления) |
Строка 90: Строка 97:
 Во всех случаях в режиме и fix и free деньги зачисляются в Кошелек. Во всех случаях в режиме и fix и free деньги зачисляются в Кошелек.
  
-==== Включение защиты параметров ====+==== Дополнительные параметры ====
  
-В личном кабинете можно включить опцию защиты платежной ссылки подписью MD5, в этом случаепри ​переходе на платежную форму, Onpay проверит наличие подписи ​ MD5 и проверит параметры, участвующие в подписи. +Дополнительные параметры, передаваемые в платежную форму ​сайтом мерчанта. Будут возвращены в check и pay запросе.  
-Для использования проверки подписи, ордер должен быть "фиксированным", то есть должны присутствовать ​параметры: price и pay_for. В ином случае, даже при наличии подписи, она проверяться ​не будет, а ордер будет создан "свободный"​.+Все дополнительные ​параметры ​должны начинаться с префикса *onpay_ap_*,​ затем должно идти название параметра(только латинские символы в нижнем регистре и цифры, ​кроме 2 зарезервированных названия:​ onpay_ap_key и onpay_ap_signature). Количество параметров не ограничено, НО, строка, полученная как JSON представление всех доп параметров не должна превышать 65000 символов
  
-Формат строки для контрольной подписи (без кавычек): «pay_mode;​price;​currency;​pay_for;​convert;​ secret_key» Например: fix;​100.0;​WMR;​123;​yes;​secret_key (Обращайте внимание на формат данных,​ входящих в подпись! Сумма в формате #.# - один знак после точки, даже если число ​не имеет дробной части ), где: +При передаче ​доп параметров мерчант должен также передать параметр *onpay_ap_signature*Значение ​которого есть SHA1 от строки,​ полученной как конкатенация ​значений всех доп параметров(отсортированных ​по названию ​параметра) + НЕпередаваемого ​параметра onpay_ap_key,​ значение ​которого равно API_KEY ​в настройках сайта в кабинете ​мерчанта. 
-pay_mode - строка, "​free" ​или "​fix"​ +
-priceconvert и pay_for - переданные параметры. +
-currency - валюта заказа, в которой магазин должен получить деньги, передавать в ссылке не обязательно, берется из настроек магазина по умолчанию+
-Внимание! Даже если вы не указываете параметр ​“convert” в ссылке, то в строке для формирования подписи md5 необходимо указать “yes” (без кавычекна месте этого параметра.+
  
-Для защиты от "​свободных"​ платежей (если они не нужны),​ необходимо включить в личном кабинете флаг "​Запрет платежей без API", если эта функция будет включенато плательщик не сможет создать "​свободный"​ ордер, а только "фиксированный",​ у которого включена проверка MD5.+Примеры: 
 +В случае, если ​API_KEY = '​test'​
  
-==== Защита MD5 ====+> onpay_ap_z1 ​'​q'​ 
 +> onpay_ap_z2 ​'​w'​ 
 +> onpay_ap_signature ​'​0693732538320eb7fe487f4f15e85abf9d148573'​
  
-Если в настройках магазина включена защита параметров платежных ссылок методом контрольной подписи MD5 – все формы и ссылки,​ по которым пользователи переходят с вашего сайта на платежную страницу сервиса Onpay, должны содержать подпись MD5.+> onpay_ap_z1 = '​q'​ 
 +> onpay_ap_a1 = '​w'​ 
 +> onpay_ap_signature = '​21ce6c2615c4b325ca406470b533e8ca76759dc4'​
  
-Внимание! Даже если вы не указываете параметр ​“convert” в ссылке, то в строке для формирования ​подписи md5 необходимо указать “yes” (без кавычек) на месте этого параметра.+В случае отсутствия ​параметра onpay_ap_signature или его неверного значения, все доп параметры ​игнорируются и в запросах check  и pay присутствовать не будут.
  
-Формат строки ​для контрольной подписи (без кавычек):  +ВНИМАНИЕ!!! 
-«pay_mode;​price;​currency;​pay_for;​convert;​ secret_key»  +**Передача дополнительных параметров работает только при ​выборе API2.0 в кабинете ​мерчантаДругие ​типы API дополнительные параметры НЕ поддерживают. 
-Например:  +** 
-fix;100.0;​WMR;​123;​yes;​secret_key  +==== Включение защиты ​параметров ====
-(Обращайте внимание на формат данных, входящих в подпись! Сумма ​в формате #.# - один знак после точки! )+
  
-MD5: настройки по умолчанию в [[http://​wiki.onpay.ru/​doku.php?​id=my_office|Личном ​Кабинете]]. +В личном ​кабинете ​можно включить опцию защиты платежной ссылки подписью MD5, в этом случае, при переходе на платежную форму, Onpay проверит наличие подписи  MD5 и ее корректность.
-^ pay_mode ^ наличие md5 в ссылке ^ **Чекбокс «обязательно MD5»** ^ наличие параметров в ссылке кроме f=7 ^ Действия контроллера ^  +
-| free | игнорируется | игнорируется ​ | нет | подставить «умолчание» и отобразить форму | +
-| ::: | ::: | ::: | да | отобразить форму |  +
-| fix | нет | нет | нет | подставить «умолчание» и отобразить форму | +
-| ::: | ::: | ::: | да | отобразить форму |  +
-| ::: | ::: | да | игнорируется  | выдать отказ с текстом «нет md5» |  +
-| ::: | да | игнорируется ​ | нет | подставить «умолчание», посчитать md5 от них и сравнить с переданным, ​по результату сравнения — или выдать отказ или показать ​форму ​+
-| ::: | ::: | ::: | да | посчитать md5 от переданных ​параметров, ​сравнить с переданным md5, по результату сравнения — или выдать ​отказ или показать форму | +
  
-Примеры+Для использования проверки подписи,​ ордер должен быть "​фиксированным", то есть должны присутствовать параметры:​ price и pay_for. В ином случае,​ даже при наличии подписи,​ она проверяться не будет, а ордер будет создан "​свободный".
  
-Платеж на фиксированную сумму ​481.19 WMZ за счет ​№123:  +Формат строки для контрольной подписи (без кавычек):​ «pay_mode;​price;​ticker;​pay_for;​convert;​secret_key» \\ 
-   ​http://​secure.onpay.ru/​pay/​{merchant_login}?​pay_mode=fix&​price=481.19&​currency=WMZ&​pay_for=123+Например:​ fix;​100.0;​WMR;​123;​yes;​secret_key , где: 
 +  * pay_mode - строка "​fix"​. 
 +  * price - переданный параметр,​ цена (Обращайте внимание на формат данных,​ входящих в подпись! Сумма в формате #.# - один знак после точки, даже если число не имеет дробной части). 
 +  * ticker - валюта заказа,​ в которой магазин должен получить деньги,​ передавать в ссылке не обязательно,​ берется из настроек магазина по умолчанию
 +  * pay_for - переданный параметр. 
 +  * convert ​ - переданный параметр,​ передавать в ссылке не обязательно (Даже если вы не указываете параметр “convert” в ссылке,​ то в строке для формирования подписи md5 необходимо ​указать “yes” (без кавычек) на месте этого параметра). 
 +  * secret_key - секретный ключ API магазина, задаваемый в настройках в личном кабинете.
  
-Пополнение счета №123 на любую сумму в любой валюте:​  +Для защиты от "свободных"​ платежей (если они не нужны),​ необходимо включить в личном кабинете флаг "​Запрет платежей без ​API", если ​эта функция будет включена,​ то плательщик не сможет создать ​"свободный" ​ордер, а только иксированный", у которого включена проверка ​MD5.
-   ​http://​secure.onpay.ru/​pay/​{merchant_login}?​pay_for=123 +
-    +
-**Подробнее о спецификациях MD5 тут: ​   http://​onpay.ru/​spetsifikatsii-md5** +
-==== Как работает параметр price_final ==== +
- +
-Значение Price_final указывает, с кого должна взиматься комиссия платежных систем.\\ +
-1% (комиссия Onpay.ru) всегда берется с продавца (мерчанта) при выводе денег.\\ +
-\\ +
-1) Эти данные привидены для платежа,​ сумма которого 10 USD, а плательщик платит в рублях. Причем комиссия платежной системы равна 10%, а курс обмена RUR/USD = 30/1\\ +
-2) Первые ​два столбца показывают ​настройки мерчанта,​ вторые два показывают реально прошедшие суммы, три последних показывают значения полей в запросах API.\\ +
-\\ +
-^ Цена товара ^ **price_final** ^ convert ^ Плательщик платит ^ Мерчант получает ^ order_amount ^ order_currency ^ paid_amount (RUR)^ +
-| 10 USD | false (по умолчанию) | yes | 333.33 RUR  | 300.0 RUR | 300.0 | RUR | 333.33 | +
-| 10 USD | ::: | no | 333.33 RUR | 10 USD | 10 | USD | 333.33 | +
-| 10 USD | true | yes | 300.0 RUR | 270.0 RUR | 270.0 | RUR | 300.0  | +
-| 10 USD | ::: | no | 300.0 RUR | 9 USD | 9 | USD | 300.0 | +
- +
- +
-==== Как работает параметр pay_mode в случае переплаты,​ недоплаты,​ оплаты не тем способом или повторной оплаты ==== +
- +
-При формировании квитанции (ордера) к оплате на фиксированную сумму (fix), система по-разному работает с "​ошибочными" платежами. Возьмем самый типичный пример:​ ордер был сформирован на определенную сумму, покупатель платит выбранной платежной системой (платежные терминалы),​ но не имеет возможности оплатить копейка-в-копейку (терминалы не принимают мелочь). В этом случае возможны три сценария:​ \\ +
-1. Вариант 1. Покупатель не прочитал мелкий шрифт про 5%-ную комиссию владельца терминала. Как итог - не хватило каких то копеек для совершения покупки. В этом случае вся сумма будет зачислена на кошелек Onpay, с которого он либо оплатит без комиссий чуть меньше нужной суммы (согласовав с магазином), либо пополнит кошелек на небольшую сумму и оплатит полную сумму. Оставшиеся копейки можно будет потратить,​ например,​ на оплату телефона.\\ +
-2. Вариант 2. Покупатель оплатил покупку полностью - идет зачисление на счет Продавца. Переплата в 5 рублей и менее не инициирует создание кошелька. Если покупатель желает получить "​сдачу"​ - он может потребовать ее у Продавца (тот зачислит разницу на баланс телефона или создаст для него кошелек Onpay).\\ +
-3. Вариант 3. У покупателя только большая купюра,​ очевидно,​ что ему не хочется ​дарить более 100 рублей,​ когда он платит за товар стоимостью 370 рублей 500-рублевой купюрой. В этом случае для покупателя создается специальный "​кошелек"​ (уведомление о его создании высылается ему на почту, которую он указывал при формировании ордера). С данного кошешька можно без комиссий оплатить товар в этом же магазине,​ или же вывести "​сдачу", например, пополнив баланс собственного телефона.\\ +
- +
-Теперь опишем то, что происходит,​ терминами API.\\ +
-**pay_mode** - параметр,​ определяющий **тип платежа**:​ free или fix. Если не указан ​в ссылке, то по умолчанию pay_mode=free\\ +
-**free** - это электронные платежи на произвольную сумму, как правило используются интернет-сервисами для пополнения баланса пользователя на сайте. \\ +
-**fix** - это платежи на фиксированную сумму равную стоимости товара. В зависимости от того, какой способ выбран,​ пользователю будет предлагаться к оплате разные суммы, с учетом комиссий выбранного способа. Комиссии автоматически рассчитывается таким образом, чтобы магазин получил сумму точно равную стоимости товара.\\ +
-**способ** = Способ оплаты,​ платежная система, метод платежа выбранный покупателем в Платежной ​форме\\ +
-**онлайновый** способ платежа,​ выполняемый в текущем времени с проверкой вводимых данных.\\ +
-**офлайновый** способ оплаты по которому невозможно отклонить оплату в случае ввода неверных данных (например:​ терминалы,​ банковские переводы).\\ +
-**Кошелек** = кошелек в Onpay, специально создаваемый для возврата ошибочных платежей\\ +
- +
-^ ** режим pay_mode** ^ Сумма относительно суммы в ордере^ способ верный,​ онлайновый^ способ не тот, онлайновый^ способ верный,​ офлайновый^ способ не тот, офлайновый^ +
-| FIX | НЕДОплата| Отказ (ошибка "​получатель денег запретил прием платежей с произвольными параметрами") | Отказ (ошибка "​получатель денег запретил прием платежей с произвольными параметрами"​) ​ | В Кошелек в RUR | В Кошелек в RUR | +
-| FIX | Сумма как в ордере или до 5 руб. больше | Зачисление продавцу| Отказ (ошибка "​получатель денег запретил прием ​платежей ​с произвольными параметрами"​) | Зачисление | Зачисление (в валюте фактического зачисления) | +
-| FIX | ПЕРЕплата на более чем 5 руб. | Зачисление,​ «сдача» - в Кошелек в RUR | Отказ (ошибка ​"получатель денег запретил прием платежей с произвольными параметрами"​) | Зачисление"​сдача"​ - в Кошелек в RUR | Зачисление (в валюте фактического зачисления),​ "​сдача"​ - в Кошелек в RUR | +
-| FREE | НЕДОплата | Зачисление продавцу | Зачисление (в валюте цены товара) ​ | Зачисление ​ | Зачисление (в валюте цены товара,​ и только если конвертация невозможна в валюте ​фактического зачисления) | +
-| FREE | Сумма как в ордере или до 5 руб. больше | Зачисление продавцу | Зачисление (в валюте цены товара) ​ | Зачисление ​ | Зачисление (в валюте цены товара,​ и только если конвертация ​невозможна в валюте фактического зачисления) ​ | +
-| FREE | ПЕРЕплата на более чем 5 руб. | Зачисление продавцу| Зачисление (в валюте цены товара) ​ | Зачисление ​ | Зачисление (в валюте цены товара,​ и только если конвертация невозможна в валюте фактического зачисления) | +
- +
-Повторная оплата:​\\ +
-Во всех случаях в режиме и fix и free деньги зачисляются в Кошелек.\\ +
- +
-==== Изменение курсов обмена ==== +
- +
-В том случаеесли у платежного ордера валюта ​оплаты(from_currency) и валюта назначения(to_currency) различаются, ​и курс обмена между этими валютами меняется, возможна смена курса в промежуток времени между ​созданием платежного ордера и соответствущего ему входящего платежа. Курс обмена может увеличиться, либо уменьшиться.\\ +
-\\ +
-Пусть мерчант хочет получить сумму 200 WMZ. Плательщик желает оплатить ее в EUR. Курс ​обмена на момент оплаты и создания платежного ордера - 1 EUR = 1.4 WMZ. Комиссий для простоты нет. Платежный ордер ​создается с такими суммами - pay_amount = 124.86 EURreceive_amount = 200.0 WMZ. Рассмотрим три случая поведения курса обмена.\\ +
-| X | Курс обмена на момент создания платежа | Оплаченная сумма (amount в запросе pay к api мерчанта) EUR| Сумма к получению (order_amount в запросе pay к api мерчанта) WMZ | excange_rate в запросе pay к api мерчанта | +
-| Курс не изменился |              1.4    |  142.86 ​             | 200.0                       | 1.4                        | +
-| Курс повысился ​   |              1.42   ​| ​ 142.86 ​             | 202.86 ​                     | 1.4                        | +
-| Курс понизился ​   |              1.38   ​| ​ 142.86 ​             | 197.15 ​                     | 1.4                        | +
- +
-В платеж и в запрос к api мерчанта попадает сумма, вычисленная по новому курсу на момент создания платежа. В запросе к api мерчанта приходит старый курскоторый был на момент создания ордера. +
- +
-==== Про параметр currency (ticker) ==== +
-Ввиду особенностей "​машинного языка" сочетание букв ENC в редких случаях превращается в служебный символ. Поэтому при копировании такого слова в скрипт операция производится некорректно. Нами был введен дополнительный параметр-синоним ticker, он равноценен,​ однако,​ связанные параметры таких синонимов не имеют. Currency - то же саоме ​что и ticker, НО order_currency НЕ имеет синонима order_ticker.\\ +
-И еще один немаловажный момент. "​Валюта"​ в нашем АПИ значит "​способ оплаты",​ может иметь коды RUR, USD, WMR, QWI... НО USD это не просто "валюта долар",​ а "​получить доллары банковским переводом",​ соответственно для реализации мультивалютного Вам нужно реализовать собственное решение расчета ​курсов, если выбранный способ вывода вас не устроит (выплата в долларах на р/с доступна только по договору),​ и вы потеряете 1-2% на кросс-курсах при выборе другого способа вывода.\\+
payment-links-specs.1411719519.txt.gz · Последние изменения: 2014/09/26 08:18 — admin