note

Зміст

Зміст


note

Опис

Опис

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


note

Демо

Демо


note

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

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

  • Привести сайт / додаток до відповідності вимогам.
  • Провести інтеграцію відповідно до цього API методу.
  • Передати тех підтримці PSP Platon посилання для Callback.
  • Провести оплату використовуючи тестові реквізити / реальную карту (активується після підписання договору).
  • Отримати Callback та змінити статус оплати у вашій системі.

note

Вимоги

Вимоги


note

Обмеження

Обмеження

Відповідно до обмежень Apple, в цілях безпеки Apple Pay працює тільки:

Для роботи Google Pay в WebView необхідно виконати вимоги документації Google https://developer.android.com/guide/webapps/webview?hl=ru#BindingJavaScript


note

API параметри

API параметри

HTTP METHOD: POST

API ENDPOINT: https://secure.platononline.com/payment/auth

Параметр

Значення

Опис

Особливості

key

String

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

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

payment

CC

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

data

amount

Number

Сума до оплати

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

1000.00

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

1000
1000.0
1,000.0
1,000.00

currency

UAH

Валюта

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

description

String

Опис

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

Max 5000 символів (латиниця), 2500 (кирилиця).

recurring

Y

Створення токена картки

Для отримання rc_id та rc_token

Якщо токен не потрібен можете не передавати цей параметр.

url

String

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

Max 1024 символа (латиниця).

При відсутності можливості створити вашу власну сторінку успішної оплати можете використати нашу стандартну.

email

String

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

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

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

Max 255 символів.

phone

Number

Номер телефона платника

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

Max 255 символів.

req_token

Y

Створення токена картки

Для отримання card_token для подальшого використання в наступних методах:

Оплата в 1 клік по CARD_TOKEN

A2C виплата на картку по CARD_TOKEN

C2A оплата в 1 клік по CARD_TOKEN

Регулярний платіж по CARD_TOKEN

Якщо токен не потрібен можете не передавати цей параметр.

sign

String

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

md5(
  strtoupper(
    strrev($key).
    strrev($payment).
    strrev($data).
    strrev($url).
    strrev($PASSWORD)
  )
)

order

String

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

Max 255 символів.

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

error_url

String

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

Max 1024 символів.

При відсутності можливості створити вашу власну сторінку невдалої оплати можете використати нашу стандартну.

first_name

String

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

Max 50 символів (латиниця), 25 (кирилиця).

last_name

String

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

Max 50 символів (латиниця), 25 (кирилиця).

address

String

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

Max 255 символів (латиниця), 126 (кирилиця).

zip

String

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

Max 255 символів.

city

String

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

Max 255 символів (латиниця), 126 (кирилиця).

country

String

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

Стандарт ISO 3166-1 alpha-2

Max 2 символа.

state

String

Код штату, провінції або області платника

Обов'язковий параметр для країн US, CA, AU

Стандарт ISO 3166-2

Max 3 символа.

customer_wallet

String

Номер електронного гаманця платника

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

lang

UK
EN

Мова відображення платіжної форми

В приоритеті cookie в браузері клиента з параметром lang

Стандарт ISO 639-1

formid

String

Параметр додаткового налаштування

Max 255 символів.

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

String

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

Max 1024 символа в кожному ext полі (латиниця), 512 (кирилиця).


note

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

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

Запит відправляється тільки у варіанті HTML Form

Content-Type: form-data або x-www-form-urlencoded

Запит має відправлятися з браузера платника Client - Server, а не з сервера мерчанта Server - Server.

<?php
    $key = '***';
    $pass = '*******';
    $payment = 'CC';
    $data = base64_encode(
                json_encode(
                    array(
                        'amount' => '100.00',
                        'description' => 'Test',
                        'currency' => 'UAH'
                    )
                )
            );
    $req_token = 'Y';
    $url = 'http://google.com';
    $sign = md5(
                strtoupper(
                    strrev($key).
                    strrev($payment).
                    strrev($data).
                    strrev($url).
                    strrev($pass)
                )
            );
?>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Payment</title>
    </head>
    <body onload="javascript:document.forms[0].submit()">
        <form action="https://secure.platononline.com/payment/auth" method="post">
            <input type="hidden" name="payment" value="<?=$payment?>" />
            <input type="hidden" name="key" value="<?=$key?>" />
            <input type="hidden" name="url" value="<?=$url?>" />
            <input type="hidden" name="data" value="<?=$data?>" />
            <input type="hidden" name="req_token" value="<?=$req_token?>" />
            <input type="hidden" name="sign" value="<?=$sign?>" />
        </form>                                         	
    </body>
</html>

Запит відправляється тільки у варіанті HTML Form

Content-Type: form-data або x-www-form-urlencoded

Запит має відправлятися з браузера платника Client - Server, а не з сервера мерчанта Server - Server.

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Payment</title>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
    </head>
    <body>
        <form id="paymentForm" action="https://secure.platononline.com/payment/auth" method="post">
            <input type="hidden" name="payment" id="payment" />
            <input type="hidden" name="key" id="key" />
            <input type="hidden" name="url" id="url" />
            <input type="hidden" name="data" id="data" />
            <input type="hidden" name="req_token" id="req_token" />
            <input type="hidden" name="sign" id="sign" />
        </form>

        <script>
            window.onload = function() {
                var key = '***';
                var pass = '********';
                var payment = 'CC';
                var data = btoa(JSON.stringify({
                    'amount': '100.00',
                    'description': 'Test',
                    'currency': 'UAH'
                }));
                var req_token = 'Y';
                var url = 'http://google.com';

                var sign = CryptoJS.MD5(
                    key.split('').reverse().join('').toUpperCase() +
                    payment.split('').reverse().join('').toUpperCase() +
                    data.split('').reverse().join('').toUpperCase() +
                    url.split('').reverse().join('').toUpperCase() +
                    pass.split('').reverse().join('').toUpperCase()
                ).toString();

                document.getElementById("payment").value = payment;
                document.getElementById("key").value = key;
                document.getElementById("url").value = url;
                document.getElementById("data").value = data;
                document.getElementById("req_token").value = req_token;
                document.getElementById("sign").value = sign;

                document.getElementById("paymentForm").submit();
            };
        </script>
    </body>
</html>

Postman Collection


note

Тестування

Тестування


note

Час платіжної сесії

Час платіжної сесії

Стандартно у платника буде 15 хв для проведення оплати. Це означає, що на 15 хвилину та 1 секунду оплата стане не доступною та приведе до помилки. Відлік починається з моменту відкриття платіжної форми.

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

Якщо у вас є потреба в іншому проміжку, по вашому запиту можна налаштувати час платіжної сесії з наявних варіантів:

  • 10 хв

  • 30 хв

  • 75 хв


note

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

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


note

Callback

Callback

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

url = https://www.google.com/

order = 12345

Клієнта відправить після успішної оплати на https://www.google.com/?order=12345

При невдалій оплаті:

При невдалій оплаті Callback не відправляється.


note

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

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