Получение и обработка информации о действиях с платёжной формой
Сгенерированная платежная страница может синхронно передавать на страницу сайта информацию о действиях пользователя, а также позволяет вам реализовать собственные функции-обработчики для произвольной обработки этих действий на сайте. Вот некоторые действия пользователя на сайте которые можно обработать с применением функций-обработчиков:
- выбор вкладки;
- выбор платежного метода;
- выбор любых переключателей: сумма, сохранение реквизитов;
- изменение значений полей ввода: счета, телефоны, префиксы, кроме секретных данных;
- отправка запроса на оплату.
Названия и код функций-обработчиков указываются в строке вызова самого виджета. В следующих разделах подробнее рассказывается, как передавать эту информацию при вызове виджета.
Предварительная настройка
<link rel="stylesheet" href="https://paymentpage.ecommpay.com/shared/merchant.css" /> <script type="text/javascript" src="https://paymentpage.ecommpay.com/shared/merchant.js"></script>
Никаких дополнительных операций по конфигурированию среды для обработки событий не требуется.
Реализация функций-обработчиков событий
При выполнении пользователем некоторых операций на веб-странице инициируются те или иные события, которые можно обрабатывать с помощью пользовательских функций-обработчиков. При возникновении событий автоматически вызываются функции, определения которых были ранее переданы при вызове виджета. Вот пример вызова виджета с определением функции onResize
, которая будет автоматически вызываться при событии изменения размера окна:
EPayWidget.run({ payment_id: 'X03936', payment_amount: 2035, payment_currency: 'USD', project_id: 22, signature: 'YWb6Z20ByxpQ30hfTIjaCCsVIwVynXV', onResize: function (data) { site.resize({ myWidth: data.width, myHeight: data.high }); }, }, 'POST');
onResize
— название функции-обработчика с указанием события (изменение размера), которое эта функция обрабатывает, а выделенный курсивным начертанием текст — код функции, которая будет автоматически выполняться при возникновении события.data
— JavaScript-объект, в котором передается информация, относящаяся к выбранному событию. В частности, в этом примере в объектеdata
передаются новая ширина и высота окна после изменения его размера. Эти значения функция-обработчик присваивает переменнымmyWidth
иmyHigh
, соответственно. Более подробная информация о содержащихся в JavaScript-объектеdata
данных приведена в таблице далее в этом разделе
При возникновении других событий передается другая полезная информация. Например когда пользователь выбирает на странице тот или иной платежный метод в переменной data
передается название, тип и код платежного метода. Эту информацию вы вправе использовать в своей реализации функции onPaymentMethodSelect
, которая служит для обработки события выбора платежного метода. Вот пример, определения функции в котором при выборе пользователем на сайте того или иного платежного метода вызывается функция-обработчик onPaymentMethodSelect
присваивающая название этого метода переменной newPaymentsMethod
:
EPayWidget.run({ payment_id: 'X03936', payment_amount: 2035, payment_currency: 'USD', project_id: 22, signature: 'YWb6Z20ByxpQ30hfTIjaCCsVIwVynXV', onPaymentMethodSelect: function (data) { site.resize({ newPaymentMethod: data.name, }); }, }, 'POST');
Надо понимать, что эта функция-обработчик события не присутствует в подключаемых к веб-странице библиотеках напрямую — код этих функций передается при вызове виджета. Иначе говоря, чтобы обеспечить вызов такой функции надо при вызове виджета, помимо кода вызова самого виджета для каждого перехватываемого события указать код функции-обработчика. В коде функции-обработчика можно обращаться к объекту data
, в котором в функцию-обработчик передается информация, относящаяся к перехватываемому событию.
В следующей таблице перечислены поддерживаемые функции-обработчики событий вместе с описанием событий и примерами данных, передаваемых в JavaScript-объекте data
.
Название функции-обработчика события | Описание обрабатываемого события | Пример data |
---|---|---|
onResize | Изменение размеров документа внутри iframe-виджета |
РазвернутьСвернуть
|
onPaymentMethodSelect | Выбор платежного метода |
РазвернутьСвернуть
|
onLoaded | Завершение загрузки контента виджета |
РазвернутьСвернуть
|
onPaymentSuccess | Успешная оплата |
РазвернутьСвернуть
{ "sum_request":{ "amount":99, "currency":"EUR" }, "request_id":"f68d1288e3e37b0ded8763d94588dd2915c5dfadb5024", "transaction":{ "id":2000000004, "date":"2019-02-28T11:14:49+0000", "type":"purchase" }, "payment":{ "method":"card", "date":"2019-02-28T11:14:49+0000", "result_code":"0", "result_message":"Success", "status":"success", "is_new_attempts_available":false, "attempts_timeout":0, "id":"EP394c-56d4", "provider_id":3 }, "sum_real":{ "amount":99, "currency":"EUR" }, "customer":{ "id":"1" }, "status":"success", "account":{ "number":"541333******0019", "type":"mastercard", "card_holder":"FG FG", "id":37489, "expiry_month":"07", "expiry_year":"2021" }, "rrn":"000047769105", "auth_code":"563253", "general":{ "project_id":140, "payment_id":"EP394c-56d4", "signature":"EjYXLJpvDBPtbwQSQ0ukti9B Y1m73+0SrRCCQGB5QXHzxTu7Fory/XQaZTtNz2Vm33AA==" }, "description":"", "operations":[{ "id":2000000004, "type":"sale", "status":"success", "date":"2019-02-28T11:14:49+0000", "processing_time":"2019-02-28T11:14:49+0000", "sum":{ "amount":99, "currency":"EUR" }, "code":"0", "message":"Success" } ], "return_url":"http://pp/process/complete-redirect?0ebeqgdcgbsj3d278b46" } |
onPaymentFail | Отклонение оплаты |
РазвернутьСвернуть
{ "sum_request":{ "amount":99, "currency":"EUR" }, "request_id":"f68d1288e3e37b0ded8763d94588dd2915c5dfadb5024", "transaction":{ "id":2000000004, "date":"2019-02-28T11:14:49+0000", "type":"purchase" }, "payment":{ "method":"card", "date":"2019-02-28T11:14:49+0000", "result_code":"10106", "result_message":"expired", "status":"decline", "is_new_attempts_available":false, "attempts_timeout":0, "id":"EP39456d4", "provider_id":3 }, "sum_real":{ "amount":99, "currency":"EUR" }, "customer":{ "id":"1" }, "status":"success", "account":{ "number":"541333******0019", "type":"mastercard", "card_holder":"FG FG", "id":37489, "expiry_month":"07", "expiry_year":"2021" }, "rrn":"000047769105", "auth_code":"563253", "general":{ "project_id":140, "payment_id":"EP394c-56d4", "signature":"EjYXLJpvDBPtbwQSQ0ukti9BY1m73+0 SrRCCQGB5QXHzxTu7Fory/XQaZTtNz2Vm33AA==" }, "description":"", "operations":[{ "id":2000000004, "type":"sale", "status":"decline", "date":"2019-02-28T11:14:49+0000", "processing_time":null, "sum":{ "amount":99, "currency":"EUR" }, "code":"10106", "message":"expired" } ], "return_url":"http://pp/process/complete-redirect?0ebeqgdcgbsj3d278b46" } |
onExit | Закрытие виджета, не содержит данных | - |
onPaymentSent | Отправка платежных данных — пользователь нажал на Оплатить, не содержит данных | - |
onWalletSelect | Выбор сохраненных платежных данных |
РазвернутьСвернуть
|
onWalletRemove | Удаление сохраненных платежных данных |
РазвернутьСвернуть
|
onTokenizeSuccess | Создание токена для банковской карты |
РазвернутьСвернуть
|
onFailLoading | Ошибка при загрузке виджета |
РазвернутьСвернуть
|
onPaymentSubmitResult | Регистрация запроса в платёжной платформе |
РазвернутьСвернуть
|
onShowClarificationPage | Открытие страницы для ввода дополнительных данных о платеже | - |
onSubmitClarificationForm | Подтверждение отправки дополнительных данных о платеже | - |
onRedirectIframe | Открытие страницы аутентификации (ACS URL) в объекте iframe | - |
onRedirectIframeComplete | Перенаправление пользователя со страницы аутентификации (ACS URL), открытой в объекте iframe | - |