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 76 Next »

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


Зміст


Опис

Цей метод дозволить розмістити окрему кнопку для оплати Privat24 без використання платіжної форми.

Заборонено додавати атрибут target="_blank" на кнопку оплати для відкриття Privat24 в новому вікні.

Оплата Privat24 не підтримує холдування коштів (HOLD).


Демо


Чекліст інтеграції

  • Привести сайт / приложение к соответствию требованиям.
  • Інтегрувати цей API метод.
  • Передати тех підтримці PSP Platon посилання для Callback.
  • Провести оплату реальною карткою (активується після підписання договору).
  • Отримати Callback та змінити статус оплати на вашому сайті.

Вимоги

 SSL сертифікат

У вашого сайту має бути валідний SSL сертифікат.

Для перевірки валідності та терміну дії вашого SSL сертифіката рекомендуємо скористатися сервісом за посиланням.

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

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

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

 TLS 1.2

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


API параметри

HTTP METHOD: POST

API ENDPOINT: https://secure.platononline.com/payment/auth

Параметр

Значення

Опис

Особливості

key
ОБОВ'ЯЗКОВИЙ

String

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

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

payment
ОБОВ'ЯЗКОВИЙ

P24

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

data
ОБОВ'ЯЗКОВИЙ

amount
ОБОВ'ЯЗКОВИЙ

Number

Сума оплати

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

1000.00

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

1000
1000.0
1,000.0
1,000.00

currency
ОБОВ'ЯЗКОВИЙ

UAH

Валюта

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

description
ОБОВ'ЯЗКОВИЙ

String

Опис

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

Max 5000 символів

url
ОБОВ'ЯЗКОВИЙ

String

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

Max 255 символів

email
ОБОВ'ЯЗКОВИЙ

String

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

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

Відсутність пробілів.

Max 255 символів

phone
ОБОВ'ЯЗКОВИЙ

Number

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

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

Max 255 символів

sign
ОБОВ'ЯЗКОВИЙ

String

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

md5(
  strtoupper(
    strrev($key).
    strrev($payment).
    strrev($data).
    strrev($url).
    strrev($pass)
  )
)

lang
НЕ ОБОВ'ЯЗКОВИЙ

UK
EN

Мова відображення платіжної форми

В приоритеті cookie в браузері клиента з параметром lang

Стандарт ISO 639-1

first_name
НЕ ОБОВ'ЯЗКОВИЙ

String

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

Max 32 символи

last_name
НЕ ОБОВ'ЯЗКОВИЙ

String

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

Max 32 символи

address
НЕ ОБОВ'ЯЗКОВИЙ

String

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

Max 32 символи

zip
НЕ ОБОВ'ЯЗКОВИЙ

String

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

Max 32 символи

city
НЕ ОБОВ'ЯЗКОВИЙ

String

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

Max 32 символи

country
НЕ ОБОВ'ЯЗКОВИЙ

String

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

Стандарт ISO 3166-1 alpha-2

Max 2 символи

state
НЕ ОБОВ'ЯЗКОВИЙ

String

Код штату, провінції або області платника

Обов'язковий параметр для країн US, CA, AU

Стандарт ISO 3166-2

Max 3 символа.

customer_wallet
НЕ ОБОВ'ЯЗКОВИЙ

String

Номер електронного гаманця платника

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

order
НЕ ОБОВ'ЯЗКОВИЙ

String

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

Max 32 символи

formid
НЕ ОБОВ'ЯЗКОВИЙ

String

Параметр додаткового налаштування


ext1, ext2, ext3, ext4, ext5, ext6, ext7, ext8, ext9, ext10
НЕ ОБОВ'ЯЗКОВИЙ

String

10 додаткових полів

Max 1024 символи в кожному ext полі


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

 Приклад запиту на PHP + HTML

Запит має відправлятися з браузера платника Client - Server, а не з сервера мерчанта Server - Server.

Content-Type: form-data або x-www-form-urlencoded

<?php
  $pass = '***';
  $data['key'] = '***';
  $data['url'] = 'http://google.com';
  $data['data'] = base64_encode(
                    json_encode(
                      array(
                        'amount' => '100.00',
                        'description' => 'Product',
                        'currency' => 'UAH'
                      )
                    )
                 );
  $data['payment'] = 'P24';
  $sign = md5(
            strtoupper(
              strrev($data['key']).
              strrev($data['payment']).
              strrev($data['data']).
              strrev($data['url']).
              strrev($pass)
            )
          );
?>

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Payment</title>
  </head>
  <body onload="javascript:document.forms[0].submit()">
    <form action="https://secure.platononline.com/payment/auth" method="post">
    <input type="hidden" name="payment" value="<?=$data['payment']?>" />
    <input type="hidden" name="key" value="<?=$data['key']?>" />
    <input type="hidden" name="url" value="<?=$data['url']?>" />
    <input type="hidden" name="data" value="<?=$data['data']?>" />
    <input type="hidden" name="sign" value="<?=$sign?>" />
    </form>                                         	
  </body>
</html>

Тестування

В цілях тестування необхідно використовувати реальну картку прив'язану до Privat24.


Перевірка платежів

 Полный список методов получения результата транзакции

Callback & Response

Використовуйте Callback або Response (в залежності від типу запиту) для автоматизації процесу зарахування у вашій системі.

Відправляється автоматично або за вашим API запитом для перевідправки.



Особистий кабінет PSP Platon

Всю необхідну інформацію ви знайдете в нашому особистому кабінеті за посиланням https://secure.platononline.net/auth/login

 Подробиці

Інструкція по використанню

Інструкція до особистого кабінету PSP Platon


Помилки доступу в кабінет

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

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


CSV файл

CSV файл з деталями оплати можна завантажити в особистому кабінеті PSP Platon.

Для коректного відображення даних в Microsoft Excel рекомендуємо ознайомитись з інструкцією по використанню CSV файлів.


Банківський реєстр

Банківські реєстри можуть бути відправлені вам на регулярній основі на ваш Email або FTP.



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

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

Для просмотра примера раскройте список

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

 Пример POST параметров в Callback при успешной оплате
array (
  'id' => '12345-12345-12345',
  'order' => '12345678',
  'status' => 'SALE',
  'description' => 'description 12345',
  'amount' => '99.99',
  'currency' => 'UAH',
  'date' => '2020-02-14 11:11:11',
  'ip' => '172.172.17.172',
  'sign' => 'qwerty123uiop456asdfgh789jkl012z',
  'number' => '411156*89',
  'email' => NULL,
  'name' => ' ',
  'phone' => NULL,
  'ext1' => '12345678',
)

Параметр

Описание

id

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

order

Ордер ID транзакции в системе мерчанта. Если параметр не передавался система Platon присвоит его самостоятельно

status

SALE

number

Маска карты в формате ХХХХХХ*ХХ

description

Описание

amount

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

currency

Валюта транзакции

name

Сума передаваемых параметров first_name и last_name

email

E-mail плательщика

phone

Телефон плательщика

date

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

ip

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

ext1-ext10

Дополнительные поля от 1 до 10

sign

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

md5(
  strtoupper(
    $pass.
    $order_id
  )
)
 Пример GET параметров

Плательщик будет отправлен по ссылке указанной в url с добавлением order методом GET

array (
  'token' => '12345678',
)

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

При неуспешной оплате Callback не отправляется.


Ошибки запросов

 Список ошибок, их причин и возможных решений.
 Incorrect sign

Response: {"result":"ERROR","error_message":"Incorrect sign"}

Вариант 1

Неверно сформирована зашифрованная подпись.

Проверьте верность сформированной подписи. Если ошибку не нашли обратитесь в тех поддержку.


Вариант 2

Добавлены параметры, которые не входят в данный запрос.

Проверьте список передаваемых параметров. Если ошибку не нашли обратитесь в тех поддержку.


Вариант 3

Неверно зашифрована data.

Проверить используете ли вы UTF-8 и верный формат параметров.

 Empty action

Response: {"result":"ERROR","error_message":"Empty action"}

Вариант 1

Параметр action заполнен не верно, пуст, или не на первом месте в списке параметров запроса.

Проверьте список передаваемых параметров. Если ошибку не нашли обратитесь в тех поддержку.


Вариант 2

Запрос отправляется методом GET, а не POST.

Отправить запрос методом POST.

 Order already exists

Response: {"result":"ERROR","error_message":"Order already exists"}

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

Заменить значение order_id на новое уникальное.

 Service error

Response: {"result":"ERROR","error_message":"Service error"}

Ситуация требует внимания сотрудников Platon.

Рекомендуем обратиться в тех саппорт Platon для проверки причины.

 Previous transaction not completed

Response: {"result":"ERROR","error_message":"Previous transaction not completed"}

Ситуация требует внимания сотрудников Platon.

Рекомендуем обратиться в тех саппорт Platon для проверки причины.

 Recurring not supported

Response: {"result":"ERROR","error_message":"Recurring not supported"}

rc_token заблокирован, подробнее о причинах можно узнать в разделе /wiki/spaces/docs/pages/1323303006

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

 Initial transaction too old

Response: {"result":"ERROR","error_message":"Initial transaction too old"}

card_token заблокирован, подробнее о причинах можно узнать в разделе /wiki/spaces/docs/pages/1323303006

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

 Account error

Response: {"result":"ERROR","error_message":"Account error"}

Вариант 1

Ваш IP адрес не добавлен в наш белый список.

Обратитесь в тех поддержку для добавления вашего IP в белый список.


Вариант 2

Данный функционал вам не подключен.

Обратитесь в тех поддержку для активации функционала.


Вариант 3

Запрос отправлен не на нужную ссылку.

Рекомендуем сверить ссылку для отправки запроса с указаной в нужном разделе документации.


Вариант 4

В запросе указан неверное или несуществующее значение параметра channel_id.

Проверьте передаваемое значение channel_id на достоверность или уточните у тех поддержки доступные у вас значение.

 Card token not found for current client

Response: {"result":"ERROR","error_message":"Card token not found for current client"}

Отправка запроса по этому card_token отключена для данного API ключа так как card_token был получен на другом API ключе.

Обратитесь в тех поддержку для решения данной ситуации.

 Incorrect hash

Response: {"result":"ERROR","error_message":"Incorrect hash"}

Вариант 1

Неверно сформирована зашифрованная подпись.

Проверьте верность сформированной подписи. Если ошибка не найдена обратитесь в тех поддержку.


Вариант 2

Добавлены параметры, которые не входят в данный запрос.

Проверьте список передаваемых параметров. Если ошибка не найдена обратитесь в тех поддержку.


Вариант 3

Запрос был отправлен не с того API ключа по которому был получен rc_token.

Рекомендуем заменить API ключ на тот, по которому был получен rc_token.

 Duplicate request

Response: {"result":"ERROR","error_message":"Duplicate request"}

За одну минуту в систему вами было отправлено несколько одинаковых запросов.

Рекомендуем проверить ваш механизм отправки запросов на наличие задвоения.

 Incorrect card_token value

Response: {"result":"ERROR","error_message":"Incorrect card_token value"}

Вариант 1

Запрос был отправлен менее чем через 10 минут после получения токена.

Рекомендуем настроить отправку запросов минимум через 10 минут после получения токена. Запрос по которому получена эта ошибка необходимо повторить.


Вариант 2

В параметр card_token внесено неверное значение.

Рекомендуем проверить верность внесенных данных в поле card_token полученного из коллбека ранее. Запрос по которому получена эта ошибка необходимо повторить.

 Not found card token

Response: {"result":"ERROR","error_message":"Not found card token"}

Вариант 1

Запрос был отправлен менее чем через 10 минут после получения токена.

Рекомендуем настроить отправку запросов минимум через 10 минут после получения токена. Запрос по которому получена эта ошибка необходимо повторить.


Вариант 2

В параметр card_token внесено неверное значение.

Рекомендуем проверить верность внесенных данных в поле card_token полученного из коллбека ранее. Запрос по которому получена эта ошибка необходимо повторить.

 102: Token is not active

'decline_reason' => '102: Token is not active'

rc_token заблокирован, подробнее о причинах можно узнать в разделе /wiki/spaces/docs/pages/1323303006

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

 Wrong credit_date

'error_message' => 'Wrong credit_date'

credit_date введен не согласно формата YYYY-MM-DD или указана будущая дата.

Рекомендуем указать в credit_date прошедшую дату или текущую.

 Invalid pan

'error_message' => 'Invalid pan'

Invalid pan введен не верный номер карты.

Сверьте номер карты. Рекомендуем проверять номер карты на действительность перед отправкой в запросе используя алгоритм Луна.

  • No labels