C2A оплата по токену (Server - Server)

Содержание

 

 


Описание

 

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

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

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

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

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

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


 

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

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

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

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

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

 

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


 

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

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

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

UAH

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

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

String

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

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

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

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

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

String

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

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

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

String

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

Max 32 символа

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

String

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

Max 255 символа

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

String

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

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

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

Number

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

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

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

String

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

 

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

String

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

Max 255 символов

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

String

ІПН платника

 

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. ) ) )

 

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 $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']); ?>