Проект на GitHub: https://github.com/cloudipsp/checkout-vue
Дизайн платіжної сторінки можна стилізувати як звичайний HTML + CSS
Для цього за основу можна взяти вже готовий приклад, вихідний код якого (HTML/CSS/JavaScript) необхідно розмістити на своєму сайті:
При цьому необхідно підключити JavaScript SDK:
https://pay.hutko.org/latest/checkout.js
https://pay.hutko.org/latest/i18n/ru.js
А також стилі CSS:
https://pay.hutko.org/latest/checkout.css
Конфігурація платіжної сторінки здійснюється параметрами JavaScript коду:
var Options = { options: { methods: ['card', 'banklinks_eu','wallets'], cardIcons: ['mastercard', 'visa', 'mir', 'diners-club', 'american-express'], fields: false, title: 'my_title', link: 'https://shop.com', fullScreen: true, button: true, locales: ['en', 'uk'], email: true, tooltip: true, fee: true, }, params: { merchant_id: 1396424, required_rectoken: 'y', currency: 'USD', amount: 500, order_desc: 'my_order_desc', response_url: 'http://shop.com/thankyoupage', email: '', lang: 'uk' }, messages: { uk: { card_number: 'Номер картки', my_title: 'Призначення платежу', my_order_desc: 'Тестовий платіж' }, en: { card_number: 'Card number', my_title: 'Order description', my_order_desc: 'Test order' } } }
JavaScript конфігурація має таку структуру:
{ options: {}, regular: {}, recurring: {}, params: {}, messages: {}, validate: {} }
options - параметри налаштування візуальної частини платіжної сторінки
Назва параметра | Тип параметра | Значення за замовчуванням | Опис |
---|---|---|---|
methods | Array | [‘card’, ‘banklinks_eu’,’wallets’] |
Набір груп платіжних методів, такі як: картки, інтернет-банкінг, Apple Pay, Google Pay, локальні платіжні методи, direct debit. Підтримувані значення: ‘card’ – банківські картки Visa/MasterCard, ‘banklinks_eu’ – інтернет-банкінги та локальні платіжні методи (iDEAL, Giropay, MyBank, Blick та ін.), ‘wallets’ – Google і Apple Pay.. Який вигляд має платіжна сторінка з увімкненим максимальним набором платіжних методів можна подивитися в прикладі: Приклад з розширеним набором платіжних методів |
fast | Array | ||
cardIcons | Array | [‘mastercard’, ‘visa’] |
Набір відображуваних логотипів платіжних систем. Підтримувані значення: `mastercard`, `visa`, `prostir`, `diners-club`, `american-express`. |
fields | Boolean | false | Включає використання додаткових полів на платіжній сторінці, як показано в Прикладі з додатковими параметрами |
title | String | ||
link | String | ||
fullScreen | Boolean | true | Визначає, який вигляд матиме платіжна сторінка – компактний, всередині невеликої області сторінки (false) або на всю сторінку (true) |
button | Boolean | true | Визначає, чи показувати стандартну кнопку оплати ![]() |
locales | Array |
Вибір доступних локалізацій платіжної сторінки. Підтримувані значення: `uk`, `en`, `pl`, `lv`, `fr`, `cs`, `sk`. |
|
Boolean | false | Визначає, запитувати чи ні email платника. | |
tooltip | Boolean | true | |
apiDomain | String | ‘api.hutko.org’ | |
fee | Boolean | true | Відображає клієнтську комісію. |
css | String | Підтримувані значення: `bootstrap3`, `bootstrap4`, `foundation6`. |
regular - включає використання календаря платежів на платіжній сторінці, як показано в Прикладі з календарем платежів і в Прикладі з календарем платежів 2
Назва параметра | Тип параметра | Значення за замовчуванням | Опис |
---|---|---|---|
insert | Boolean | false | Включає календар платежів |
open | Boolean | false | Відобразити та розгорнути параметри вибору регулярності та частоти платежів платнику |
hide | Boolean | false | Приховати можливість платнику змінювати параметри календаря |
period | Array | [‘day’, ‘week’, ‘month’, ‘year’] |
Допустимі параметри регулярності платежу, які може змінити платник Підтримувані значення: `day`, `week`, `month`, `year`. |
recurring - параметризує календар платежів: задає регулярність, частоту, дату старту першого списання, дата завершення, суму регулярного списання
Назва параметра | Тип параметра | Значення за замовчуванням | Опис |
---|---|---|---|
every | Integer | 1 | Частота списань |
period | String | ‘month’ |
Регулярність списань Підтримувані значення: `day`, `week`, `month`, `year`. |
amount | Integer | 100 | Сума регулярних списань, якщо відрізняється від суми основного платежу |
start_time | String |
Дата першого списання. format YYYY-MM-DD |
|
end_time | String |
Дата завершення списань. format YYYY-MM-DD |
params - параметри замовлення, описані детально в основній документації API
Назва параметра | Тип параметра | Значення за замовчуванням | Опис |
---|---|---|---|
merchant_id | Integer | 1396424 | |
order_desc | String | Опис/призначення покупки | |
amount | Integer | 100 | |
currency | String | ||
response_url | String | Адреса сторінки мерчанта, на яку буде перенаправлено платника після оплати | |
lang | String | ‘en’ |
Мова платіжної сторінки. Підтримувані значення: ru – Русский |
required_rectoken | String | Підтримувані значення: `Y`, `N`, `y`, `n`. | |
verification | String | Підтримувані значення: `Y`, `N`, `y`, `n`. | |
verification_type | String | Підтримувані значення: `amount`, `code` | |
String | format email | ||
token | String | ||
offer | Boolean | false | |
custom | Object |
messages - локалізація повідомлень і підписів до елементів платіжної сторінки
{ messages: { {en}: { {id}: {value}, ... }, ... }, }
validate - локалізація помилок валідації полів форми введення даних
{ validate: { {en}: { {id}: {value}, ... }, ... }, }
Також за допомогою цієї реалізації є можливість отримання JavaScript колбеків з результатом платежу і кодом відмови. У цьому випадку додасться така конструкція:
var app = fondy("#app", Options) .$on("success", function(model) { console.log("success event handled"); var order_status = model.data.order.order_data.order_status; if (order_status == "approved") { console.log("Order is approved. Do somethng on approve..."); } }) .$on("error", function(model) { console.log("error event handled"); var order_status = model.data.order.order_data.order_status; var response_code = model.data.error.code; var response_description = model.data.error.message; if (order_status == "declined") { console.log( "Order is declined. Do somethng on decline... Last response code is: " + response_code + ", description: " + response_description ); } else if (order_status == "processing") { console.log( "Order is in processing. Last response code is: " + response_code + ", description: " + response_description ); } });
Приклад з отриманням JavaScript колбеків
Нижче представлені приклади готових дизайнів платіжних сторінок у різній стилізації.
Після першої успішної оплати на стороні hutko буде створено календар із запланованими регулярними платежами. Регулярність і частота задаються в параметрах платіжної сторінки.
Створюємо order на бекенді:
curl -i -X POST \ -H "Content-Type:application/json" \ -d \ '{ "request": { "server_callback_url": "http://myshop/callback/", "order_id": "TestOrder_JSSDK_v2", "currency": "USD", "merchant_id": 1396424, "order_desc": "Test payment", "lifetime" : 999999 "amount": 1000, "signature": "91ea7da493a8367410fe3d7f877fb5e0ed666490" } }' \ 'https://pay.hutko.org/api/checkout/token'
Отримуємо токен платежу:
{ "response":{ "response_status":"success", "token":"b40624e6c97306667a46bc4a9439eefd5c142a4e"} }
Завантажуємо платіжну сторінку, вказуючи token як параметр.