Верифікація картки (Server - Server)

Зміст

 


Опис

 

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

Верифікація картки використовується для:

  • Подтвердження особи власника картки

  • Отриманя CARD_TOKEN для наступних виплат та оплат.

Одну картку можна верифікувати декілька разів. Всі CARD_TOKEN отримані при кожній верифікації будуть різні та активні для подальшого використання.


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

 

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

Вимоги

 


API параметри

 

HTTP METHOD: POST

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

Параметр

Значення

Опис

Особливості

Параметр

Значення

Опис

Особливості

action
обов'язковий

SALE

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

 

client_key
обов'язковий

String

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

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

channel_id
обов'язковий

VERIFY_ZERO

Ознака нульової верифікації

 

order_id
обов'язковий

String

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

Max 32 символи

order_amount
обов'язковий

Number

Сума оплати

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

0.40

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

0
1
1.0
1,0
1,00

order_currency
обов'язковий

UAH

Валюта

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

order_description
обов'язковий

String

Опис

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

Max 255 символів

payer_ip
обов'язковий

Number

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

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

IPv6 не підтримується

term_url_3ds
обов'язковий

String

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

Max 255 символів

card_numberобов'язковий

Number

Повний номер картки

В форматі "ХХХХХХХХХХХХХХХХ"
16 символів

card_exp_month
обов'язковий

Number

Місяць закінчення терміну дії картки

В форматі "ХХ"
2 символи

card_exp_year
обов'язковий

Number

Рік закінчення терміну дії картки

В форматі "ХХХХ"
4 символи

card_cvv2
обов'язковий

Number

CVV код

В форматі "ХХХ"
3 символи

payer_email
обов'язковий

String

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

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

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

Max 255 символів

payer_phone
обов'язковий

Number

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

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

req_token
обов'язковий

Y
N

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

Для отримання card_token

recurring_init
обов'язковий

Y
N

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

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

hash
обов'язковий

String

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

md5( strtoupper( strrev($email). $client_pass. strrev( substr($card_number,0,6). substr($card_number,-4) ) ) )

auth
не обов'язковий

Y
N

HOLD коштів

Стандартне значення N

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 символи

ext1, ext2, ext3, ext4, ext5, ext6, ext7, ext8, ext9, ext10
не обов'язковий

String

10 додаткових полей

 


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

 

<?php $client_pass = '***'; $data['action'] = 'SALE'; $data['client_key'] = '***'; $data['order_id'] = '546-4588'; $data['order_amount'] = '1.00'; $data['order_currency'] = 'UAH'; $data['order_description'] = 'test'; $data['card_number'] = '4111111111111111'; $data['card_cvv2'] = '159'; $data['card_exp_month'] = '01'; $data['card_exp_year'] = '2022'; $data['payer_first_name'] = 'Ivan'; $data['payer_last_name'] = 'Ivanov'; $data['payer_phone'] = '380111111111'; $data['payer_address'] = 'NA'; $data['payer_country'] = 'UA'; $data['payer_state'] = 'NA'; $data['payer_city'] = 'Kiev'; $data['payer_zip'] = '01001'; $data['payer_email'] = 'sale@gmail.com'; $data['payer_ip'] = '213.186.115.164'; $data['req_token'] = 'Y'; $data['recurring_init'] = 'N'; $data['term_url_3ds'] = 'https://google.com'; $data['hash'] = md5( strtoupper( strrev($data['payer_email']). $client_pass. strrev(substr($data['card_number'],0,6).substr($data['card_number'],-4)) ) ); $url = 'https://secure.platononline.com/post-unq/'; $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, http_build_query($data)); $result = curl_exec($crq); if (curl_errno($crq)) { echo 'ERROR: '.curl_error($crq); }else{ echo $result; } curl_close($crq);

Тестування

 

Цей API запит необхідно тестувати лише в бойовому режимі реальною карткою.


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

 


Callback

 


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

Цей режим працює як стандартне налаштування. Передавати async = N не потрібно.


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

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




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