Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 52 Next »

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

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



Описание:

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

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

Дополнительно рекомендуем ознакомиться с разделом Особенности токенов


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


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

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


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

Параметр

Значение

Описание

Особенности

Обязательно

action

SALE

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

Только одно значение

Да

async

"Y" или "N"

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

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

Нет

channel_id

String

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

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

Нет

client_key

String

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

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

Да

order_id

String

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

Max 32 символа

Да

order_amount

Number

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

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

1000.00

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

1000
1000.0
1,000.0
1,000.00

Да

order_currency

UAH

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

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

Да

order_description

String

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

Max 255 символов

Да

card_token

String

Токен карты

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

Да

payer_first_name

String

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

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

Нет

payer_last_name

String

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

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

Нет

payer_address

String

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

Max 256 символа

Нет

payer_country

String

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

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

Нет

payer_state

String

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

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

Нет

payer_city

String

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

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

Нет

payer_zip

String

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

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

Нет

payer_email

String

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

Указать значение из первоначального запроса на оплату, когда был получен токен.

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

Нет

payer_phone

Number

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

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

Нет

payer_ip

Number

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

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

Да

customer_wallet

String

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

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

Нет

term_url_3ds

String

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

Max 255 символов

Да

auth

"Y" или "N"

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

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

Нет

hash

String

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

md5(
  strtoupper(
    strrev(payer_email).
    client_pass.
    strrev(card_token)
  )
)

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

Да


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

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

 Пример запроса на PHP
<?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';
  $data['payer_email']='sale@gmail.com';
  $data['payer_ip']='213.186.115.164';
  $data['term_url_3ds']='http://google.com';
  $hash = md5(
            strtoupper(
              strrev($data['payer_email']).
              $client_pass.
              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="hash" value="<?=$hash?>" />
    </form>                                            
  </body>
</html>


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

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


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

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

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


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

Ответы будут поступать с наших 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

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

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

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

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

  • Basic Authorization

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

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

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

 Response при успешном списании
{
  "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

 Callback при успешном списании
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' => '********************************',
)

Для проверки достоверности полученного 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

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

 Response при неуспешном списании
{
  "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

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

 Callback при неуспешном списании
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' => '********************************',
)

Для проверки достоверности полученного 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

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

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

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

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

 Response о принятии запроса в обработку
{
  "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)

 Callback при успешном списании
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' => '********************************',
)

Для проверки достоверности полученного 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

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

 Callback при неуспешном списании
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' => '********************************',
)

Для проверки достоверности полученного 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

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


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

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


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

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

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

 Список ошибок и их решение

Ошибка

Причины

Решение

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

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

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

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

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

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

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

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.

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

  • No labels