Page History
Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Общение происходит с помощью postback-запросов (постбеков). После каждого запроса Клиента на ввод или вывод, ему отправляется постбек с результатом операции.
Внимание: Для смены часового пояса при отображении времени в транзакциях, в настройках (путь: Личный кабинет -> Настройки -> Настройки paykassma -> Часовой пояс) через запрос ТП Paykassma выставите требуемый часовой пояс. По умолчанию часовой пояс +08:00 PST Asia/Manila
Прием postback (постбека)
Для принятия постбеков Вам необходимо реализовать отдельный путь, по которому Вы сможете получать постбеки. Они отправляются POST-запросом в JSON-формате.
Сервер Paykassma ожидает ответ в json {"status":"ok"} код ответа 200, в противном случае, при получении отличающегося ответа, Paykassma будет пересылать постбек с определенной периодичностью.
Anchor | ||||
---|---|---|---|---|
|
Ввод
Формирование сигнатуры (signature) на стороне клиента
При отправке постбеков Paykassma также отправляет сигнатуру: специально сгенерированную хеш-строку, которая создается с использованием приватного ключа. Сама сигнатура вычисляется следующим образом:
$signature = sha1($postback_access_key . $postback_private_access_key . md5($transactions->toJson()));
в функцию sha1 передается строка, склеенная из трех параметров:
Параметр | Описание |
$postback_access_key | публичный ключ; |
$postback_private_access_key | приватный ключ; |
хеш от MD5-функции всего массива транзакций в JSON-формате |
В результате выполнения данного кода получается строка, которую невозможно подделать, не имея приватного ключа, который не передается в постбеках.
Клиент может сравнить сгенерированную сигнатуру с полученной сигнатурой от постбека и тем самым убедиться, что данные, которые пришли были реально отправлены, а не подделаны злоумышленником.
Postback ввода
Тело запроса:
Наименование | Тип | Описание |
access_key | string | Ключ доступа, указывается в настройках личного кабинета ТП Paykassma |
signature | string | Подпись, по которой происходит проверка подлинности постбека. Внимание: принцип формирование подписи приводится ниже в отдельном пункте. |
label | string | Уникальный ID пользователя в системе клиента |
Stockpiling | object | Сконвертированная во все валюты сумма транзакций, участвующих в накоплении (одна и более транзакции). Конвертация осуществляется на основе открытых данных о курсах валют. Все валюты передаются с точностью до сотых долей, криптовалюты имеют 8 знаков в дробной части (стомиллионная точность). Передается в виде массива. Внимание: описание функционала накопления приводится ниже в отдельном пункте |
stockpiling_id | integer | Уникальный ID накопления |
transactions | array | Передается информация о совершённых транзакциях, учавствующих в накоплении (одна и более). |
Массив transactions:
Наименование | Тип | Описание |
amount | string | Сумма транзакции |
currency_code | string | Код валюты транзакции |
wallet_type | string | Платёжная система, в которой произведена транзакция |
code | string или “null” | Название ручной платежной системы. Заполняется только при указании wallet_type = “manual”. |
transaction_id | string | Уникальный ID транзакции в Paykassma |
transaction_type | integer | Тип транзакции: 0 = автоматическая, 1 = отладочная, 2 = принудительная |
from | string или “null” | Уникальный идентификатор счета пользователя, с которого пришла оплата (при наличии информации) |
created_datetime | string | Дата создания транзакции |
activated_datetime | string | Дата активации транзакции |
custom_id | string или “null” | Передача полученного от клиента с плагина Идентификатор транзакции в системе Клиента. Внимание: Может быть «null», если параметр custom_transaction_id не был передан ранее. |
Code Block | ||||
---|---|---|---|---|
| ||||
{ "access_key":"mrOYReXJphqo7lkL"// "signature":"dfsfrwe3344d", "label":1 "Stockpiling":{ "USD":80, "INR":6008.39, "EUR":72.86 }, "stockpiling_id":18, "transactions":[ { "amount":6008.39, "currency_code":"INR", "wallet_type":"paytm", "code":null, "transaction_id":"15", "transaction_type":1, "from":85XXXX1369, "created_datetime":"2019-12-18 23:28:45", "activated_datetime":"2019-12-18 23:28:45", "custom_id":"3123123" } ] } |
Anchor | ||||
---|---|---|---|---|
|
Вывод
Формирование сигнатуры (signature) на стороне клиента
Каждый постбек подписывается signature, она формируется следующим образом:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
$data = [ ... ]; $data['signature'] = generateSignature($data); // return fa0ee1e2acf7f898635ec417491381c0a4f9d35c //send $data like json ... function generateSignature(array $data) { $privateKey = 'yourprivatekey'; ksort($data); $implode = implode(':', $data); return sha1($privateKey . md5($implode)); } function multiImplode($glue, $array): string { $finArray = []; foreach ($array as $val) { $finArray[] = is_array($val) ? self::multiImplode($glue, $val) : $val; } return implode($glue, $finArray); } |
Postback вывода
Постбек вывода при использовании актуального запроса на вывод "https:
//api.{URL_server_Paykassma}/v2/withdrawal/create
"
Тело запроса:
Наименование | Тип | Описание |
withdrawal_id | string | Уникальный ID вывода |
status | string | Доступные статусы вывода: |
comment | string | Комментарий, приходит вместе с html тэгами |
payment_system | string | Платежная система |
amount | double | Сумма |
currency_code | string | Валюта |
label | string | Уникальный идентификатор пользователя, для которого производится вывод |
account_number | string | Номер счета получателя |
account_name | string | Имя получателя счета |
account_email | string | Email получателя счета |
payments_details | JSON | |
payments_provider | string | Поставщик, который осуществляет электронный платеж, выбранным способом оплаты |
bank_details | JSON | |
bank_code | integer | Уникальный идентификатор присваиваемый центральным банком страны |
branch_code | integer | Код филиала (отделения) банка |
signature | string | Подпись постбека |
Code Block | ||||
---|---|---|---|---|
| ||||
{ 'withdrawal_id' : '12345', 'status' : '1', 'comment' : 'comment', 'payment_system' : 'paytm', 'amount' : '1000', 'currency_code' : 'INR', 'label' : '125', 'account_number' : '123456789', 'account_name' : '', 'account_email' : '', 'payments_details': { 'payments_provider' : '', }, 'bank_details': { 'bank_code' : '', 'branch_code' : '', }, 'signature' : 'signature' } |
Ожидаемые ответы на постбеки от клиента
code | message |
---|---|
200 | ok |
400 | error receiving |
401 | error validation |
404 | not found http exception |
500 | not enough fields |
501 | empty postback |
502 | incorrect signature |
503 | data integrity error |
- В случае успеха, ожидаем от клиента http статус - 2XX.
Все 200-ые коды обязательно сопровождать "status" = "ok" - В случае неудачи, ожидаем от клиента http статус отличный от 2XX (в зависимости от ошибки) и сообщение об ошибке.
Например, error validation (не проходит валидацию), not enough fields (не достаточно полей).
Постбек вывода при использовании неактуального запроса на вывод "https:
//api.{URL_server_Paykassma}/withdrawal/manual/create
"
Тело запроса:
Наименование | Тип | Описание |
id | integer | Уникальный ID вывода |
withdrawal_id | string | ID вывода в системе клиента |
wallet_type | string | Тип платёжной системы |
wallet_recipient | string | Номер кошелька получателя |
wallet_sender | string | Номер кошелька отправителя |
account_name | string | Имя держателя аккаунта |
account_number | string | Номер счета аккаунта |
string | Электронная почта того, кому выплачивают | |
amount | double | Сумма вывода. Имеет 2 знака после запятой для всех валют и 8 знаков для криптовалют. |
status | integer | Доступные статусы вывода: |
created_at | date | Дата и время создания |
updated_at | date | Дата и время обновления |
failed_reason | string | Причина неудачи. Данный параметр не передается, если статус 1 |
Code Block | ||||
---|---|---|---|---|
| ||||
{ "id": 957, "withdrawal_id": "5165837", "wallet_type": "imps", "wallet_recipient": "123", "wallet_sender": "5125124", "account_name": "test", "account_number": "123", "email": "[email protected]" "amount": 1000.00, "status": 1, "created_at": "2021-02-16 12:23:34", "updated_at": "2021-02-26 17:22:43", "failed_reason": "test" "signature": "SIGNATURE" } |
Оглавление:
Table of Contents | ||
---|---|---|
|