Versions Compared

Key

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

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

Note

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

Table of Contents

Описание

Регулярный платеж позволяет проводить списание без участия плательщика.

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

Дополнительно рекомендуем ознакомиться с разделом /wiki/spaces/docs/pages/1323303006

Требования

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

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

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

Status
colourYellow
titleнет

client_key

String

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

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

Status
colourGreen
titleда

order_id

String

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

Max 32 символа

Status
colourGreen
titleда

order_amount

Number

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

Tip

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

1000.00

Warning

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

1000
1000.0
1,000.0
1,000.00

Status
colourGreen
titleда

order_currency

UAH

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

Info

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

Status
colourGreen
titleда

order_description

String

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

Max 255 символов

Info

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


Зміст

Table of Contents
minLevel1
maxLevel2
include
outlinefalse
indent0px
stylecircle
exclude
typelist
class
printablefalse

Опис

Регулярный платеж позволяет проводить списание без участия плательщика.

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

Дополнительно рекомендуем ознакомиться с разделом /wiki/spaces/docs/pages/1323303006


Требования


API параметри

HTTP METHOD: POST

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

Параметр

Значення

Опис

Особливості

action
card_token из коллбека первичной транзакции

Status
colourGreen
title

да

card_token

String

Токен карты

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

SALE

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

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

Status
colourGreen
title

да

payer_first_name

String

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

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

String

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

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

order_id

Status
colour

Yellow

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

Green
title

нет

payer_last_name

String

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

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

String

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

Max 32 символи

payer_country

String

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

order_amount

Status
colour

Yellow

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

Green
title

нет

payer_address

String

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

Max 256 символа

Status
colourYellow
titleнет

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

Number

Сума оплати

Tip

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

1000.00

Warning

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

1000
1000.0
1,000.0
1,000.00

order_currency

Status
colour

Yellow

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

Green
title

нет

payer_state

String

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

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

UAH

Валюта

Info

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

order_description

Status
colour

Yellow

Green
title

нет

payer_city

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

String

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

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

card_token

Status
colour

Yellow

payer_zip

Green
title

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

String

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

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

card_token з callback першої оплати

payer_email

Status
colour

Yellow

payer_email

Green
title

нет

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

String

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

Валидная почта

Status
colourGreen
titleда

payer_phone

Number

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

В формате “380XXXXXXXXX”
Max 32 символа

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

Info

Валідна пошта

Info

Без пробілів

payer_ip

Status
colour

Yellow

Green
title

нет

payer_ip

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

Number

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

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

Note

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

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

Status
colourGreen
title

да

customer_wallet

String

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

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

String

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

ext3

Status
colour

Yellow

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

нет

term_url_3ds

String

https://platon.ua

status

recurring

Ознака регулярної оплати

hash

ext3

recurring

Признак регулярного платежа

Status
colourGreen
titleда

hash

String

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

Status
colourGreen
title

да

auth

Y
N

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

Y или N (по умолчанию N)

Status
colourYellow
titleнет

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

String

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

Code Block
languagephp
md5(
  strtoupper(
    strrev($payer_email).
    $client_pass.
    strrev($card_token)
  )
)
Info

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

async

Status
colour

Green

Yellow
title

да

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

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

Expand
titleПример запроса на PHP
Code Block
languagephp
<?php $client_pass='***'; $data['action']='SALE'; $data['client_key']='***'; $data['order_id']='458-3453'; $data['order_amount']='1000.00'; $data['order_currency']='UAH'; $data['order_description']='test'; $card_token = '*****'; $data['payer_first_name']='Ivan'; $data['payer_last_name']='Ivanov'; $data['payer_phone']='+380111111111

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

Y
N

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

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

channel_id

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

String

Додатковий платіжний канал

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

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

payer_country

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

String

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

В форматі "ХХ"
Max 2 символи
Вкажіть NA, якщо немає даних

payer_state

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

String

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

В форматі "ХХ"
Max 2 символи
Вкажіть NA, якщо немає даних

payer_city

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

String

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

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

payer_zip

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

String

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

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

payer_phone

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

Number

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

В форматі “380XXXXXXXXX”
Max 32 символів

customer_wallet

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

String

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

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

auth

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

Y
N

HOLD коштів

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


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

Expand
titleПриклад запиту на PHP
Code Block
languagephp
<?php
  $client_pass='***';
  $data['payer_emailaction']='sale@gmail.comSALE';
  $data['payerclient_ipkey']='213.186.115.164***';
  $data['termorder_url_3dsid']='http://google.com458-3453';
  $data['ext3order_amount']='recurring1000.00';
  $hash = md5(
            strtoupper(
              strrev($data['order_currency']='UAH';
  $data['order_description']='test';
  $card_token = '*****';
  $data['payer_first_name']='Ivan';
  $data['payer_last_name']='Ivanov';
  $data['payer_phone']='+380111111111';
  $data['payer_email']).='sale@gmail.com';
              $client_pass.$data['payer_ip']='213.186.115.164';
  $data['term_url_3ds']='http://google.com';
  $data['ext3']='recurring';
  $hash = md5(
            strtoupper(
 strrev($card_token)             strrev($data['payer_email']).
          );  ?>  <!DOCTYPE html>
<html>$client_pass.
    <head>     <meta      strrev($card_token)
            )
          );
?>

<!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_token" value="<?=$card_token ?>" />
      <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_email" value="<?=$data['payer_email']?>" />
      <input type="hidden" name="payer_ip" value="<?=$data['payer_ip']?>" />
      <input type="hidden" name="term_url_3ds" value="<?=$data['term_url_3ds']?>" />
      <input type="hidden" name="ext3" value="<?=$data['ext3']?>" />
      <input type="hidden" name="hash" value="<?=$hash?>" />
    </form>                                            
  </body>
</html>
Iframe
scrollingno
srchttps://devplaton.com.ua/invoices/postman-test.html
frameborderhide
styleheight: 260px;

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

В целях тестирования используйте CARD_TOKEN полученный из коллбека при успешной транзакции с использованием наших тестовых реквизитов:

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

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

Работа с Callback

Info

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

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

Данный режим работает по умолчанию. Передавать async = N не нужно.

При успешной оплате (синхронный режим):

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"
}

Параметр

Описание

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

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,
  'hash' => '********************************',
)

Параметр

Описание

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

card_hash

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

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

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

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

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

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

Info

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

hash

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

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

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

При неуспешной оплате (синхронный
<?=$data['payer_last_name']?>" />
      <input type="hidden" name="payer_phone" value="<?=$data['payer_phone']?>" />
      <input type="hidden" name="payer_email" value="<?=$data['payer_email']?>" />
      <input type="hidden" name="payer_ip" value="<?=$data['payer_ip']?>" />
      <input type="hidden" name="term_url_3ds" value="<?=$data['term_url_3ds']?>" />
      <input type="hidden" name="ext3" value="<?=$data['ext3']?>" />
      <input type="hidden" name="hash" value="<?=$hash?>" />
    </form>                                            
  </body>
</html>

Iframe
scrollingno
srchttps://devplaton.com.ua/invoices/postman-test.html
frameborderhide
styleheight: 260px;

Тестування

В цілях тестування використовуйте card_token отриманий з коллбека успішної транзакції по одному з вказаних методів:

  • IE оплата карткою

  • Верифікація картки

  • C2A оплата

  • Виплата на картку по повному номеру картки


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

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

Callback

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

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

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

При успешній оплаті (синхронний режим):

Expand
titleResponse при неуспешном списанииуспішній оплаті
Code Block
languagejson
{
  "action":"SALE",
  "result":"DECLINEDSUCCESS",
  "status":"DECLINEDSETTLED",
  "order_id":"40920024385302",
  "trans_id":"2807628261-29879-99538"34099-19648",
  "descriptor":null,
  "trans_date":"2020-02-0325 2006:49:47",
  "decline_reason":"Declined by processing"
50:09"
}

Параметр

Описание

action

SALE

result

DECLINED

SUCCESS

status

DECLINED

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

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' => 'DECLINEDSUCCESS',
  'status' => 'DECLINEDSETTLED',
  'order_id' => '40920024385323',
  'trans_id' => '2807628261-2987947789-9953828578',
  'trans_date' => '2020-02-0325 2007:4912:4758',
  'decline_reasondescriptor' => 'Declined by processing'NULL,
  'hash' => '********************************',
)

status

DECLINED

Параметр

Описание

action

SALE

result

DECLINED

SUCCESS

status

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

order_id

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

trans_id

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

системе Platon

trans_date

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

descriptor

NULL

decline_reason

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

системе Platon

trans_date

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

descriptor

NULL

card_hash

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

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

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

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

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

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

Info

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

hash

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

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

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

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

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

Промежуточный ответ (асинхронный

При невдалій оплаті (синхронний режим):

Expand
titleResponse о принятии запроса в обработкупри невдалій оплаті
{
Code Block
languagejson
{
  "action":"SALE",
  "actionresult":"SALEDECLINED",
  "resultstatus":"ACCEPTEDDECLINED",
  "order_id":"43853024092002",
  "trans_id":"2826128076-3409929879-1964899538",
  "trans_date":"2020-02-2503 06:50:0920:49:47",
  "decline_reason":"Declined by processing"
}

Параметр

Описание

action

SALE

result

DECLINED

status

ACCEPTED

DECLINED

order_id

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

trans_id

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

trans_date

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

При успешной оплате (асинхронный режим):

descriptor

NULL

decline_reason

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

Зашифрованный токен карты для последующих транзакций по 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 'DECLINED',
  'descriptorstatus' => NULL'DECLINED',
  'recurringorder_tokenid' => '01e00c2b39bb3b933723307c442efd024092002',
  'cardtrans_tokenid' => '8ef3111ac1093f6ccb817acef7f0845601d0994689a5f57949f94b0d086c7fe228076-29879-99538',
  'hashtrans_date' => '********************************',
)
Info

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

Внимание! Если при первоначальном запросе на оплату, когда был получен токен не был указан email, то при проверке sing в подписи коллбека следует указать пустое значение для email.
2020-02-03 20:49:47',
  'decline_reason' => 'Declined by processing',
  'hash' => '********************************',
)

Параметр

Описание

action

SALE

result

SUCCESS

DECLINED

status

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

DECLINED

order_id

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

trans_id

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

trans_date

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

descriptor

NULL

recurring

decline_

token

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

card_token

reason

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

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, то при проверке sing в подписи коллбека следует указать пустое значение для 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

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

Просроченные токены

Note

Если в ответе на запрос вы получили одну из указанных ниже ошибок вам необходимо удалить токен как просроченный.

  • Invalid card_exp_month, card_exp_year

  • Invalid card_exp_month

  • Initial transaction too old

Warning

Данный CARD_TOKEN заблокированы и не подлежат восстановлению по причине блокировки / окончания действия банковской карты.

Tip

Необходимо получить новый CARD_TOKEN проведя верификацию или оплату.

Ошибки запросов

В ходе проведения запрос вы можете получить разные ошибки. Пожалуйста, ознакомьтесь со списком возможных ошибок, их причин и возможности решения.

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

Рекомендуем обратиться в тех саппорт Platon для проверки причины.
Expand
titleСписок ошибок и их решение

Ошибка

Причины

Решение

Response: {"result":"ERROR","error_message":"Account error"}

Ваш IP адрес не добавлен в наш белый список.

Обратитесь в тех поддержку для добавления вашего IP в белый список.

Данный функционал вам не подключен.

Обратитесь в тех поддержку для активации функционала.

Запрос отправлен не на нужную ссылку.

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

Response: {"result":"ERROR","error_message":"Card token not found for current client"}

Отправка запроса по CARD_TOKEN отключена для данного API ключа так как CARD_TOKEN был получен на другом ключе.

Обратитесь в тех поддержку для решения данной ситуации.

Response: {"result":"ERROR","error_message":"Incorrect hash"}

Неверно сформирована зашифрованная подпись.

Проверьте верность сформированной подписи. Если ошибку не нашли обратитесь в тех поддержку.

Добавлены параметры, которые не входят в данный запрос.

Проверьте список передаваемых параметров. Если ошибку не нашли обратитесь в тех поддержку.

Запрос был отправлен не с того API ключа по которому был получен RC_TOKEN

Рекомендуем заменить API ключ на тот, по которому был получен RC_TOKEN

Response: {"result":"ERROR","error_message":"Empty action"}

Параметр action заполнен не верно, пуст, или не на первом месте в списке параметров запроса.

Проверьте список передаваемых параметров. Если ошибку не нашли обратитесь в тех поддержку.

Response: {"result":"ERROR","error_message":"Order already exists"}

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

Заменить значение order_id на новое уникальное.

Response: {"result":"ERROR","error_message":"Recurring not supported"}

Токен больше не активен по причине завершения срока действия карты, блокировки карты, или блокировки токена.

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

Response: {"result":"ERROR","error_message":"Duplicate request"}

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

Рекомендуем проверить ваш механизм отправки запросов на наличие задвоения.

Response: {"result":"ERROR","error_message":"Incorrect card_token value"}

Запрос был отправлен менее чем через 10 минут после получения токена.

Рекомендуем настроить отправку запросов минимум через 10 минут после получения токена. Запрос по которому получена эта ошибка необходимо повторить.

В параметр card_token внесено неверное значение.

Рекомендуем проверить верность внесенных данных в поле card_token полученного из коллбека ранее. Запрос по которому получена эта ошибка необходимо повторить.

Response: {"result":"ERROR","error_message":"Not found card token"}

Запрос был отправлен менее чем через 10 минут после получения токена.

Рекомендуем настроить отправку запросов минимум через 10 минут после получения токена. Запрос по которому получена эта ошибка необходимо повторить.

В параметр card_token внесено неверное значение.

Рекомендуем проверить верность внесенных данных в поле card_token полученного из коллбека ранее. Запрос по которому получена эта ошибка необходимо повторить.

Response: {"result":"ERROR","error_message":"Service error"}

Ситуация требует внимания сотрудников Platon.

Рекомендуем обратиться в тех саппорт Platon для проверки причины.

Response: {"result":"ERROR","error_message":"Previous transaction not completed"}

Ситуация требует внимания сотрудников Platon.

для проверки достоверности коллбека

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

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


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

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

Проміжна відповідь (асинхронний режим):

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
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, то при проверке sing в подписи коллбека следует указать пустое значение для 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

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, то при проверке sing в подписи коллбека следует указать пустое значение для 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

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


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

Note

Якщо у відповіді на запит ви отримали одну з вказаних нижче помилок, вам необхідно видалити цей протермінований токен:

  • Invalid card_exp_month, card_exp_year

  • Invalid card_exp_month

  • Initial transaction too old

Warning

Ці CARD_TOKEN заблоковані та не підлягають відновленню по причині блокування / закінчення терміну дії картки.

Tip

Необхідно отримати новий CARD_TOKEN провівши нову оплату чи верифікацію.


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

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