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 10 Current »

Содержание


Описание

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

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

Внимание! Данный запрос выполняется в несколько этапов:

  1. Инициализация (API запрос №1)

  2. Подтверждение (API запрос №2)

  3. Редирект плательщика на 3DS


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

 PCI DSS или PCI Compliance

Наличие у мерчанта PCI DSS сертификата или PCI Compliance (сканирования).

Согласуйте первоначально с вашим менеджером PSP Platon.

 SSL сертификат

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

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

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

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

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

 TLS 1.2

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


API параметры №1

HTTP METHOD: POST

API ENDPOINT: https://secure.platononline.com/p2p-debit/

Параметр

Значение

Описание

Особенности

action
ОБЯЗАТЕЛЬНО

DEBIT_PREPARE

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

 

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

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

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

Max 255 символов

payer_first_name
ОБЯЗАТЕЛЬНО

String

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

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

payer_last_name
ОБЯЗАТЕЛЬНО

String

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

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

payer_address
ОБЯЗАТЕЛЬНО

String

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

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

payer_country
ОБЯЗАТЕЛЬНО

String

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

Стандарт ISO 3166-1 alpha-2
В формате "ХХ"
2 символа

payer_state
ОБЯЗАТЕЛЬНО

String

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

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

Стандарт ISO 3166-2
В формате "ХХ"
2 символа

payer_city
ОБЯЗАТЕЛЬНО

String

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

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

payer_zip
ОБЯЗАТЕЛЬНО

String

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

Max 32 символа

payer_email
ОБЯЗАТЕЛЬНО

String

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

Обязательно валидная почта.

Отсутствие пробелов.

Max 255 символа

payer_phone
ОБЯЗАТЕЛЬНО

String

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

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

Укажите "NA", если нет данных

payer_ip
ОБЯЗАТЕЛЬНО

Number

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

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

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

card_token
ОБЯЗАТЕЛЬНО

String

card_token полученый из предыдущих транзакций

term_url_3ds
ОБЯЗАТЕЛЬНО

String

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

Max 255 символов

signature
ОБЯЗАТЕЛЬНО

String

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

sha1(
  $pass.
  strtolower(
    implode(
      '',
      $action.
      $client_key.
      $order_id.
      $order_amount.
      $order_currency.
      $order_description.
      $card_token.
      $payer_first_name.
      $payer_last_name.
      $payer_phone.
      $payer_address.
      $payer_country.
      $payer_state.
      $payer_city.
      $payer_zip.
      $payer_email.
      $payer_ip.
      $term_url_3ds.
    )
  )
)

Значення в hash мають відповідати послідовності полів в самому запиті.


API параметры №2

HTTP METHOD: POST

API ENDPOINT: https://secure.platononline.com/p2p-debit/

Параметр

Значение

Описание

Особенности

action
ОБЯЗАТЕЛЬНО

DEBIT_RUN

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

 

client_key
ОБЯЗАТЕЛЬНО

String

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

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

trans_id
ОБЯЗАТЕЛЬНО

String

ID платежа в системе Platon

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

card_cvv2
ОБЯЗАТЕЛЬНО

Number

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

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

signature
ОБЯЗАТЕЛЬНО

String

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

sha1(
  $pass.
  strtolower(
    implode(
      '',
      $action,
      $client_key,
      $trans_id,
      $card_cvv2
    )
  )
)

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

 Пример запроса на PHP
<?php
  $pass='***************'; //Client's password
  $params['action']='DEBIT_PREPARE';
  $params['client_key']='******'; //Client's KEY 
  $params['order_id']='Platon_test_37254'.rand(100, 999);
  $params['order_amount']='10.00';
  $params['order_currency']='UAH';
  $params['order_description']='test_by_Platon';
  $params['card_token'] = '57a59ab9ec2c7cdaddf3d0d8846cb414c378ffbf1839c4cdd8faf359';
  $params['payer_first_name']='Jack';
  $params['payer_last_name']='Anderson';
  $params['payer_phone']='380962111111';
  $params['payer_address']='NA';
  $params['payer_country']='UA';
  $params['payer_state']='NA';
  $params['payer_city']='NA';
  $params['payer_zip']='01001';
  $params['payer_email']='test@test.com';
  $params['payer_ip']='111.111.111.111';
  $params['term_url_3ds']='https://google.com';
  $params['signature'] = sha1($pass . strtolower(implode('', $params)));
  
  $url = 'https://secure.platononline.com/p2p-debit/';
  
  $tempData = array();
    foreach ($params as $key => $value) {
      $tempData[] = $key.'='.urlencode($value);
    }
    
  $crq = curl_init();
    curl_setopt($crq, CURLOPT_URL, $url);
    curl_setopt($crq, CURLOPT_HEADER, 0);
    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, implode('&', $tempData));
    $result = curl_exec($crq);
    if (curl_errno($crq)) {
      echo 'ERROR: '.curl_error($crq);
    }
    curl_close($crq);

  echo $result;
  $moda = json_decode($result, true);

  $pars['action']='DEBIT_RUN';
  $pars['client_key']='*******';
  $pars['trans_id']=$moda['trans_id'];
  $pars['card_cvv2']='111';
  $pars['signature']= sha1($pass . strtolower(implode('', $pars)));
  
  $temp = array();
    foreach ($pars as $key => $value) {
      $temp[] = $key.'='.urlencode($value);
    }
  $crq = curl_init();
    curl_setopt($crq, CURLOPT_URL, $url);
    curl_setopt($crq, CURLOPT_HEADER, 0);
    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, implode('&', $temp));
    $res = curl_exec($crq);
    if (curl_errno($crq)) {
      echo 'ERROR: '.curl_error($crq);
    }
    curl_close($crq);
  
  echo $res;
  $respRedirect = json_decode($res, true);
  echo $respRedirect['redirect_url'];
  
  header('Location: '.$respRedirect['redirect_url']);
  
?>

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 на відповідність первоначальної суми та ордера у вашій базі даних, які були вказані при створенні замовлення.

Проміжна ініциалізація по API запиту №1:

 Проміжний Responce ініциалізації по API запиту №1
{
  "action":"DEBIT_PREPARE",
  "result":"SUCCESS",
  "status":"INIT",
  "order_amount":"10.00",
  "order_commission":null,
  "order_currency":"UAH",
  "descriptor":null,
  "order_id":"Platon_test_37254615",
  "trans_id":"33999-98398-18623",
  "trans_date":"2021-12-20 11:30:39"
}

Проміжний редірект на 3DS по API запиту №2:

 Проміжний Responce для редіректа на 3DS по API запиту №2
{
  "action":"DEBIT_RUN",
  "result":"SUCCESS",
  "status":"3DS",
  "redirect_url":"https:\/\/www.liqpay.ua\/apipay\/3ds\/request\/1640462_33031267_eUjiyjdkjUoAFjE60CpfSmg6t0nbpEZ4vJMBfIUJ\/?return_to=https%3A%2F%2Fsecure.platononline.com%2F3ds%2F173b0c33%3Foperation_type%3Ddebit2card%26trans_id%3D34000-10530-30053%26hash%3D1430b568b390d9fdgdga7030e3c22e4f74894",
  "redirect_params":null,
  "redirect_method":"GET",
  "order_id":"Platon_test461",
  "trans_id":"34000-10530-30053",
  "trans_date":"2021-12-20 11:50:57"
}

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

 Responce при успішній оплаті
{
  "action":"DEBIT_RUN",
  "result":"SUCCESS",
  "status":"SETTLED",
  "order_id":"4385302",
  "trans_id":"28261-34099-19648",
  "trans_date":"2020-02-25 06:50:09",
  "card_token":"8ef3111ac1093f6ccb817acef7f0845601d0994689a5f57949f94b0d086c7fe2"
}

Параметр

Опис

action

DEBIT_RUN

result

SUCCESS

status

SETTLED

order_id

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

trans_id

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

trans_date

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

card_token

Зашифрований токен картки

 Callback при успішній оплаті
array (
  'action' => 'DEBIT_RUN',
  'result' => 'SUCCESS',
  'status' => 'SETTLED',
  'order_id' => '4385323',
  'trans_id' => '28261-47789-28578',
  'trans_date' => '2020-02-25 07:12:58',
  'card_token' => '8ef3111ac1093f6ccb817acef7f0845601d0994689a5f57949f94b0d086c7fe2',
  'hash' => '********************************',
)

Параметр

Опис

action

DEBIT_RUN

result

SUCCESS

status

SETTLED

order_id

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

trans_id

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

trans_date

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

card_token

Зашифрований токен картки

hash

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

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

 Responce при невдалій оплаті
{
  "action":"DEBIT_RUN",
  "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

DEBIT_RUN

result

DECLINED

status

DECLINED

order_id

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

trans_id

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

trans_date

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

decline_reason

Опис помилки

 Callback при невдалій оплаті
array (
  'action' => 'DEBIT_RUN',
  'result' => 'DECLINED',
  'status' => 'DECLINED',
  'order_id' => '4385323',
  'trans_id' => '28261-47789-28578',
  'trans_date' => '2020-02-25 07:12:58',
  "decline_reason":"Declined by processing"
  'hash' => '********************************',
)

Параметр

Опис

action

DEBIT_RUN

result

DECLINED

status

DECLINED

order_id

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

trans_id

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

trans_date

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

decline_reason

Опис помилки

hash

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

  • No labels