Доработка модуля оплаты onpay.ru
Добавлено: 2015-12-11 15:10:27
Доработал тут немного модуль оплаты onpay.ru
-- добавил возможность переключать комиссию на получателя. В старой версии комиссия бралась с плательщика в любом случае
-- добавлена валидация post запроса md5 подписью при перенаправлении пользователя на onpay для оплаты (для опции Запрет платежей без API в кабинете onpay)
-- если у пользователя есть подтверждённый телефон, он автоматически подставляются в форму оплаты на onpay
Первая опция правда реализована только в самом коде (переменная $price_final)
Стоит отметить, что при её включении в теории должны более корректно обрабатываться платежи, принятые в другой валюте. В варианте, когда комиссию платит плательщик были проблемы с такими платежами. Возникали скорее всего из-за нескольких конвертаций по разным курсам. В результате, уведомление о платеже от onpay содержала другую сумму платежа (отличалось на копейки, но биллинг не принимал в итоге.
А вот в связке 1-й и 2-й доработок сумма берётся из другого поля уведомления о платеже от onpay. В этом поле используется именно та сумма, которая была выставлена по счёту.
В целом, если $price_final добавить в настройки модуля, может кому-то ещё пригодится, т.к. брать комиссию с пользователя в каком-то смысле не солидно, если пытаешься косить под большую компанию ))
Там есть заморочка в коде, на первый взгляд безсмысленная :
Но смысл в ней есть. Это особенности валидации onpay.
-- добавил возможность переключать комиссию на получателя. В старой версии комиссия бралась с плательщика в любом случае
-- добавлена валидация post запроса md5 подписью при перенаправлении пользователя на onpay для оплаты (для опции Запрет платежей без API в кабинете onpay)
-- если у пользователя есть подтверждённый телефон, он автоматически подставляются в форму оплаты на onpay
Первая опция правда реализована только в самом коде (переменная $price_final)
Стоит отметить, что при её включении в теории должны более корректно обрабатываться платежи, принятые в другой валюте. В варианте, когда комиссию платит плательщик были проблемы с такими платежами. Возникали скорее всего из-за нескольких конвертаций по разным курсам. В результате, уведомление о платеже от onpay содержала другую сумму платежа (отличалось на копейки, но биллинг не принимал в итоге.
А вот в связке 1-й и 2-й доработок сумма берётся из другого поля уведомления о платеже от onpay. В этом поле используется именно та сумма, которая была выставлена по счёту.
В целом, если $price_final добавить в настройки модуля, может кому-то ещё пригодится, т.к. брать комиссию с пользователя в каком-то смысле не солидно, если пытаешься косить под большую компанию ))
Там есть заморочка в коде, на первый взгляд безсмысленная :
Код: Выделить всё
$Send['price_md5'] = number_format($Send['price'], 2, '.', '');
if(substr($Send['price_md5'], -1) == "0") $Send['price_md5'] = number_format($Send['price'], 1, '.', '');
Но смысл в ней есть. Это особенности валидации onpay.