Общение происходит с помощью postback-запросов (постбеков). После каждого запроса Клиента на ввод или вывод, ему отправляется постбек с результатом операции.
Внимание: Для смены часового пояса при отображении времени в транзакциях, в настройках (путь: Личный кабинет -> Настройки -> Настройки paykassma -> Часовой пояс) через запрос ТП Paykassma выставите требуемый часовой пояс. По умолчанию часовой пояс +08:00 PST Asia/Manila
Прием postback (постбека)
Для принятия постбеков Вам необходимо реализовать отдельный путь, по которому Вы сможете получать постбеки. Они отправляются POST-запросом в JSON-формате.
Сервер Paykassma ожидает ответ в json {"status":"ok"} код ответа 200, в противном случае, при получении отличающегося ответа, Paykassma будет пересылать постбек с определенной периодичностью.
Ввод/Вывод
Формирование сигнатуры (signature) на стороне клиента
При отправке постбеков Paykassma также отправляет сигнатуру: специально сгенерированную хеш-строку, которая создается с использованием приватного ключа. Сама сигнатура вычисляется следующим образом:
$signature = sha1($postback_access_key . $postback_private_access_key . md5($additionalDataArray->toJson(JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)));
в функцию sha1 передается строка, склеенная из трех параметров:
Параметр | Описание |
$postback_access_key | публичный ключ; |
$postback_private_access_key | приватный ключ; |
хеш от MD5-функции всего массива транзакций в JSON-формате |
В результате выполнения данного кода получается строка, которую невозможно подделать, не имея приватного ключа, который не передается в постбеках.
Клиент может сравнить сгенерированную сигнатуру с полученной сигнатурой от постбека и тем самым убедиться, что данные, которые пришли были реально отправлены, а не подделаны злоумышленником.
Тело запроса:
Название | Тип | Описание | ||
---|---|---|---|---|
signature | string | Подпись постбека | ||
wallet_type | string | Тип платежной системы | ||
amount | float | Сумма транзакции | ||
currency_code | string | Код валюты | ||
label | string | ID пользователя | ||
direction | string | Направление транзакции. Возможные значения:
| ||
created_datetime | string | Дата создания транзакции | ||
access_key | string | Ключ доступа, указывается в настройках личного кабинета ТП Paykassma | ||
additional_data | array | Данные о транзакции | ||
activated_datetime | string | Дата активации транзакции | ||
exchanger_identifier | string | Уникальный ID счета пользователя, с которого пришел запрос на транзакцию | ||
comment | string | Комментарий | ||
wallet_type | string | Тип платежной системы | ||
amount | string | Сумма транзакции | ||
currency_code | string | Код валюты | ||
stockpiling_id | integer | Уникальный ID постбека | ||
transaction_id | string | Уникальный ID транзакции в Paykassma | ||
transaction_type | integer | Тип транзакции: 0 = автоматическая, 1 = отладочная | ||
plugin_custom_order_id | string | Уникальный ID транзакции в системе клиента | ||
withdrawal_id | string | Уникальный ID вывода | ||
withdrawal_status | integer | Доступные статусы вывода: Processed = 1 Rejected = 5 | ||
account_number | string | Номер счета получателя | ||
account_name | string | Имя получателя | ||
account_email | string | Электронная почта получателя | ||
bank_details | object | |||
bank_code | string | Уникальный ID присваиваемый центральным банком страны | ||
branch_code | string | Код филиала (отделения) банка |
{ "signature":"signature", "wallet_type": "paytm_api", "amount": 13629, "currency_code": "INR", "label":"6424468", "direction":"ingoing", "created_datetime":"2023-06-30 10:59:24", "access_key":"access_key", "additional_data": [ { "activated_datetime":"2023-06-30 13:59:24", "exchanger_identifier":"97489343", "comment":"", "amount":"13628.5", "currency_code":"INR", "wallet_type":"paytm_api", "stockpiling_id":262402, "transaction_id":"160028076535305", "transaction_type":0, "plugin_custom_order_id":"6424468", "withdrawal_id":null, "withdrawal_status":null, "account_number":"", "account_name":"", "account_email":"", "bank_details": { "bank_code":"", "branch_code":"" } } {...} ] }
{ "signature":"fcb57aabb9a7f46cd27f1b4249aeb9912bd49300", "wallet_type":"nagad_api", "amount":820, "currency_code":"BDT", "label":"autotest898404792700response_500", "direction":"outgoing", "created_datetime":"2023-07-20 08:09:01", "access_key":"Neiwk12Mdk2pdi1Jdi", "additional_data": [ { "activated_datetime":"", "exchanger_identifier":"", "comment":"autotest approve by file", "amount":"820", "currency_code":"BDT", "wallet_type":"nagad_api", "stockpiling_id":null, "transaction_id":"", "transaction_type":null, "plugin_custom_order_id":"", "withdrawal_id":"autotest984047927037", "withdrawal_status":1, "account_number":"5632221204", "account_name":"autotest983948600573", "account_email":"", "bank_details": { "bank_code":null, "branch_code":null } } ] }
Получение информации о ранее отправленном постбеке
Система позволяет повторно запросить информацию о постбеке на ввод или вывод, который был отправлен ранее. Подробности см. здесь