Цей функціонал буде активовано після вашого запиту в груповому чаті.


note

Зміст

Зміст


note

Опис

Опис

Цей функціонал дозволить розмістити на вашому боці інтерфейс оплати частинами для клієнтів Monobank.

Використовуючи цей розділ ви зможете реалізувати онлай та оффлайн оплату частинами.

Для використання в оффлайні вам необхідно інтегрувати це API до вашого ПЗ. Механізм взаємодії в такому випадку буде наступним:

  1. Клієнт в оффлайн магазині говорить, що хоче оплатити частинами Monobank.

  2. Менеджер просить назвати номер телефону прив'язаного до Monobank та вводить його разом з кількістю частин в вашому ПЗ, та відправляє запит відповідно до цього API методу.

  3. Клієнту на телефон в додаток Monobank надходить повідомлення з пропозицією про можливість взяття оплати частинами, яке він може прийняти / відхилити, збільшити кількість частин (від наданої мерчантом кількості частин) з додатковою платою з боку клієнта за тарифами Monobank.

  4. Після успішного підтвердження клієнтом в додатку до вас в систему буде відправлено коллбек з даними про платіж по результату якого менеджер може вибити чек та видати товар.

Мінімальна сума - 500 грн.

Максимальна сума - визначається Monobank та відображається в умовах та правилах Monobank.

Після відправки API запиту у платника буде 15 хв на прийняття рішення.

Цей функціонал працює в два етапи. При успішному запиті загальна сума потрапляє в холд, після чого необхідно буде провести підтвердження списання для зарахування коштів на ваш рахунок.

Підтвердження списання можливе декількома методами:

  1. Вручну в нашому особистому кабінеті.

  2. Налаштувати на боці PSP Platon автоматичне підтвердження списання в термін від 1 години до 29 днів, про що необхідно повідомити в груповий чат. В цьому випадку менеджеру мерчанта необхідно вручну перевіряти кінцевий статус оплати в особистому кабінеті PSP Platon. Фінальний статус успішнох оплати буде SETTLED CAPTURE SUCCESS.

  3. Налашатувати по API запиту підтвердження списання з холду під вашу бізнес-логіку використовуючи Підтвердження списання з HOLD.

Увага! Підтвердження списання з HOLD та повернення необхідно виконувати в повному обсязі суми кредиту. Часткове списання та часткове повернення заборонено.

Увага! Товар / послугу можна надавати лише після успішного підтвердження списання коштів.


note

Чекліст інтеграції

Чекліст інтеграції

  • Привести сайт / додаток до відповідності вимогам.
  • Передати тех підтримці PSP Platon посилання для Callback.
  • Повідомити тех підтримці PSP Platon ваші IP адреси серверів сайта або про те, що буде використовуватись додаток (в цьому випадку обмеження по IP будуть зняті).
  • Провести інтеграцію цього API методу.
  • Створити і відобразити клієнту форму для вводу номерат телефону, який прив'язаний до Monobank.
  • Відобразити клієнту вибір кількості частин за необхідності в проміжку від 3 до 25 платежів (включно).
  • Відправити API запит з вашого сервера / додатку відповідно до цього API методу.
  • Відобразити платнику сторінку очікування на якій клієнт буде поки не проведе дії в додатку Monobank. У клієнта є 15 хв на прийняття рішення.
  • Отримати Response або Callback зі статусом платежа PSP Platon після проведення платником дій в додатку Monobank.
  • Повідомити клієнту про успішність / не успішність оплати частинами.

note

Рекомендації

Рекомендації

Рекомендуємо клієнту самостійно вводити свій номер телефону в Monobank. Якщо у вас в системі вже є номер телефону клієнта, ми не рекомендуємо підставляти його, так як можлива ситуація коли у клієнта є декілька номерів телефону і той який був записаний у вас може не відповідати з фінансовим номером телефону клієнта у додатку Monobank.

Рекомендуємо відобразити повідомлення, що клієнту надійде push-повідомлення в додаток Monobank для ознайомлення з договором оплати частинами та прийнття рішення щодо погодження з умовами.

Рекомендуємо відобразити повідомлення, що клієнту необхідна активна картка Monobank.

Рекомендуємо відобразити повідомлення, що клієнту необхідно перевірити наявний розмір ліміту оплати частинами на відповідну суму замовлення.

Рекомендуємо відобразити повідомлення, що перше списання коштів з клієнта відбудеться одразу, тобто у клієнта має бути відповідна сума на основному балансі.


note

Best Practices

Best Practices

Ознайомтесь з PDF файлом з Best Practices як найкраще надати клієнтам інформацію про нову для ним можливість оплати частинами на вашому ресурсі:


note

Вимоги до сайту

Вимоги до сайту


note

API параметри

API параметри

HTTP METHOD: POST

API ENDPOINT: https://secure.platononline.com/post/

Параметр

Значення

Опис

Особливості

action

SALE_PART

Код платіжного метода

client_key

String

API ключ мерчанта

Ключ надається на пошту мерчанта

order_id

String

ID оплати в системі мерчанта

Max 32 символи

order_amount

Number

Сума оплати

Мінімальна сума оплати частинами Monobank - 500.00

Вірний варіант

1000.00

Невалідні варіанти

1000
1000.0
1,000.0
1,000.00

order_currency

UAH

Валюта

Оплата можлива лише в національній валюті гривні

order_description

String

Опис

Для кириличних символів необхідно використовувати формат UTF-8

Max 255 символів

payer_ip

Number

IP-адреса платника

В форматі "ХХХ.ХХХ.ХХХ.ХХХ"

IPv6 на даний момент не підтримується та за наявності буде приводити до помилки.

term_url_3ds

String

Посилання по якому буде відправлено платника після спроби оплати

Max 255 символів

payer_email

String

Пошта платника

Обов'язково валідна пошта.

Відсутність пробілів.

Max 255 символів

payer_phone

Number

Фінансовий номер телефону платника прив'язаний до Monobank

Обов'язковий формат телефону +380XXXXXXXXX

ext4

String

"{"available_parts_count":"n"}"

JSON з кількістю обраних частин від 3 до 25 (включно), наприклад "{"available_parts_count":"6"}"

channel_id

hash

String

Контрольний підпис

md5(
  strtoupper($pass).
  strrev($order_id)
)

async

Y
N

Включити асинхронний режим

В асинхронному режимі обов'язкове використання коллбеків.
Стандартне значення N

payer_first_name

String

Ім'я платника

Max 32 символи без пробілів

payer_last_name

String

Прізвище платника

Max 32 символи без пробілів

payer_address

String

Адреса платника

Max 256 символи
ВказатиNA, якщо немає даних

payer_country

String

Країна платника

Стандарт ISO 3166-1 alpha-2
В форматі "ХХ"
2 символа
Вказати NA, якщо немає даних

payer_state

String

Штат платника

Стандарт ISO 3166-2
В форматі "ХХ"
2 символа
Вказати NA, якщо немає даних

payer_city

String

Місто плателника

Max 32 символи
Вказати NA, якщо немає даних

payer_zip

String

Поштовий індекс платника

Max 32 символи
Вказати NA, якщо немає даних

ext1, ext2, ext3, ext5, ext6, ext7, ext8, ext9, ext10

String

10 додаткових полів

Max 1024 символи в кажному ext полі


note

Приклад запиту

Приклад запиту

<?php
  $client_pass = '***';
  $data['action'] = 'SALE_PART';
  $data['client_key'] = '***';
  $data['order_id'] = '546-4588';
  $data['order_amount'] = '1000.00';
  $data['order_currency'] = 'UAH';
  $data['order_description'] = 'test';
  $data['payer_first_name'] = 'Ivan';
  $data['payer_last_name'] = 'Ivanov';
  $data['payer_phone'] = '+380111111111';
  $data['payer_email'] = 'sale@gmail.com';
  $data['payer_ip'] = '213.186.115.164';
  $data['term_url_3ds'] = 'https://google.com';
  $data['ext4'] = '{"available_parts_count":"6"}';
  $data['hash'] = md5(
                    strtoupper($client_pass).
                    strrev($data['order_id'])
                  );

$url = 'https://secure.platononline.com/post/';
$crq = curl_init();
curl_setopt($crq, CURLOPT_URL, $url);
curl_setopt($crq, CURLOPT_HEADER, 0);
curl_setopt($crq, CURLOPT_POST, 1);
curl_setopt($crq, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($crq, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($crq, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($crq, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($crq);
if (curl_errno($crq)) {
  echo 'ERROR: '.curl_error($crq);
}else{
  echo $result;
}
curl_close($crq);

Postman Collection


note

Тестування

Тестування

Тестування рекомендовано проводити реальним номером телефону, який підключено до Monobank та має відповідний баласн для оплати частинами.

Якщо ви не маєте змоги робити це реальним номером телефону, то можете використати тестове середовище, але зверніть увагу, що його використання сильно відрізняється від реального використання так як не включає в себе використання додатку Monobank яке є обов'язковим при реальній оплаті. Нижче описано варіанти доступні для тестового середовища:

  • Успішне підтвердження заявки. Для цієї ситуації потрібно передати фейковий номер телефону, що закінчується на 1. У цьому випадку через 5 секунд буде кинуто callback про успішне затвердження заявки.

  • Заявка, що очікує підтвердження від клієнта. Для цієї ситуації необхідно передати фейковий номер телефону, що закінчується на 2.

  • Помилка підтвердження заявки через недостатній ліміт у клієнта. Для цієї ситуації потрібно передати фейковий номер телефону, що закінчується на 3. У цьому випадку через 5 секунд буде кинуто callback про відхилення заявки.

  • Заявка підтверджена клієнтом та очікує на підтвердження від магазину. Для цієї ситуації необхідно передати фейковий номер телефону, що закінчується на 4.


note

Перевірка платежів

Перевірка платежів


note

Callback

Callback


Синхронний режим

Стандартний режим роботи. Передавати async = N не потрібно.


Асинхронний режим

Цей режим активується при передачі async = Y. В цьому режимі є обов'язковим використання коллбеків.

Принципової різниці у використанні синхронного або асинхронного режимів немає. Вам необхідно вибрати в залежності від найбільш зручного варіанту реалізації саме під ваш проект.



note

Помилки запитів

Помилки запитів

Якщо в запиті буде вказано не фінансовий номер телефону клієнта (тобто той який не підв'язаний в Monobank) - буде помилка "decline_reason":"Phone not found in MONO"