Skip to end of metadata
Go to start of metadata

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

Compare with Current View Page History

« Previous Version 57 Current »

Зміст


Опис

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

Со стороны плательщика проводится упрощенная оплата с вводом только CVV.

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

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


Демо


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

  • Привести сайт / додаток до відповідності вимогам.
  • Провести інтеграцію відповідно до цього API методу.
  • Передати тех підтримці PSP Platon посилання для Callback.
  • Провести оплату використовуючи CARD_TOKEN отриманий при оплаті / виплаті тестовими реквізитами / реальную карту (активується після підписання договору).
  • Отримати Callback та змінити статус оплати у вашій системі.

Вимоги

 SSL сертификат

У вашего сайта должен быть SSL сертификат.

Для проверки валидности и срока действия вашего SSL сертификата рекомендуем воспользоваться сервисом по ссылке.

 Логотипы платежных систем и PSP Platon

В футере вашего сайта необходимо разместить логотипы платежных систем и PSP Platon.

Скачайте подходящие под стиль вашего сайта варианты логотипов.

 TLS 1.2

Необходима поддержка протокола TLS не ниже версии 1.2


API параметри

HTTP METHOD: POST

API ENDPOINT: https://secure.platononline.com/payment/auth

Параметр

Значення

Опис

Особливості

key
ОБОВ'ЯЗКОВИЙ

String

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

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

payment
ОБОВ'ЯЗКОВИЙ

C2AT,CCT

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

amount
ОБОВ'ЯЗКОВИЙ

Number

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

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

1000.00

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

1000
1000.0
1,000.0
1,000.00

currency
ОБОВ'ЯЗКОВИЙ

UAH

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

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

description
ОБОВ'ЯЗКОВИЙ

String

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

Max 255 символов

order
НЕ ОБОВ'ЯЗКОВИЙ

String

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

Max 32 символа

email
ОБОВ'ЯЗКОВИЙ

String

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

Оставить пустое значение, если нет данных

phone
ОБОВ'ЯЗКОВИЙ

Number

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

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

card_token
ОБОВ'ЯЗКОВИЙ

String

Токен карты

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

url
ОБОВ'ЯЗКОВИЙ

String

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

Max 1024 символа

sign
ОБОВ'ЯЗКОВИЙ

String

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

md5(
  strtoupper(
    strrev($key).
    strrev($payment).
    strrev($amount).
    strrev($currency).
    strrev($description).
    strrev($url).
    strrev($password)
  )
)

error_url
НЕ ОБОВ'ЯЗКОВИЙ

String

Ссылка по которой будет отправлен плательщик после 5 неудачных попыток оплаты

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

first_name
ОБОВ'ЯЗКОВИЙ

String

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

Max 32 символа

last_name
ОБОВ'ЯЗКОВИЙ

String

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

Max 32 символа

address
НЕ ОБОВ'ЯЗКОВИЙ

String

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

Max 255 символа

zip
НЕ ОБОВ'ЯЗКОВИЙ

String

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

Max 32 символа

city
НЕ ОБОВ'ЯЗКОВИЙ

String

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

Max 32 символа

country
НЕ ОБОВ'ЯЗКОВИЙ

String

Двухзначный код страны плательщика

Стандарт ISO 3166-1 alpha-2

state
НЕ ОБОВ'ЯЗКОВИЙ

String

Код штата, провинции или области плательщика

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

Стандарт ISO 3166-2

Значение NA если нет штата

lang
НЕ ОБОВ'ЯЗКОВИЙ

UK
RU
EN

Язык отображения формы

В приоритете настройка языка браузера плательщика

formid
НЕ ОБОВ'ЯЗКОВИЙ

String

Параметр дополнительной настройки

Max 255 символов

ext1, ext2, ext3, ext4
НЕ ОБОВ'ЯЗКОВИЙ

String

Дополнительные поля

Max 1024 символа в каждом ext поле


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

 Приклад запиту на PHP
<?php 
  $data['key'] = '***';
  $data['password'] = '***';
  $data['payment'] = 'C2AT,CCT';
  $data['amount'] = '400.30';
  $data['currency'] = 'UAH';
  $data['description'] = 'Test DEBIT operation by Platon';
  $data['url'] = 'https://www.google.com.ua';
  $data['order'] = 'ABC123';
  $card_token = '******';
  $sign = md5(
            strtoupper(
              strrev($data['key']).
              strrev($data['payment']).
              strrev($data['amount']).
              strrev($data['currency']).
              strrev($data['description']).
              strrev($data['url']).
              strrev($data['password'])
              ))
?>

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>debi</title>
  </head>
  <body onload="javascript:document.forms[0].submit()">
    <form action="https://secure.platononline.com/payment/auth" method="post">
      <input type="hidden" name="key" value="<?=$data['key']?>" /> 
      <input type="hidden" name="payment" value="<?=$data['payment']?>" />
      <input type="hidden" name="amount" value="<?=$data['amount']?>" />
      <input type="hidden" name="card_token" value="<?=$card_token?>" />
      <input type="hidden" name="currency" value="<?=$data['currency']?>" />
      <input type="hidden" name="description" value="<?=$data['description']?>" />
      <input type="hidden" name="url" value="<?=$data['url']?>" />
      <input type="hidden" name="order" value="<?=$data['order']?>" />
      <input type="hidden" name="sign" value="<?=$sign?>" />
    </form>
  </body>
</html>

Тестування

В цілях тестування використайте CARD_TOKEN отриманий в callback при оплаті / виплаті.


Час платіжної сесії

Стандартно у платника буде 15 хв для проведення оплати. Це означає, що на 15 хвилину та 1 секунду оплата стане не доступною та приведе до помилки. Відлік починається з моменту відкриття платіжної форми.

 Альтернативний час платіжної сесії

Стандартний проміжок часу 15 хв є результатом багатоьох тестів та більш чим необхідно достатній для проведення оплати.

Якщо у вас є потреба в іншому проміжку, по вашому запиту можна налаштувати час платіжної сесії з наявних варіантів:

  • 10 хв

  • 30 хв

  • 75 хв


Callback

 Особливості роботи з Callback

URL для Callback

Для отримання Callback відправте URL на ваш обробник в груповий чат з вказанням API ключа для якого потрібно прописати посилання. Посилання для Callback вказується на боці PSP Platon.


IP адреси

Callback будуть надходити з IP:
78.140.172.231
78.140.135.130
167.99.253.235
62.113.223.114
62.113.223.116
212.83.61.161
185.172.90.66
185.172.90.74
185.172.90.75
185.172.90.115
185.172.90.119


Очікувана відповідь на Callback

Після відправки Callback у відповідь PSP Platon має отримати HTTP код 200.


Помилки при відправці Callback

Якщо Callback не вдалося відправити або було отримано не HTTP код 200, будуть проведені додаткові повторні спроби відправки в проміжках часу 1 хв, 5 хв, 10 хв, 15 хв, 30 хв, 60 хв.


Перевідправка Callback

Для перевідправки Callback прохання повідомити в груповий чат список необхідних ордерів.

 Безпека

Увага! Рекоменлації цього розділу допоможуть запезпечити безпеку від шахрайських дій пов'язаних з вашим сайтом та транзакціями.


Довірені IP

Для забезпечення додаткової безпеки рекомендуємо опціонально додати в білий список доступів POST запити тільки з наших довірених IP:
78.140.172.231
78.140.135.130
167.99.253.235
62.113.223.114
62.113.223.116
212.83.61.161
185.172.90.66
185.172.90.74
185.172.90.75
185.172.90.115
185.172.90.119


Секретність API доступів

Не тримайте у відкритому доступі API ключ та API пароль, а також не надавайте обидва ці параметри в групові робочі чати, в тому числі з нами. Для перевірки деталей представники PSP Platon можуть попросити у вас лише API ключ, пароль треба тримати в таємниці.


Секретність кабінету

Не розголошуйте логін та пароль від вашого особистого кабінету третім особам. У випадку якщо доступ був втрачений зверніться в груповий чат. Пароль від особистого кабінету діє 30 днів. Рекомендуємо оновлювати пароль до закінчення терміну дії в 30 днів.


Секретність посилання для Callback

Не залишайте посилання для Callback у відкритому доступі на вашому ресурсі.


Сторінка успішної оплати не гарантія успіху оплати

Не використовуйте факт переходу платника на сторінку успіщної оплати як признак успішної оплати. Статус транзакції та деталі оплати необхідно отримати тільки в Callback або в особистому кабінеті PSP Platon.


Звірка даних в Callback

При отриманні від нас Callback про успішну оплату рекомендуємо проводити на вашому боці додаткову перевірку суми та ордера з Callback на відповідність первоначальної суми та ордера у вашій базі даних, які були вказані при створенні замовлення.

При успішній оплаті C2A

 Приклад Callback при успішній оплаті по C2A
array (
  'id' => '28270-42158-64788',
  'type' => 'DEBIT',
  'order' => '3522743',
  'status' => 'DEBIT',
  'card' => '****************',
  'description' => 'Payment',
  'amount' => '220.00',
  'total' => '220.00',
  'currency' => 'UAH',
  'name' => ' ',
  'email' => NULL,
  'country' => NULL,
  'state' => NULL,
  'city' => NULL,
  'address' => NULL,
  'date' => '2020-02-26 08:04:16',
  'ip' => '46.133.60.119',
  'sign' => '********************************',
  'card_token' => 'b2641381d45e26c4ef90da14c61537f2983504de73711be0f975d301e1dfd29a',
  'fee_type' => 'TRANSACTION',
  'fee' => '0.5',
)

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

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

Параметр

Описание

id

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

type

DEBIT

order

Ордер ID транзакции в системе мерчанта. Если параметр не передавался система Platon присвоит его самостоятельно

status

DEBIT

card

Маска карты в формате ХХХХХХ****ХХХХ

description

Описание

amount

Сумма списания

commission

Сумма комиссии

total

Сумма списания и комиссии

currency

Валюта транзакции

name

Сума передаваемых параметров first_name и last_name

email

E-mail плательщика

country

Код страны плательщика (2-а знака)

state

Код штата плательщика (2-х или 3-х значный код)

city

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

address

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

date

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

ip

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

ext1-ext4

Дополнительные поля от 1 до 4

card_token

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

card_hash

Уникальное зашифрованное значение карты

fee_type

Признак каким образом взимается комиссия:

  • ACT - по актам.

  • TRANSACTION - потранзакционно.

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

fee

Сумма комиссии с мерчанта по транзакции в ГРН

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

sign

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

При успішній оплаті IA

 Callback при успішній оплаті карткою, Google Pay, Apple Pay, оплата частинами (при оплаті с платіжної форми)
array (
  'id' => '27374-54220-93708',
  'order' => '11-22-33',
  'status' => 'SALE',
  'rrn' => NULL,
  'approval_code' => NULL,
  'card' => '411111****1111',
  'description' => 'Оплата триал версии',
  'amount' => '1.00',
  'currency' => 'UAH',
  'name' => 'Марина Иванова',
  'email' => 'platon@gmail.com',
  'phone'=> '+380962111111',
  'country' => NULL,
  'state' => NULL,
  'city' => NULL,
  'address' => NULL,
  'date'=> '2019-11-14 15:30:22',
  'ip' => '155.209.55.69',
  'sign' => '********************************',
  'rc_id' => '27374-54220-93708',
  'rc_token' => 'b2ef4d1061621ffc0ed12d00c155ec93',
  'card_token' => '85351eeec95ebc2fef8a210ab5c9818e64157460af4600ce1210508f08f87433',
  'fee_type' => 'TRANSACTION',
  'fee' => '0.5',
)

Параметр

Опис

id
ОБ'ЯЗКОВИЙ

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

order
ОБ'ЯЗКОВИЙ

Ордер ID транзакції в системі мерчанта. Якщо параметр не передавався система Platon присвоїт його самостійно

status
ОБ'ЯЗКОВИЙ

SALE

rrn
ОБ'ЯЗКОВИЙ

Значення RRN транзакції

approval_code
ОБ'ЯЗКОВИЙ

Значення approval_code транзакції

card
ОБ'ЯЗКОВИЙ

Маска картки в форматі ХХХХХХ****ХХХХ, або маска телефону при оплаті частинами

description
ОБ'ЯЗКОВИЙ

Опис

amount
ОБ'ЯЗКОВИЙ

Сума оплати

currency
ОБ'ЯЗКОВИЙ

UAH

name
ОБ'ЯЗКОВИЙ

Сума переданих параметрів first_name та last_name

email
ОБ'ЯЗКОВИЙ

E-mail платника

country
ОБ'ЯЗКОВИЙ

Код країни платника (2-а знака)

state
ОБ'ЯЗКОВИЙ

Код штата платника (2-х або 3-х значний код)

city
ОБ'ЯЗКОВИЙ

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

address
ОБ'ЯЗКОВИЙ

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

date
ОБ'ЯЗКОВИЙ

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

ip
ОБ'ЯЗКОВИЙ

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

ext1, ext2, ext3, ext4, ext5, ext6, ext7, ext8, ext9, ext10
ОПЦІЯ

Додаткові поля

rc_id
ОПЦІЯ

Ордер ID в системі Platon для наступних транзакцій по rc_token

rc_token
ОПЦІЯ

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

card_token
ОПЦІЯ

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

card_hash
ОПЦІЯ

Уникальне зашифроване значення номера картки.

Цей параметр дасть вам можливість:

  • Прив'язати картку під клієнта.

  • Перевірити чи не використовував її інший клієнт.

  • Перевірити які кредити, товари та послуги оплачували цією карткою.

  • Відслідковувати шахрайство, коли клієнт використовує ту саму картку з іншого акаунта, наприклад, щоб повторно скористатися акцією.

Активується додатково по вашому зверненню в груповий чат.

fee_type
ОПЦІЯ

Ознака яким чином знімається комісія:

  • ACT - по актам.

  • TRANSACTION - потранзакційно.

Активується додатково по вашому зверненню в груповий чат.

fee
ОПЦІЯ

Сума комісії з мерчанта по транзакції в ГРН

Активується додатково по вашому зверненню в груповий чат.

issuing_bank
ОПЦІЯ

Назва банку емітентка картки клієнта.

Активується додатково по вашому зверненню в груповий чат.

brand
ОПЦІЯ

'brand' => 'VISA'

'brand' => 'MASTER'

'brand" => 'PROSTIR'

Активується додатково по вашому зверненню в груповий чат.

MID
ОПЦІЯ

Унікальний ідентифікатор банківського термінала PSP Paton. Підкожний платіжний метод та мерчанта свій ідентифікатор.

Активується додатково по вашому зверненню в груповий чат.

sign
ОБ'ЯЗКОВИЙ

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

md5(
  strtoupper(
    strrev($email).
    $pass.
    $order.
    strrev(
      substr($card,0,6).
      substr($card,-4)
    )
  )
)

Увага! Якщо в запиті на оплату не було вказано email, то при перевірці sing в підписі Callback варто вказати пусте значення email.

 Приклад GET параметрів

Платника буде відправлено за посиланням вказаним вами в параметр url з додаванням order методом GET

url = https://www.google.com/

order = 12345

Клієнта відправить після успішної оплати на https://www.google.com/?order=12345

При невдалій оплаті:

При невдалій оплаті Callback не відправляється.


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

 Список помилок та рішень
 Incorrect sign

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

Вариант 1

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

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


Вариант 2

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

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


Вариант 3

Неверно зашифрована data.

Проверить используете ли вы UTF-8 и верный формат параметров.

 Empty action

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

Вариант 1

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

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


Вариант 2

Запрос отправляется методом GET, а не POST.

Отправить запрос методом POST.

 Order already exists

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

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

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

 Service error

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

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

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

 Previous transaction not completed

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

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

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

 Recurring not supported

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

rc_token заблокирован, подробнее о причинах можно узнать в разделе /wiki/spaces/docs/pages/1323303006

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

 Initial transaction too old

Response: {"result":"ERROR","error_message":"Initial transaction too old"}

card_token заблокирован, подробнее о причинах можно узнать в разделе /wiki/spaces/docs/pages/1323303006

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

 Account error

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

Вариант 1

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

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


Вариант 2

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

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


Вариант 3

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

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


Вариант 4

В запросе указан неверное или несуществующее значение параметра channel_id.

Проверьте передаваемое значение channel_id на достоверность или уточните у тех поддержки доступные у вас значение.

 Card token not found for current client

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

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

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

 Incorrect hash

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

Вариант 1

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

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


Вариант 2

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

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


Вариант 3

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

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

 Duplicate request

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

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

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

 Incorrect card_token value

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

Вариант 1

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

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


Вариант 2

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

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

 Not found card token

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

Вариант 1

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

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


Вариант 2

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

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

 102: Token is not active

'decline_reason' => '102: Token is not active'

rc_token заблокирован, подробнее о причинах можно узнать в разделе /wiki/spaces/docs/pages/1323303006

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

 Wrong credit_date

'error_message' => 'Wrong credit_date'

credit_date введен не согласно формата YYYY-MM-DD или указана будущая дата.

Рекомендуем указать в credit_date прошедшую дату или текущую.

 Invalid pan

'error_message' => 'Invalid pan'

Invalid pan введен не верный номер карты.

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

  • No labels