Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Содержание

Зміст

Table of Contents
minLevel1
maxLevel2
indent0px
absoluteUrltrue
stylecircle

Описание

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

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

Tip

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

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

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

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


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

Expand
titlePCI DSS или PCI Compliance

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

Note

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

Expand
titleSSL сертификат

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

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

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

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

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

Include PageЛоготипы для размещенияЛоготипы для размещения
Expand
titleTLS 1.2

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

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

HTTP METHOD: POST

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

Параметр

Значение

Описание

Особенности

action

Status
colourGreen
titleОБЯЗАТЕЛЬНО

DEBIT_PREPARE

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

 

async

Status
colourYellow
titleне ОБЯЗАТЕЛЬНО

Y
N

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

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

channel

Опис

Оплата по технології C2A дебет з обробкою карткових даних.

Info

Обов'язкова наявність у мерчанта PCI DSS.

Tip

Увага! Цей запит виконується в декілька етапів:

  1. Ініциалізація (API запит №1)

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

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


Вимоги

Include Page
Вимоги до сайтів та додатків
Вимоги до сайтів та додатків

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

HTTP METHOD: POST

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

Параметр

Значення

Опис

Особливості

action

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

DEBIT_PREPARE

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

 

async

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

Y
N

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

Стандартне значення "N" можна не передавати

channel_id

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

String

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

Відправка коштів на окремий платіжний термінал

client_key

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

String

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

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

order_id

Status
colour

Yellow

Green
title

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

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

String

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

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

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

Max 32 символи

order_amount

Status
colourGreen
title

ОБЯЗАТЕЛЬНО

String

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

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

order_idMax 32 символа

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

Number

Сума оплати

Tip

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

1000.00

Warning

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

1000
1000.0
1,000.0
1,000.00

order_currency

Status
colourGreen
title

ОБЯЗАТЕЛЬНО

String

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

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

UAH

Валюта оплати

Info

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

order_

amount

description

Status
colourGreen
title

ОБЯЗАТЕЛЬНО

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

Number

String

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

Опис оплати

Tip

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

1000.00

Warning

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

1000
1000.0
1,000.0
1,000.00

Note

Для криличних символів треба використовувати формат UTF-8

Max 255 символов

payer_first_name

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

String

Ім'я платника

Max 32 символів без пробілів
Вкажіть "NA" якщо немає даних

payer_last_name

Status
colourGreen
title

ОБЯЗАТЕЛЬНО

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

UAHorder_description

String

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

Info

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

Прізвище платника

Max 32 символів без пробілів
Вкажіть "NA" якщо немає даних

payer_address

Status
colourGreen
title

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

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

String

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

Note

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

Max 255 символов

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

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

payer_country

Status
colourGreen
title

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

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

String

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

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

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

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

payer_state

Status
colourGreen
title

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

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

String

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

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

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

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

payer_city

Status
colourGreen
title

ОБЯЗАТЕЛЬНО

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

String

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

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

Max

256 символа

32 символи

Укажите

Вкажіть "NA"

, если нет данных

якщо немає даних

payer_

country

zip

Status
colourGreen
title

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

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

String

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

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

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

Max 32 символи

payer_email

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

String

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

Info

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

Info

Без пробілів.

Max 255 символа

payer_phone

Status
colourGreen
title

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

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

String

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

Note

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

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

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

Info

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

payer_ip

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

Number

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

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

Note

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

card_number

Status
colourGreen
title

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

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

String

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

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

Number

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

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

card_exp_month

Status
colourGreen
title

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

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

String

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

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

Number

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

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

card_exp_year

Status
colourGreen
title

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

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

String

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

Info

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

Info

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

Max 255 символа

Number

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

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

card_cvv2

Status
colourGreen
title

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

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

String

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

Info

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

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

Number

CVV код

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

req_token

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

ОБЯЗАТЕЛЬНОcard_number
Statuscolour

Y

Number

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

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

Note

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

N

Для формування card_token

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

term_url_3ds

Status
colourGreen
title

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

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

Number

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

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

String

Посилання по якому буде відправлено платника після успішної / невдалої спроби оплати після 3DS

Max 255 символів

itn

Status
colour

Green

Yellow
titleне Обов'язковий

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

String

Number

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

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

ІПН платника

signature

Status
colourGreen
title

ОБЯЗАТЕЛЬНО

card_cvv2

Status
colourGreen
titleОБЯЗАТЕЛЬНО

Number

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

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

req_token

Status
colourGreen
titleОБЯЗАТЕЛЬНО

Y
N

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

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

term_url_3ds

Status
colourGreen
titleОБЯЗАТЕЛЬНО

String

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

Max 255 символов

signature

Status
colourGreen
titleОБЯЗАТЕЛЬНО

String

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

Code Block
languagephp
sha1( $pass. strtolower( implode(

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

Number

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

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

String

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

Code Block
languagephp
sha1(
  $pass.
  strtolower(
    implode(
      '',
      $action.
      $client_key.
      $order_id.
      $order_amount.
      $order_currency.
      $order_description.
      $card_number.
      
'',
$card_exp_month.
      
$action
$card_exp_year.
      
$client
$card_
key
cvv2.
      
$order
$payer_first_
id
name.
      
$order
$payer_last_
amount
name.
      
$order
$payer_
currency
phone.
      
$order
$payer_
description
address.
      
$card
$payer_
number
country.
      
$card
$payer_
exp_month
state.
      
$card_exp_year. $card_cvv2
$payer_city.
      $payer_
first_name
zip.
      $payer_
last_name
email.
      $payer_
phone
ip.
      
$payer_address. $payer_country
$term_url_3ds.
    )
 
$payer_state.
 
$payer_city. $payer_zip. $payer_email. $payer_ip. $term_url_3ds. ) ) )

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

HTTP METHOD: POST

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

Параметр

Значение

Описание

Особенности

action
StatuscolourGreentitleОбязательно
)
)
Note

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


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

HTTP METHOD: POST

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

Параметр

Значення

Опис

Особливості

action

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

DEBIT_RUN

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

метода

методу

 

client_key

Status
colourGreen
title

Обязательно

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

String

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

Ключ

предоставляется

надається на

почту мерчанту

пошту мерчанта

trans_id

Status
colourGreen
title

Обязательно

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

String

ID

платежа

оплати в

системе

системі PSP Platon

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

card_cvv2

Status
colourGreen
title

Обязательно

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

Number

Проверочный

CVV код

на карте

В

формате

форматі "ХХХ"
3

символа

символи

signature

Status
colourGreen
title

Обязательно

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

String

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

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

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

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

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

Expand
titleПример запроса Приклад запиту на PHP
Code Block
languagephp
<?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_number'] = '1111111111111111';
  $params['card_exp_month'] = '11';
  $params['card_exp_year'] = '1111';
  $params['card_cvv2'] = '111';
  $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

Expand
titleОсобенности работы с Callback
Include PageРабота с CallbackРабота с Callback Expand
titleБезопасность
Include PageБезопасностьБезопасность

Промежуточная инициализация плательщикапо API запросу №1:

Expand
titleПромежуточный Responce инициализации транзакции по API запросу №1
Code Block
languagejson
{
  "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:

Expand
titleПромежуточный Responce для редиректа плательщика на 3DS по API запросу №2
Code Block
languagejson
{
  "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"
}

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

Expand
titleResponce при успешном списании
Code Block
{
  "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"
}
Expand
titleCallback при успешном списании
Code Block
languagephp
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 транзакции в системе Platon

trans_date

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

card_token

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

hash

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

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

Expand
titleResponce при неуспешном списании
Code Block
{
  "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"
}
Зашифрованная подпись для проверки достоверности коллбека
Expand
titleCallback при неуспешном списании
Code Block
languagephp
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 транзакции в системе Platon

trans_date

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

decline_reason

Описание ошибки

hash

 $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

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