Опис механізму роботи структурованого посилання для проведення оплати та налаштування періодичного автоплатежу
Терміни та визначення
| Термін | Визначення |
|---|---|
| Мерчант, Партнер | Організація, що уклала договір з Portmone.com про надання послуг з приймання платежів |
| Покупець, Клієнт | Відвідувач інтернет-магазину Мерчанта з метою ознайомлення з асортиментом товарів (послуг) та здійснення покупки |
| Картка, Платіжна картка | Платіжні картки міжнародних платіжних систем Visa, Mastercard та Національної платіжної системи ПРОСТІР |
| Авторизація | Процес надання прав доступу або інших повноважень Покупцеві, програмі або процесу |
| Особистий кабінет | Спеціалізований сайт із набором сторінок та інтерактивних форм, за допомогою якого авторизований користувач може отримувати необхідну інформацію та здійснювати інші операції у системі Portmone.com |
| РНО КПП (ІПН) клієнта | Реєстраційний номер облікової картки платника податків (РНОКПП) (раніше індивідуальний податковий номер (ІПН)) - це цифровий код, необхідний кожному платнику податків для обліку в фіскальних органах |
| НБУ | Національний банк України |
| Вихідні або святкові дні | Неробочі дні в Україні, протягом яких банк не здійснює банківські операції (встановлюються Кодексом законів про працю України та розпорядженням Кабінету міністрів України) |
| Бек-офіс | Спеціалізоване програмне забезпечення, що використовується співробітниками Portmone.com |
| IBAN | Міжнародний номер банківського рахунку (англ. International Bank Account Number) |
1. Загальний опис
Партнер, що бажає надати клієнтам можливість автоматичної періодичної (або разової) оплати за допомогою Portmone.com, повинен надати клієнтові посилання вигляду:
https://www.portmone.com.ua/r3/uk/autoinsurance?i=<параметри_оплати>,
яке містить у собі реквізити клієнта, що необхідні для його ідентифікації Партнером, параметри налаштування автоматичного списання та унікальний ідентифікатор Партнера у системі Portmone.com (більш детальна інформація наведена у розділі 2 "Формування параметрів оплати").
Переходячи за цим посиланням, клієнт потрапляє на сторінку з формою, де усі необхідні параметри вже заповнені та для оплати клієнту потрібно ввести тільки реквізити платіжної картки. За необхідності, Партнер може визначити поле або частину полів як такі, що можуть заповнюватись клієнтом самостійно. Для налаштування автоматичного списання з картки, згідно з графіком, що наданий Партнером, клієнт повинен погодитись з умовами автоматичної оплати (в такому випадку клієнту також буде автоматично сформований акаунт та Особистий кабінет у Portmone.com, у разі, якщо в клієнта немає акаунту в Portmone.com). У разі, якщо клієнт відмовився від реєстрації та налаштування автоплатежу, буде проведена тільки разова оплата.
Нижче наведений вигляд сторінки оплати на прикладі Партнера - страхової компанії.

Мал. 1. Приклад сторінки оплати

Мал. 2. Приклад відображення параметрів автоматичної оплати без редагування

Мал. 3. Приклад відображення параметрів автоматичної оплати з редагуванням
2. Формування параметрів оплати
Параметри оплати передаються у вигляді закодованого рядку в параметрі i GET-запиту на URL-адресу: https://www.portmone.com.ua/r3/uk/autoinsurance.
Для формування рядку використовуються наступні параметри:
| Параметр | Опис | Обов’язковий | Значення |
|---|---|---|---|
| v | Версія протоколу | Так | Завжди приймає значення "2" |
| payeeId | Унікальний ідентифікатор Партнера у системі Portmone.com | Так | Надається кожному Партнерові індивідуально при підключенні до системи Portmone.com |
| amount | Сума оплати. При наявності дробової частини використовується розділювач крапка ("."). Якщо передані параметри для автооплати – вказана сума буде використовуватись при автоматичних списаннях | Так | Наприклад: 100.50 |
| lang | Мова інтерфейсу платіжної системи | Ні | uk – українська мова, en – англійська (значення без задання – uk) |
| edit | Можливість для клієнта редагувати параметри автоматичної оплати. Якщо інше не було задане, редагувати неможливо | Ні | "Y" – можна редаг увати, "N" – не можна редагувати |
| description* | Коментар до замовлення/ опис призначення оплати | Ні | До 250 символів |
| attribute1* | Службове поле | Ні | Заповнюється на розсуд компанії |
| attribute2* | Службове поле | Ні | Заповнюється на розсуд компанії |
| attribute3* | Службове поле | Ні | Заповнюється на розсуд компанії |
| attribute4* | Службове поле | Ні | Заповнюється на розсуд компанії |
| billCurrency | Валюта проведення платежу | Ні | Можливі значення: UAH, USD, EUR, GBP, KZT (значення без задання – UAH) |
| billNumber | Номер замовлення (рахунку), що сплачується, у системі Партнера. Номер рахунку повинен бути унікальним у межах одного замовлення. Якщо замовлення з цим номером рахунку вже було сплачене, система Portmone.com відхилить транзакцію | Ні | До 120 символів |
| emailAddress | Адреса електронної пошти клієнта | Так | Наприклад: [email protected] |
| timeToLive | Крайній термін для виконання оплати клієнтом. Відлік починається з дати початку дії договору. Якщо параметр не переданий – термін оплати для клієнта не обмежується | Ні | Від 1 до 30 (в днях). Наприклад, якщо contractDate=20.01.2020, а timeToLive=1, то здійснити оплату можна буде до 20.01.2020 23:59:59 |
| contractDate | Дата початку дії договору | Ні | DD.MM.YYYY |
| limit | Дата закінчення дії договору | Ні | DD.MM.YYYY |
| successUrl | Адреса Інтернет-магазину (внутрішній URL мобільного додатку), на яку буде спрямовано Клієнта після успішного завершення платежу | Ні | Наприклад: https://portmone2.com/r3/ecommerce/test/master-test-form" |
| infoParams | Блок параметрів для додаткової інформації про клієнта, яка буде відображена при налаштуванні автоотплат | Ні | Див. структуру infoParams |
| settings | Блок параметрів для налаштування автоматичної оплати | Ні | Див. структуру settings |
Структура infoParams
| Параметр | Опис | Обов’язковий | Значення |
|---|---|---|---|
| phone | Номер телефону клієнта | Ні | 380ХХХХХХХХХ |
| birthDate | Дата народження клієнта | Ні | DD.MM.YYYY |
Структура settings
| Параметр | Опис | Обов’язковий | Значення |
|---|---|---|---|
| period | Періодичність автоматичних списань | Так | 1 – щомісячно 2 – щоквартально 3 – щопівроку 4 – щороку |
| payDate | День проведення автоматичного списання | Так | Приймає значення від 1 до 28 |
| startDate | Дата початку автоматичних списань. Якщо параметр не задано – автоматично проставиться поточна дата | Ні | DD.MM.YYYY |
| endDate | Дата закінчення автосписань. Якщо параметр не задано – автоматично проставиться поточна дата + 3 роки | Ні | DD.MM.YYYY |
Примітка: * – у реєстрі та при експорті фігурують значення параметрів
descriptionтаattribute1-4. Назва цих параметрів погоджується з менеджером компанії Portmone.com.
Зверніть увагу: перша оплата для валютних договорів буде проведена за курсом НБУ на поточний день (якщо курс на поточний день ще не встановлений, або оплата здійснюється у вихідні, то за останнім встановленим курсом). Автооплати будуть здійснюватися з 7.00 до 8.00 за курсом НБУ за попередній день, або за останнім встановленим курсом НБУ, якщо оплата здійснюється у вихідний або святковий день.
Приклад валідного json-об'єкту:
{
"v":"2",
"payeeId":"1185",
"lang":"uk",
"amount":"100.31",
"settings":
{ "period":"1",
"payDate":"5",
"startDate":"20.01.2020",
"endDate":"20.01.2023" },
"edit":"N",
"description":"40-0111-078-2-5770640",
"attribute1":"2019-08-01",
"attribute2":"Іванов Олександр Олександрович",
"attribute3":"Сплата страхових послуг згідно договору",
"attribute4":"2710",
"billNumber":"123-123-99",
"emailAddress":"[email protected]",
"timeToLive":"10",
"contractDate":"01.08.2019",
"limit":"10.09.2019",
"successUrl":"https://portmone2.com/r3/ecommerce/test/master-test-form"
}
Рядок із сформованим об'єктом необхідно стиснути за допомогою gzip, а потім закодувати за допомогою base64, результат буде значенням параметру i GET-запиту. Тобто, щоб отримати значення даного параметру, потрібно виконати перетворення:
i = base64(gzip(json_encode(data)))
де data – вихідні дані платника та параметри оплати.
Приклад коду на PHP, який виконує це перетворення:
$source = '{
"v":"2",
"payeeId":"1185",
"lang":"uk",
"amount":"100.31",
"settings":{
"period":"1",
"payDate":"5",
"startDate":"20.01.2020",
"endDate":"20.01.2023"
},
"edit":"N",
"description":"40-0111-078-2-5770640",
"attribute1":"2019-08-01",
"attribute2":"Іванов Олександр Олександрович",
"attribute3":"Сплата страхових послуг згідно договору",
"attribute4":"2710",
"billNumber":"123-123-99",
"emailAddress":"[email protected]",
"timeToLive":"10",
"contractDate":"01.08.2019",
"limit":"10.09.2019",
"successUrl":"https://portmone2.com/r3/ecommerce/test/master-test-form"
}';
$i = base64_encode(gzencode($source));
$url = ‘https://www.portmone.com.ua/r3/uk/autoinsurance?i=’ . $i;
//$url тепер містить адресу структурованого посилання для видачі клієнту
3. Брендування платіжної сторінки
Зовнішній вигляд сторінки оплати можна налаштувати в Особистому кабінеті Portmone для мерчантів або звернувшись до менеджера та надавши параметри для брендування.
Типи брендування:
- portmone – значення без задання (стандартний стиль Portmone.com, див. мал. 4);
- brand – повна стилізація сторінки для Партнера (див. мал. 5);
- co-brand – логотип Партнера на сторінці наведений разом з логотипом Portmone.com (див. мал. 6);
- light – версія для відображення у вигляді фрейму (див. мал. 7)
Параметри брендування:
| Параметр | Опис | Тип брендування, для якого може бути застосований параметр |
|---|---|---|
| logo | Містить посилання на логотип партнера. Підтримує тільки посилання з https схемою. Формат зображення тільки SVG, PNG. Рекомендується використовувати зображення з мінімальним відступом сюжету від усіх країв | brand, co-brand |
| logoWidth | Параметр, що визначає ширину логотипу. Необхідно вводити у вигляді "100px", максимальне рекомендоване значення 300px | brand, co-brand |
| logoHeight | Параметр, що визначає висоту логотипу. Необхідно вводити у вигляді "100px", максимальне рекомендоване значення 50px (для формату PNG максимальна висота – 53px) | brand, co-brand |
| backgroundColorHeader | Встановлює колір секції header на сторінці. Формат вводу – HEX (наприклад, #ff0000) | brand, light |
| backgroundColorButtons | Встановлює колір кнопок. Формат вводу – HEX (наприклад, #ff0000) | brand, light |
| colorTextAndIcons | Встановлює колір тексту та іконок. Формат вводу – HEX (наприклад, #ff0000) | brand, light |
| bcMain | Визначає колір фону сторінок. Формат вводу – HEX (наприклад, #ff0000) | brand, light |
Зовнішній вигляд сторінки оплати з різними типами брендування:

Мал. 4. Стандартний стиль Portmone.com (тип брендування – portmone)

Мал. 5. Повна стилізація сторінки для партнера (тип брендування – brand)

Мал. 6. Логотип партнера на сторінці наведений разом з логотипом Portmone.com (тип брендування – co-brand)

Мал. 7. Версія для відображення у вигляді фрейму на сайті партнера (тип брендування – light)
4. Повідомлення Партнера про оплату
Можливе моментальне повідомлення Партнера відразу після оплати надсиланням листа на email-адресу (або декілька адрес), обговорену з Партнером.