Цей функціонал буде активовано після вашого запиту в груповому чаті.

API метод працює по білому списку IP адрес. Надайте їх в груповий чат.


Зміст


Опис

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

При частковому списанні коштів з HOLD залишок автоматично повернеться на картку платника. Використовується у випадку якщо мерчант може надати лише частину товару чи послуг з замовлення.

При відсутності товару або послуги необхідно виконати повернення коштів.

На 25 день відбудеться автоматичне списання коштів у випадку якщо за цей період вами не було проведено будь яких дій.

Підтвердження списання можливо лише при відправці запиту з того ж API ключа та юр. особи які були на момент холдування кошітв.

Відправляти товар або надавати послугу до успішного списання заборонено. На момент списання картка може бути заблокована і отримати кошти буде неможливо.


Вимоги


API параметри

HTTP METHOD: POST

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

Параметр

Значення

Опис

Особливості

action

CAPTURE

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

client_key

String

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

Ключ надається на пошту мерчанта і має відповідати ключу по якому було проведено оплату з HOLD

trans_id

String

ID оплати в системі PSP Platon

amount

Number

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

Має бути меньше або рівна сумі в HOLD

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

1000.00

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

1000
1000.0
1,000.0
1,000.00

hash

String

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

md5(
  strtoupper(
    strrev(email).
    client_pass.
    trans_id.
    strrev(
      substr(card_number,0,6).
      substr(card_number,-4)
    )
  )
)

Якщо в запиті на оплату не було вказано email, то необхідно залишити пусте значення email.


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

<?php
  $client_pass = '***';
  $data['client_key'] = '***';
  $data['action'] = 'CAPTURE';
  $data['trans_id'] = '19848-26243-92097';
  $data['amount'] = '100.00';
  $card = '4111111111111111';
  $data['email'] = ''; // пошта з транзакції оплати, якщо вона була вказана
  $data['hash'] = md5(strtoupper(
              strrev($data['email']).
              $client_pass.
              $data['trans_id'].
              strrev(
                substr($card,0,6).
                substr($card,-4)
              )
            )
          );

$url = 'https://secure.platononline.com/post-unq/';
$crq = curl_init();
curl_setopt($crq, CURLOPT_URL, $url);
curl_setopt($crq, CURLOPT_HEADER, 0);
curl_setopt($crq, CURLOPT_POST, 1);
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, http_build_query($data));
$result = curl_exec($crq);
  if (curl_errno($crq)) {
    echo 'ERROR: '.curl_error($crq);
  }else{
    echo $result;
  }
curl_close($crq);

Postman Collection


Callback

При успішному списанні:

array (
  'action' => 'SALE',
  'result' => 'SUCCESS',
  'status' => 'SETTLED',
  'order_id' => '1974133',
  'trans_id' => '27841-94347-36138',
  'trans_date' => '2020-01-07 17:50:34',
  'descriptor' => NULL,
  'auth_code' => '',
  'hash' => '********************************',
)

Для перевірки достовірності отриманого callback, рекомендуємо звіряти підпис hash по формулі md5(strtoupper(strrev(email).client_pass.trans_id.strrev(substr(card,0,6).substr(card,-4)))).

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

{
  "action":"CAPTURE",
  "result":"SUCCESS",
  "status":"SETTLED",
  "order_id":"110714",
  "trans_id":"27851-06615-85267",
  "amount":"657.63"
}

При невдалому списанні:

array (
  'action' => 'SALE',
  'result' => 'DECLINED',
  'status' => 'PENDING',
  'order_id' => '1974133',
  'trans_id' => '27841-94347-36138',
  'trans_date' => '2020-01-07 17:50:34',
  'descriptor' => NULL,
  'auth_code' => '',
  'hash' => '********************************',
)

Для перевірки достовірності отриманого callback, рекомендуємо звіряти підпис hash по формулі md5(strtoupper(strrev(email).client_pass.trans_id.strrev(substr(card,0,6).substr(card,-4)))).

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

{
  "action":"CAPTURE",
  "result":"DECLINED",
  "status":"PENDING",
  "order_id":"110714",
  "trans_id":"27851-06615-85267",
  "amount":"657.63"
}