Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Note

Данный метод требует наличия PCI DSS сертификата или PCI Compliance (сканирование) .

Info

Этот функционал будет активирован после вашего запроса в групповом чате. Также обязательно сообщите IP адреса, с которых будут отправляться запросы для добавления
в белый список.

Note

Ваш сайт должен работать по схеме HTTPS и поддерживать протокол TLS 1.2.

Table of Contents

Описание

Данный функционал позволяет вам разместить платежную форму на вашей стороне, с вашим уникальным дизайном, и без перехода плательщика на нашу форму ввода карточных данных.

Верификация карты используется кредитными организациями для:

  • Подтверждения личности владельца карты

  • Получения токенов RC_TOKEN и CARD_TOKEN для последующих выплат и списаний. Детальнее в разделе /wiki/spaces/docs/pages/1323303006

Note

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

Требования к сайту

API параметры запроса

HTTP METHOD:

Status
colourGreen
titlePOST

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

Параметр

Значение

Описание

Особенности

Обязательно

action

SALE

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

Status
colourGreen
titleДа

async

"Y" или "N"

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

В асинхронном режиме обязательное использование коллбеков.
По умолчанию значение "N"

Status
colourYellow
titleнет

channel_id

String

Дополнительный платежный канал

Info

Значение “VERIFY_ZERO“ для нулевой верификации.

Info

Значение “VERIFY“ для обычной верификации со списанием.

Status
colourGreen
titleДа

client_key

String

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

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

Status
colourGreen
titleДа

order_id

String

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

Max 32 символа

Status
colourGreen
titleДа

order_amount

1.00

Сумма платежа

Info

Указать 1.00 грн. Фактического списания не будет при нулевой верификации.

Warning

Запрещено указывать 0.

Status
colourGreen
titleДа

order_currency

UAH

Валюта платежа

Info

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

Status
colourGreen
titleДа

order_description

String

Описание платежа

Note

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

Max 255 символов

Status
colourGreen
titleДа

payer_first_name

String

Имя плательщика

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

Status
colourYellow
titleнет

payer_last_name

String

Фамилия плательщика

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

Status
colourYellow
titleнет

payer_address

String

Адрес плательщика

Max 256 символа
Укажите "NA", если нет данных

Status
colourYellow
titleнет

payer_country

String

Страна плательщика

Стандарт ISO 3166-1 alpha-2
В формате "ХХ"
2 символа
Укажите "NA", если нет данных

Status
colourYellow
titleнет

payer_state

String

Штат плательщика

Note

Обязательный параметр для стран US, CA, AU

Стандарт ISO 3166-2
В формате "ХХ"
2 символа
Укажите "NA", если нет данных

Status
colourYellow
titleнет

payer_city

String

Город плательщика

Max 32 символа
Укажите "NA", если нет данных

Status
colourYellow
titleнет

payer_zip

String

Почтовый индекс плательщика

Max 32 символа
Укажите "NA", если нет данных

Status
colourYellow
titleнет

payer_email

String

Почта плательщика

Max 255 символа

Status
colourGreen
titleДа

payer_phone

Number

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

Note

Обязательный формат телефона 380…

Status
colourYellow
titleнет

payer_ip

Number

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

В формате

Зміст

Table of Contents
maxLevel2
indent0px
absoluteUrltrue
stylecircle

Опис

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

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

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

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

Note

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


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

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

Вимоги

Include Page
Вимоги до сайтів та додатків
Вимоги до сайтів та додатків

API параметри

HTTP METHOD: POST

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

Параметр

Значення

Опис

Особливості

action

Status
colourGreen
titleобов'язковий

SALE

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

client_key

Status
colourGreen
titleобов'язковий

String

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

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

channel_id

Status
colourGreen
titleобов'язковий

VERIFY_ZERO

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

order_id

Status
colourGreen
titleобов'язковий

String

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

Max 32 символи

order_amount

Status
colourGreen
titleобов'язковий

Number

Сума оплати

Tip

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

0.40

Warning

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

0
1
1.0
1,0
1,00

order_currency

Status
colourGreen
titleобов'язковий

UAH

Валюта

Info

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

order_description

Status
colourGreen
titleобов'язковий

String

Опис

Note

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

Max 255 символів

payer_ip

Status
colourGreen
titleобов'язковий

Number

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

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

Note

IPv6

на данный момент не поддерживается

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

term_url_3ds

Status
colourGreen
title

Да

customer_wallet

String

Номер електронного кошелька пользователя

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

Status
colourYellow
titleнет

term_url_3ds

String

Ссылка по которой будет отправлен клиент после успешной оплаты при прохождении 3DS

Max 255 символов

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

String

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

Max 255 символів

card_number

Status
colourGreen
title

Да

card_number

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

Number

Полный

Повний номер

карты

картки

В

формате

форматі "ХХХХХХХХХХХХХХХХ"
16

символов Status

символів

card_exp_month

Status
colourGreen
title

Да

card_exp_month

Number

Месяц окончания срока действия карты

В формате

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

Number

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

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

символаcard_exp_year

символи

card_exp_year

Status
colourGreen
title

Да

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

Number

Год окончания срока действия карты

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

В

формате

форматі "ХХХХ"
4

символа

символи

card_cvv2

Status
colourGreen
titleобов'язковий

Да

card_cvv2

Number

Проверочный код на карте

В формате

Number

CVV код

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

символа

символи

payer_email

Status
colourGreen
title

Да

req_token

"Y" или "N"

Для получения card_token

По умолчанию "N"

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

String

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

Info

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

Info

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

Max 255 символів

payer_phone

Status
colourGreen
title

Да

recurring_init

"Y" или "N"

Для получения rc_id и rc_token

По умолчанию "N"

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

Number

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

Info

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

req_token

Status
colourGreen
title

Да

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

authПо умолчанию "N"

Y

"Y" или "N"

Холдирование средств на карте плательщика

N

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

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

recurring_init

Status
colour

Yellow

Green
title

нет

hash

String

Контрольная подпись

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

Y
N

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

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

hash

Status
colourGreen
titleобов'язковий

String

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

Code Block
languagephp
md5(
  strtoupper(
    strrev(
email
$email).
    
client
$client_pass.
    strrev(
      substr(
card
$card_number,0,6).
      substr(
card
$card_number,-4)
    )
  )
)

auth

Status
colour

Green

Yellow
title

Да

Примеры запроса

Для просмотра примера раскройте список

Expand
titleПример запроса на PHP
Info

Content-Type: form-data или x-www-form-urlencoded

Code Block
languagephp
<?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';
  $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'] = 'N';
  $data['recurring_init'] = 'N';
  $data['term_url_3ds'] = 'https://google.com';
  $hash = md5(
            strtoupper(
              strrev(
                $data['payer_email']).
                ($client_pass).
                strrev(
                  substr($card_number,0,6).
                  substr($card_number,-4)
                )
              )
            );
?>

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>sale</title>
  </head>
  <body onload="javascript:document.forms[0].submit()">
    <form action="https://secure.platononline.com/post-unq/" method="post">
      <input type="hidden" name="action" value="<?=$data['action']?>" />
      <input type="hidden" name="client_key" value="<?=$data['client_key']?>" />
      <input type="hidden" name="order_id" value="<?=$data['order_id']?>" />
      <input type="hidden" name="order_amount" value="<?=$data['order_amount']?>" />
      <input type="hidden" name="order_currency" value="<?=$data['order_currency']?>" />
      <input type="hidden" name="order_description" value="<?=$data['order_description']?>" />
      <input type="hidden" name="card_number" value="<?=$card_number ?>" />
      <input type="hidden" name="card_cvv2" value="<?=$data['card_cvv2']?>" />
      <input type="hidden" name="card_exp_month" value="<?=$data['card_exp_month']?>" />
      <input type="hidden" name="card_exp_year" value="<?=$data['card_exp_year']?>" />
      <input type="hidden" name="payer_first_name" value="<?=$data['payer_first_name']?>" />
      <input type="hidden" name="payer_last_name" value="<?=$data['payer_last_name']?>" />
      <input type="hidden" name="payer_phone" value="<?=$data['payer_phone']?>" />
      <input type="hidden" name="payer_address" value="<?=$data['payer_address']?>" />
      <input type="hidden" name="payer_country" value="<?=$data['payer_country']?>" />
      <input type="hidden" name="payer_state" value="<?=$data['payer_state']?>" />
      <input type="hidden" name="payer_city" value="<?=$data['payer_city']?>" />
      <input type="hidden" name="payer_zip" value="<?=$data['payer_zip']?>" />
      <input type="hidden" name="payer_email" value="<?=$data['payer_email']?>" />
      <input type="hidden" name="payer_ip" value="<?=$data['payer_ip']?>" />
      <input type="hidden" name="req_token" value="<?=$data['req_token']?>" />
      <input type="hidden" name="recurring_init" value="<?=$data['recurring_init']?>" />
      <input type="hidden" name="term_url_3ds" value="<?=$data['term_url_3ds']?>" />
      <input type="hidden" name="hash" value="<?=$hash?>" />
    </form>                                             
  </body>
</html>
Iframe
scrollingno
srchttps://devplaton.com.ua/invoices/postman-test.html
styleheight: 260px;
frameborderhide

Тестирование

Тестирование нулевой верификации производиться только реальными картами.

Проверка платежей

Получить информацию о платежах можно несколькими способами:

Работа с Callback

Info

Рекомендуем ознакомиться с разделами:

Callback и Response (Синхронный режим)

Для просмотра примера раскройте список

Expand
titleПромежуточный Response при наличии проверки 3DS
Code Block
languagejson
{
  "action":"SALE",
  "result":"REDIRECT",
  "status":"3DS",
  "order_id":"6b51033e-3e58-42e0-8ec3-88c97388018b",
  "trans_id":"28738-47774-55067",
  "trans_date":"2020-04-20 12:12:57",
  "redirect_url":"https:\/\/acs.privatbank.ua\/pPaReqMC.jsp",
  "redirect_params":{
    "PaReq":"eJxVUllu2zAQvYqg\/4qUIlFUMGYgxykaoEqN2j4AIxGxUi2Olsb+K\/qTG+S3VygKpGhRtL0CdaMMHWUDSHDeLJw3Cxxty8L6rJo2r6uJ7TrUtlSV1lleXUzs1fLtG24fCViuG6VmC5X2jRKQqLaVF8rKs4k9lx\/VlRvw8ID7YRhFYcgDHrmeF\/KQc8apG\/jcFjCP0U\/AmElgIscD8gjxyyZdy6oTINOr6emZwCgWcCAjhFI1pzPBXB66jAF5gFDJUolpPF29P1k4xx8SZxUD2Sshrfuqa3aCUx\/II4C+KcS66zbtISGbQnZ1VeSVctK6BGJsQJ6ZzHsjtfjXNs9EMouv8e7w0uQy3p4t6HWy\/IT4ZALEeEAmOyU86lHqe9RyvUM8QQRkrwdZGhKmcoplPQDYmBzxaDGGlwrAdjc4jZ2IOJqeEKjtpq4UemALn2TIVJsK\/U3fDV\/0nf4x3OL7b7jRf\/Uv\/dvS\/\/Uf\/X34Otzqn9a5PO8L1Zq6nV4iQxMK5Lni43dmEmmHTfZdN2CMMz\/wzTj2OsMgx356B5TtKRgAxESRcdJk3BKUXm3PPfYf2CM=",
    "TermUrl":"https:\/\/secure.platononline.com\/3ds\/4de0025?operation_type=purchase&trans_id=28738-47774-55067&hash=*****************************************************************************"
  }
}

Параметры

Описание

action

SALE

result

REDIRECT

status

3DS

order_id

Уникальный ордер ID транзакции в системе мерчанта

trans_id

Уникальный ордер ID транзакции в системе Platon

trans_date

Время проведения транзакции в формате UTC (YYYY-MM-DD HH-MM-SS)

redirect_url

URL, на который должен быть перенаправлен плательщик

redirect_params

Строка параметров

Expand
titleПромежуточный Callback при наличии проверки 3DS
Code Block
languagephp
array (
  'action' => 'SALE',
  'result' => 'REDIRECT',
  'status' => '3DS',
  'order_id' => '6b51033e-3e58-42e0-8ec3-88c97388018b',
  'trans_id' => '28738-47774-55067',
  'trans_date' => '2020-04-20 12:12:57',
  'redirect_url' => 'https://acs.privatbank.ua/pPaReqMC.jsp',
  'redirect_params' => 
    array (
      'PaReq' => 'eJxVUllu2zAQvYqg/4qUIlFUMGYgxykaoEqN2j4AIxGxUi2Olsb+K/qTG+S3VygKpGhRtL0CdaMMHWUDSHDeLJw3Cxxty8L6rJo2r6uJ7TrUtlSV1lleXUzs1fLtG24fCViuG6VmC5X2jRKQqLaVF8rKs4k9lx/VlRvw8ID7YRhFYcgDHrmeF/KQc8apG/jcFjCP0U/AmElgIscD8gjxyyZdy6oTINOr6emZwCgWcCAjhFI1pzPBXB66jAF5gFDJUolpPF29P1k4xx8SZxUD2Sshrfuqa3aCUx/II4C+KcS66zbtISGbQnZ1VeSVctK6BGJsQJ6ZzHsjtfjXNs9EMouv8e7w0uQy3p4t6HWy/IT4ZALEeEAmOyU86lHqe9RyvUM8QQRkrwdZGhKmcoplPQDYmBzxaDGGlwrAdjc4jZ2IOJqeEKjtpq4UemALn2TIVJsK/U3fDV/0nf4x3OL7b7jRf/Uv/dvS//Uf/X34Otzqn9a5PO8L1Zq6nV4iQxMK5Lni43dmEmmHTfZdN2CMMz/wzTj2OsMgx356B5TtKRgAxESRcdJk3BKUXm3PPfYf2CM=',
      'TermUrl' => 'https://secure.platononline.com/3ds/4de0025?operation_type=purchase&trans_id=28738-47774-55067&hash=***************************************************
    ),
  'redirect_method' => 'POST',
  'hash' => '********************************',
)

Параметры

Описание

action

SALE

result

REDIRECT

status

3DS

order_id

Уникальный ордер ID транзакции в системе мерчанта

trans_id

Уникальный ордер ID транзакции в системе Platon

trans_date

Время проведения транзакции в формате UTC (YYYY-MM-DD HH-MM-SS)

redirect_url

URL, на который должен быть перенаправлен плательщик

redirect_params

Строка параметров

redirect_method

Метод передачи параметров (POST/GET)

hash

Зашифрованная подпись для проверки достоверности коллбека

Expand
titleResponse при успешном списании
Code Block
languagejson
{
  "action":"SALE",
  "result":"SUCCESS",
  "status":"SETTLED",
  "order_id":"4385302",
  "trans_id":"28261-34099-19648",
  "descriptor":null,
  "trans_date":"2020-02-25 06:50:09"
  "recurring_token":"01e00c2b39bb3b933723307c442efd02",
  "card_token":"8ef3111ac1093f6ccb817acef7f0845601d0994689a5f57949f94b0d086c7fe2"
}

Параметр

Описание

action

SALE

result

SUCCESS

status

SETTLED (PENDING, если в запросе было указано ‘auth’='Y')

order_id

Уникальный ордер ID транзакции в системе мерчанта

trans_id

Уникальный ордер ID транзакции в системе Platon

trans_date

Время проведения транзакции в формате UTC (YYYY-MM-DD HH-MM-SS)

descriptor

NULL

recurring_token

Зашифрованный токен карты для последующих транзакций по rc_token

card_token

Зашифрованный токен карты для последующих транзакций по card_token

Expand
titleCallback при успешном списании
Code Block
languagephp
array (
  'action' => 'SALE',
  'result' => 'SUCCESS',
  'status' => 'SETTLED',
  'order_id' => '4385323',
  'trans_id' => '28261-47789-28578',
  'trans_date' => '2020-02-25 07:12:58',
  'descriptor' => NULL,
  'recurring_token' => '01e00c2b39bb3b933723307c442efd02',
  'card_token' => '8ef3111ac1093f6ccb817acef7f0845601d0994689a5f57949f94b0d086c7fe2',
  'hash' => '********************************',
)
Info

Для проверки достоверности полученного callback, рекомендуем сверять подпись hash по формуле md5(strtoupper(strrev(email).client_pass.trans_id.strrev(substr(card,0,6).substr(card,-4)))).

Внимание! Если при запросе на оплату не был указан email, то при проверке hash в подписи коллбека следует указать пустое значение для email.

Параметр

Описание

action

SALE

result

SUCCESS

status

SETTLED (PENDING, если в запросе было указано ‘auth’='Y')

order_id

Уникальный ордер ID транзакции в системе мерчанта

trans_id

Уникальный ордер ID транзакции в системе Platon

trans_date

Время проведения транзакции в формате UTC (YYYY-MM-DD HH-MM-SS)

descriptor

NULL

recurring_token

Зашифрованный токен карты для последующих транзакций по rc_token

card_token

Зашифрованный токен карты для последующих транзакций по card_token

card_hash

Уникальное зашифрованное значение номера карты, которое будет возвращаться в коллбеке при оплате, верификации, погашении и выплате средств на карту.

Этот параметр даст вам возможность в вашей системе:

  • Привязать карту под клиента.

  • Проверить не использовал ли другой клиент эту же карту.

  • Проверить какие кредиты, товары и услуги погашаются данной картой.

  • Отслеживать мошенничество, когда клиент использует ту же карту с другого аккаунта, например, чтобы повторно воспользоваться акцией.

Info

Если вы хотите использовать данный функционал, пожалуйста, сообщите нам для его включения.

hash

Зашифрованная подпись для проверки достоверности коллбека

Code Block
md5(
  strtoupper(
    strrev(email).
    client_pass.
    trans_id.
    strrev(
      substr(card,0,6).
      substr(card,-4)
    )
  )
)
Expand
titleResponse при неуспешном списании
Code Block
languagejson
{
  "action":"SALE",
  "result":"DECLINED",
  "status":"DECLINED",
  "order_id":"4092002",
  "trans_id":"28076-29879-99538",
  "trans_date":"2020-02-03 20:49:47",
  "decline_reason":"Declined by processing"
}

Параметр

Описание

action

SALE

result

DECLINED

status

DECLINED

order_id

Уникальный ордер ID транзакции в системе мерчанта

trans_id

Уникальный ордер ID транзакции в системе Platon

trans_date

Время проведения транзакции в формате UTC (YYYY-MM-DD HH-MM-SS)

descriptor

NULL

decline_reason

Причина отмены транзакции

Expand
titleCallback при неуспешном списании
Code Block
languagephp
array (
  'action' => 'SALE',
  'result' => 'DECLINED',
  'status' => 'DECLINED',
  'order_id' => '4092002',
  'trans_id' => '28076-29879-99538',
  'trans_date' => '2020-02-03 20:49:47',
  'decline_reason' => 'Declined by processing',
  'hash' => '********************************',
)
Info

Для проверки достоверности полученного callback, рекомендуем сверять подпись hash по формуле md5(strtoupper(strrev(email).client_pass.trans_id.strrev(substr(card,0,6).substr(card,-4)))).

Внимание! Если при запросе на оплату не был указан email, то при проверке hash в подписи коллбека следует указать пустое значение для email.

Параметр

Описание

action

SALE

result

DECLINED

status

DECLINED

order_id

Уникальный ордер ID транзакции в системе мерчанта

trans_id

Уникальный ордер ID транзакции в системе Platon

trans_date

Время проведения транзакции в формате UTC (YYYY-MM-DD HH-MM-SS)

descriptor

NULL

decline_reason

Причина отмены транзакции

hash

Зашифрованная подпись для проверки достоверности коллбека

Code Block
md5(
  strtoupper(
    strrev(email).
    client_pass.
    trans_id.
    strrev(
      substr(card,0,6).
      substr(card,-4)
    )
  )
)

Callback и Response (Асинхронный режим)

Данный режим активируется при передаче async = Y. В этом режиме обязательно необходимо принимать callback на ваш callback url.

Для просмотра примера раскройте список

Expand
titleResponse о принятии запроса в обработку
Code Block
languagejson
{
  "action":"SALE",
  "result":"ACCEPTED",
  "order_id":"4385302",
  "trans_id":"28261-34099-19648",
  "trans_date":"2020-02-25 06:50:09"
}

Параметр

Описание

action

SALE

result

ACCEPTED

order_id

Уникальный ордер ID транзакции в системе мерчанта

trans_id

Уникальный ордер ID транзакции в системе Platon

trans_date

Время проведения транзакции в формате UTC (YYYY-MM-DD HH-MM-SS)

Expand
titleПромежуточный Callback при наличии проверки 3DS
Code Block
languagephp
array (
  'action' => 'SALE',
  'result' => 'REDIRECT',
  'status' => '3DS',
  'order_id' => '6b51033e-3e58-42e0-8ec3-88c97388018b',
  'trans_id' => '28738-47774-55067',
  'trans_date' => '2020-04-20 12:12:57',
  'redirect_url' => 'https://acs.privatbank.ua/pPaReqMC.jsp',
  'redirect_params' => 
    array (
      'PaReq' => 'eJxVUllu2zAQvYqg/4qUIlFUMGYgxykaoEqN2j4AIxGxUi2Olsb+K/qTG+S3VygKpGhRtL0CdaMMHWUDSHDeLJw3Cxxty8L6rJo2r6uJ7TrUtlSV1lleXUzs1fLtG24fCViuG6VmC5X2jRKQqLaVF8rKs4k9lx/VlRvw8ID7YRhFYcgDHrmeF/KQc8apG/jcFjCP0U/AmElgIscD8gjxyyZdy6oTINOr6emZwCgWcCAjhFI1pzPBXB66jAF5gFDJUolpPF29P1k4xx8SZxUD2Sshrfuqa3aCUx/II4C+KcS66zbtISGbQnZ1VeSVctK6BGJsQJ6ZzHsjtfjXNs9EMouv8e7w0uQy3p4t6HWy/IT4ZALEeEAmOyU86lHqe9RyvUM8QQRkrwdZGhKmcoplPQDYmBzxaDGGlwrAdjc4jZ2IOJqeEKjtpq4UemALn2TIVJsK/U3fDV/0nf4x3OL7b7jRf/Uv/dvS//Uf/X34Otzqn9a5PO8L1Zq6nV4iQxMK5Lni43dmEmmHTfZdN2CMMz/wzTj2OsMgx356B5TtKRgAxESRcdJk3BKUXm3PPfYf2CM=',
      'TermUrl' => 'https://secure.platononline.com/3ds/4de0025?operation_type=purchase&trans_id=28738-47774-55067&hash=***************************************************
    ),
  'redirect_method' => 'POST',
  'hash' => '********************************',
)

Параметры

Описание

action

SALE

result

REDIRECT

status

3DS

order_id

Уникальный ордер ID транзакции в системе мерчанта

trans_id

Уникальный ордер ID транзакции в системе Platon

trans_date

Время проведения транзакции в формате UTC (YYYY-MM-DD HH-MM-SS)

redirect_url

URL, на который должен быть перенаправлен плательщик

redirect_params

Строка параметров

redirect_method

Метод передачи параметров (POST/GET)

hash

Зашифрованная подпись для проверки достоверности коллбека

Expand
titleCallback при успешном списании
Code Block
languagephp
array (
  'action' => 'SALE',
  'result' => 'SUCCESS',
  'status' => 'SETTLED',
  'order_id' => '4385323',
  'trans_id' => '28261-47789-28578',
  'trans_date' => '2020-02-25 07:12:58',
  'descriptor' => NULL,
  'recurring_token' => '01e00c2b39bb3b933723307c442efd02',
  'card_token' => '8ef3111ac1093f6ccb817acef7f0845601d0994689a5f57949f94b0d086c7fe2',
  'hash' => '********************************',
)
Info

Для проверки достоверности полученного callback, рекомендуем сверять подпись hash по формуле md5(strtoupper(strrev(email).client_pass.trans_id.strrev(substr(card,0,6).substr(card,-4)))).

Внимание! Если при запросе на оплату не был указан email, то при проверке hash в подписи коллбека следует указать пустое значение для email.

Параметр

Описание

action

SALE

result

SUCCESS

status

SETTLED (PENDING, если в запросе было указано auth = Y)

order_id

Уникальный ордер ID транзакции в системе мерчанта

trans_id

Уникальный ордер ID транзакции в системе Platon

trans_date

Время проведения транзакции в формате UTC (YYYY-MM-DD HH-MM-SS)

descriptor

NULL

recurring_token

Зашифрованный токен карты для последующих транзакций по rc_token

card_token

Зашифрованный токен карты для последующих транзакций по card_token

card_hash

Уникальное зашифрованное значение номера карты, которое будет возвращаться в коллбеке при оплате, верификации, погашении и выплате средств на карту.

Этот параметр даст вам возможность в вашей системе:

  • Привязать карту под клиента.

  • Проверить не использовал ли другой клиент эту же карту.

  • Проверить какие кредиты, товары и услуги погашаются данной картой.

  • Отслеживать мошенничество, когда клиент использует ту же карту с другого аккаунта, например, чтобы повторно воспользоваться акцией.

Info

Если вы хотите использовать данный функционал, пожалуйста, сообщите нам для его включения.

hash

Зашифрованная подпись для проверки достоверности коллбека

Code Block
md5(
  strtoupper(
    strrev(email).
    client_pass.
    trans_id.
    strrev(
      substr(card,0,6).
      substr(card,-4)
    )
  )
)
Expand
titleCallback при неуспешном списании
Code Block
languagephp
array (
  'action' => 'SALE',
  'result' => 'DECLINED',
  'status' => 'DECLINED',
  'order_id' => '4092002',
  'trans_id' => '28076-29879-99538',
  'trans_date' => '2020-02-03 20:49:47',
  'decline_reason' => 'Declined by processing',
  'hash' => '********************************',
)
Info

Для проверки достоверности полученного callback, рекомендуем сверять подпись hash по формуле md5(strtoupper(strrev(email).client_pass.trans_id.strrev(substr(card,0,6).substr(card,-4)))).

Внимание! Если при запросе на оплату не был указан email, то при проверке hash в подписи коллбека следует указать пустое значение для email.

Параметр

Описание

action

SALE

result

DECLINED

status

DECLINED

order_id

Уникальный ордер ID транзакции в системе мерчанта

trans_id

Уникальный ордер ID транзакции в системе Platon

trans_date

Время проведения транзакции в формате UTC (YYYY-MM-DD HH-MM-SS)

descriptor

NULL

decline_reason

Причина отмены транзакции

hash

Зашифрованная подпись для проверки достоверности коллбека

Code Blockmd5( strtoupper( strrev(email). client_pass. trans_id. strrev( substr(card,0,6). substr(card,-4) ) ) )

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

Y
N

HOLD коштів

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

async

Status
colourYellow
titleне обов'язковий

Y
N

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

В асинхронном режиме обязательное использование коллбеков.
По умолчанию значение N

payer_first_name

Status
colourYellow
titleне обов'язковий

String

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

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

payer_last_name

Status
colourYellow
titleне обов'язковий

String

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

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

payer_address

Status
colourYellow
titleне обов'язковий

String

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

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

payer_country

Status
colourYellow
titleне обов'язковий

String

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

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

payer_state

Status
colourYellow
titleне обов'язковий

String

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

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

payer_city

Status
colourYellow
titleне обов'язковий

String

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

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

payer_zip

Status
colourYellow
titleне обов'язковий

String

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

Max 32 символи

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

Status
colourYellow
titleне обов'язковий

String

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


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

Expand
titleПриклад запиту на PHP
Code Block
languagephp
<?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);
Info

Postman Collection


Тестування

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


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

Expand
titleПовний список методів отримання результатів транзакцій
Include Page
Отримання результату транзакції
Отримання результату транзакції

Callback

Expand
titleОсобливості роботи з Callback
Include Page
Робота з Callback
Робота з Callback
Expand
titleБезпека
Include Page
Безпека
Безпека

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

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


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

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


Include Page
Callback / Response - SALE з 3DS
Callback / Response - SALE з 3DS

Include Page
Callback / Response - SALE без 3DS
Callback / Response - SALE без 3DS

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

Expand
titleСписок помилок, їх причин та можливих рішень
Include Page
Помилки та рішення при запитах
Помилки та рішення при запитах