Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

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

Note

Ваш сайт має працювати за схемою HTTPS і підтримувати протокол TLS 1.2.


Table of Contents

Опис

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

Також рекомендуємо ознайомитися з розділом Особливості HOLD

Note

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

Note

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


API параметри запиту

HTTP METHOD:

Status
colourGreen
titlePOST

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


Параметри

Значення

Опис

Особливості

Обов'язково

action

CAPTURE

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

Тільки одне значення

Status
colourGreen
titleТАК

client_key

String

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

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

Status
colourGreen
titleТАК

trans_id

String

ID транзакції Platon

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

Status
colourGreen
titleТАК

amount

Number

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

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

Tip

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

1000.00

Warning

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

1000
1000.0
1,000.0
1,000.00

Status
colourGreen
titleТАК

split_rules

String

Суми до списання та ОКПО з розщепленого платежу

Передача даних для списання у форматі JSON. Підтвердження списання може бути частковим, але в сумі, що дорівнює або є меншою від початкової частини платежу, зарахованого на кожне ОКПО.

Note

Загальна сума списання обов'язково має дорівнювати сумі розщепленого платежу.
amount1 + amount2 = amount

Code Block
split_rules = {
"okpo1":"amount1",
"okpo2":"amount2"
}

Status
colourGreen
titleТАК

hash

String

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

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

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

Status
colourGreen
titleТАК


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

Для перегляду прикладу розкрийте список

Expand
titleПример запроса Приклад запиту на PHP
Code Block
languagephp
<?php
  $client_pass = '***';
  $client_key = '***';
  $action = 'CAPTURE';
  $trans_id = '19848-26243-92097';
  $amount = '300.00';
  $card = '4111111111111111';
  $email = ''; // почта из первоначальной транзакции, если не была указана оставить пустое значение
  $split_rules = json_encode(array('12345678' => '100.00','87654321' => '200.00'));
  $hash = md5(
            strtoupper(
              strrev($email).
              $client_pass.
              $trans_id.
              strrev(
                substr($card,0,6).
                substr($card,-4)
              )
            )
          );
?>

<!DOCTYPE html>
  <html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Capture</title>
  </head>
  <body onload="javascript:document.forms[0].submit()">
    <form action="https://secure.platononline.com/post-unq/" method="post">
      <input type="text" name="action" value="<?=$action?>" />
      <input type="text" name="client_key" value="<?=$client_key?>" />
      <input type="text" name="trans_id" value="<?=$trans_id?>" />
      <input type="text" name="amount" value="<?=$amount?>" />
      <input type="text" name="split_rules" value="<?=$split_rules?>" />
      <input type="text" name="hash" value="<?=$hash?>" />
    </form>
  </body>
</html>

Iframe
scrollingno
srchttps://devplaton.com.ua/invoices/postman-test.html
styleheight: 260px;
frameborderhide

Работа с Callback

Info

Рекомендуємо ознайомитися з розділами:


Callback и Response

Для перегляду прикладу розкрийте список

Expand
titleCallback у разі успішного списання
Code Block
languagephp
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' => '********************************',
)
Info

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

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

Expand
titleResponse при успішному списанні
Code Block
languagejson
{
  "action":"CAPTURE",
  "result":"SUCCESS",
  "status":"SETTLED",
  "order_id":"110714",
  "trans_id":"27851-06615-85267",
  "amount":"657.63"
}
Expand
titleCallback при неуспішному списанні
Code Block
languagephp
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' => '********************************',
)
Info

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

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