Для инициализации платежного виджета необходимо использовать следующий скрипт:
<script id="widget-wfp-script" language="javascript" type="text/javascript" src="https://secure.wayforpay.com/server/pay-widget.js"></script>
<script type="text/javascript">
var wayforpay = new Wayforpay();
var pay = function () {
wayforpay.run({
merchantAccount : "test_merch_n1",
merchantDomainName : "www.market.ua",
authorizationType : "SimpleSignature",
merchantSignature : "b95932786cbe243a76b014846b63fe92",
orderReference : "DH783023",
orderDate : "1415379863",
amount : "1547.36",
currency : "UAH",
productName : "Процессор Intel Core i5-4670 3.4GHz",
productPrice : "1000",
productCount : "1",
clientFirstName : "Вася",
clientLastName : "Васечкин",
clientEmail : "some@mail.com",
clientPhone: "380631234567",
language: "UA"
},
function (response) {
// on approved
},
function (response) {
// on declined
},
function (response) {
// on pending or in processing
}
);
}
</script>
<button type="button" onclick="pay();">Оплатить</button>
Набор параметров запроса соответствует описанным параметрам запроса из раздела Принять платеж (Purchase).
Аутентификация запросов
В целях подтверждения валидности данных должна быть сгенерирована и передана в запросе HMAC_MD5 контрольная подпись с использованием SecretKey торговца.
Строка, подлежащая HMAC_MD5, генерируется путем конкатенации параметров merchantAccount, merchantDomainName, orderReference, orderDate, amount, currency, productName[0], productName[1]..., productName[n], productCount[0], productCount[1],..., productCount[n], productPrice[0], productPrice[1],..., productPrice[n] разделенных “;” (точка с запятой) в кодировке UTF-8
Для выполнения верификации карты в виджете необходимо передать параметр "requestType":
wayforpay.run({ ... requestType: "VERIFY" });
Параметр "straightWidget" определяет открытие виджета на мобильных устройствах вместо перенаправления на мобильную версию страницы оплаты:
wayforpay.run({ ... straightWidget: true });
Для закрытия виджета в функции-обработчике события достаточно вызвать метод wayforpay.closeit();
Параметр response в обработчиках событий является объектом, содержащим подписанные данные с результатом выполнения операции.
Дополнительно, при наступлении определенных событий в родительское окно с помощью метода postMessage посылаются сообщения:
- WfpWidgetEventApproved - при успешном завершении операции
- WfpWidgetEventDeclined - при неуспешном завершении;
- WfpWidgetEventPending - транзакция на обработке;
- WfpWidgetEventClose - при закрытии виджета пользователем.
window.addEventListener("message", function () {
if (event.data == 'WfpWidgetEventApproved') {
// location.url = '...';
}
}, false);
Для оплаты инвойса с помощью виджета
<script id="widget-wfp-script" language="javascript" type="text/javascript" src="https://secure.wayforpay.com/server/pay-widget.js"></script>
<script type="text/javascript">
var wayforpay = new Wayforpay();
var pay = function () {
wayforpay.invoice('<invoiceUrl>');
}
</script>
<button type="button" onclick="pay();">Оплатить</button>
где </invoiceUrl> - ссылка на страницу оплаты инвойса, например 'https://secure.wayforpay.com/invoice/ie01a84b32807'
Если необходимо всегда открывать виджет (без ухода с Вашей страницы даже на мобильных устройствах), нужно в функции вызова wayforpay.invoice передать второй параметр со значением true:
...
wayforpay.invoice('https://secure.wayforpay.com/invoice/ie01a84b32807', true);
...