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

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


payment-links-specs

Различия

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

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

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
Следущая версия Both sides next revision
payment-links-specs [2014/09/26 08:16]
admin
payment-links-specs [2015/04/24 09:37]
admin
Строка 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) | Необязательный параметр,​ содержащий ссылку для перехода в случае успешного платежа,​ закодированную согласно RFC3986 с отличием лишь в том, что по историческим соображениям пробелы заменяются знаком '​+'​. Такое кодирование реализует функция PHP urlencode. Параметр url_success_enc имеет приоритет над параметром url_success в том смысле,​ что если в ссылке будут присутствовать оба параметра,​ параметр url_success будет проигнорирован. Если в ссылке присутствует только параметр url_success,​ а параметра url_success_enc - нет, то будет использован параметр url_success,​ но по техническим причинам он будет обрезан справа начиная с первого встретившегося символа '&'​. |
Строка 40: Строка 48:
 | ln | "​en"​ или "​ru"​(по умолчанию "​ru"​) | Язык отображения платежной формы | | ln | "​en"​ или "​ru"​(по умолчанию "​ru"​) | Язык отображения платежной формы |
 | f | 7, 8, 9, 10, 11 | Вариант дизайна платежной формы | | f | 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. Использование параметров в ссылках,​ задаваемых в настройках по-умолчанию разрешено.\\
 \\ \\
  
-h4. Параметр price_final+**Параметр price_final**
  
 Значение Price_final указывает,​ с кого должна взиматься комиссия платежных систем. Значение Price_final указывает,​ с кого должна взиматься комиссия платежных систем.
Строка 54: Строка 63:
 2) Первые два столбца показывают настройки мерчанта,​ вторые два показывают реально прошедшие суммы, три последних показывают значения полей в запросах API. 2) Первые два столбца показывают настройки мерчанта,​ вторые два показывают реально прошедшие суммы, три последних показывают значения полей в запросах API.
  
-Цена товара ​price_final ​convert ​Плательщик платит ​Мерчант получает ​order_amount ​order_currency ​paid_amount (RUR) |+Цена товара ​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 | false (по умолчанию) | yes | 333.33 RUR | 300.0 RUR | 300.0 | RUR | 333.33 |
 | 10 USD | false (по умолчанию) | no | 333.33 RUR | 10 USD | 10 | USD | 333.33 | | 10 USD | false (по умолчанию) | no | 333.33 RUR | 10 USD | 10 | USD | 333.33 |
Строка 60: Строка 69:
 | 10 USD | true | no | 300.0 RUR | 9 USD | 9 | USD | 300.0 | | 10 USD | true | no | 300.0 RUR | 9 USD | 9 | USD | 300.0 |
  
-h4. Параметр pay_mode+**Параметр pay_mode**
  
 Работа параметра pay_mode в случае переплаты,​ недоплаты,​ оплаты не тем способом или повторной оплаты Работа параметра pay_mode в случае переплаты,​ недоплаты,​ оплаты не тем способом или повторной оплаты
  
 При формировании квитанции (ордера) к оплате на фиксированную сумму (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_api_z1 ​'​q'​ 
 +> onpay_api_z2 ​'​w'​ 
 +> onpay_api_signature ​'​0693732538320eb7fe487f4f15e85abf9d148573'​
  
-Если в настройках магазина включена защита параметров платежных ссылок методом контрольной подписи MD5 – все формы и ссылки,​ по которым пользователи переходят с вашего сайта на платежную страницу сервиса Onpay, должны содержать подпись MD5.+> onpay_api_z1 = '​q'​ 
 +> onpay_api_a1 = '​w'​ 
 +> onpay_api_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.txt · Последние изменения: 2024/03/07 06:04 — support