Versions Compared

Key

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

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

Info

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

Info

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

Note

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

Table of Contents

Описание:

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

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

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

  • Получения токенов RC_TOKEN и CARD_TOKEN для последующих выплат и списаний. Детальнее в разделе Особенности токенов

Note

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

Note

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

Обязательные требования к сайту:

API Endpoint (cсылка для отправки запросов):

Запрос необходимо отправлять с сервера.

Code Block
https://secure.platononline.com/post-unq/

Описание параметров запроса:

Параметр

Значение

Описание

Особенности

Обязательно

action

SALE

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

Да

async

"Y" или "N"

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

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

Нет

channel_id

String

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

Info

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

Info

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

Да

client_key

String

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

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

Да

order_id

String

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

Max 32 символа

Да

order_amount

Number

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

Tip

Верный вариант

1000.00

Warning

Неверные варианты

1000
1000.0
1,000.0
1,000.00

Да

order_currency

UAH

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

Info

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

Да

order_description

String

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

Note

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

Max 255 символов

Да

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

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

Note

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

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

Да

payer_city

String

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

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

Да

payer_zip

String

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

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

Да

payer_email

String

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

Max 255 символа

Да

payer_phone

Number

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

Note

Если ваше юр. лицо открыто в Приватбанк и вы передаете в запросе телефон плательщика, то:

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

2) номер телефона должен соответствовать финансовому номеру привязанному к карте

Да

payer_ip

Number

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

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

Note

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

Да

customer_wallet

String

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

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

Нет

term_url_3ds

String

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

Max 255 символов

Да

card_number

Number

Полный номер карты

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

Да

card_exp_month

Number

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

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

Да

card_exp_year

Number

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

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

Да

card_cvv2

Number

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

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

Да

req_token

"Y" или "N"

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

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

Да

recurring_init

"Y" или "N"

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

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

Да

auth

"Y" или "N"

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

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

Нет

hash

String

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

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

Да

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

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

Expand
titleПример запроса на PHP
Code Block
languagephp
<?php
  $client_pass = '***';
  $data['action'] = 'SALE';
  $data['client_key'] = '***';
  $data['order_id'] = '546-4588';
  $data['order_amount'] = '1000.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

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

В целях тестирования используйте наши тестовые реквизиты.

Номер карты

Месяц / Год

CVV2

Описание результата

4111  1111  1111  1111

01 / 2022

Любые три цифры

Успешная оплата
без 3DS проверки

4111  1111  1111  1111

02 / 2022

Любые три цифры

Не успешная оплата
без 3DS проверки

4111  1111  1111  1111

05 / 2022

Любые три цифры

Успешная оплата
с 3DS проверкой

4111  1111  1111  1111

06 / 2022

Любые три цифры

Не успешная оплата
с 3DS проверкой

Дебагинг недоставленных Callback:

С целью дебагинга работы вашего сервера на ошибки получения Callback можем предоставить вам телеграм бот, куда будут поступать тело недоставленных вам Callback и информация об HTTP статусе.

Для настройки телеграм бота обратитесь в ваш груповой чат с просьбой подключить его вам.

Image Removed

Получение статуса транзакции в Callback и Response:

Tip

Ответы будут поступать с наших IP:
78.140.172.231
62.113.223.114
78.140.135.130
167.99.253.235
185.172.90.66
185.172.90.115
185.172.90.119

Info

Для получения коллбеков отправьте ссылку на ваш обработчик в ваш групповой чат. Ссылка для коллбеков прописывается на стороне Platon.

После отправки коллбека в ответ Platon должен получить код HTTP 200 OK. Если коллбек не удалось доставить будет произведено до 5 попыток повторной отправки в течение 60 секунд.

Опциональные варианты активация которых происходит по вашему обращению в групповом чате:

  • Коллбеки в формате JSON

  • Basic Authorization

  • Отправка Callback на несколько адресов (по умолчанию на один)

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

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

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

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

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

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

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

Данный режим активируется при передаче ‘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

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

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

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

Дополнительная проверка оплаты:

Для получения информации об оплате в случае, если ваша система не смогла принять Callback, Response или по другой причине, можно воспользоваться дополнительными API запросами проверки:

  • Получение статуса оплаты по ордеру мерчанта

  • Получение статуса оплаты по ордеру Platon

  • Получение деталей оплаты по ордеру Platon

    Зміст

    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обов'язковий

    String

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

    Max 255 символів

    card_number

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

    Number

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

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

    card_exp_month

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

    Number

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

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

    card_exp_year

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

    Number

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

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

    card_cvv2

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

    Number

    CVV код

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

    payer_email

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

    String

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

    Info

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

    Info

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

    Max 255 символів

    payer_phone

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

    Number

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

    Info

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

    req_token

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

    Y
    N

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

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

    recurring_init

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

    Y
    N

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

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

    hash

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

    String

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

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

    auth

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

    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
    Помилки та рішення при запитах
    Помилки та рішення при запитах