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$additionalDataArray->toJson(JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)));
в функцию sha1 передается строка, склеенная из трех параметров:
Параметр | Описание |
$postback_access_key | публичный ключ; |
$postback_private_access_key | приватный ключ; |
хеш от MD5-функции всего массива транзакций в JSON-формате |
В результате выполнения данного кода получается строка, которую невозможно подделать, не имея приватного ключа, который не передается в постбеках.
Клиент может сравнить сгенерированную сигнатуру с полученной сигнатурой от постбека и тем самым убедиться, что данные, которые пришли были реально отправлены, а не подделаны злоумышленником.
Postback вводаТело запроса:
Название | Тип | Описание |
---|
access_key
string
Ключ доступа, указывается в настройках личного кабинета ТП Paykassma
signature | string | Подпись постбека | ||
wallet_type | string | Тип платежной системы | ||
amount | float | Сумма транзакции | ||
currency_code | string | Код валюты |
signature
string
Подпись, по которой происходит проверка подлинности постбека.
Внимание: принцип формирование подписи приводится ниже в отдельном пункте.label | string |
ID |
пользователя |
Stockpiling
converted_amount | array |
Сконвертированная во все валюты сумма транзакций, участвующих в накоплении (одна и более транзакции). Конвертация осуществляется на основе открытых данных о курсах валют. Все валюты передаются с точностью до сотых долей, криптовалюты имеют 8 знаков в дробной части (стомиллионная точность). Передается в виде массива. Внимание: описание функционала накопления приводится |
в отдельном |
stockpiling_id
integer
Уникальный ID накопления
transactions
array
Передается информация о совершённых транзакциях, учавствующих в накоплении (одна и более).
Массив transactions:
Наименование
Тип
Описание
amount
string
Сумма транзакции
currency_code
string
Код валюты транзакции
wallet_type
string
Платёжная система, в которой произведена транзакция
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 не был передан ранее.
Массив сконвертированных сумм во все доступные валюты | ||||
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 = отладочная, 2 = принудительная | ||
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 | array | |||
bank_code | string | Уникальный ID присваиваемый центральным банком страны | ||
branch_code | string | Код филиала (отделения) банка |
Code Block | ||||
---|---|---|---|---|
| ||||
{
"signature":"signature",
"wallet_type": "paytm_api",
"amount": 13629,
"currency_code": "INR",
"label":"6424468",
"converted_amount":
{
"USD":40.43,"INR":3327,"EUR":40.98,"IDR":625650.25,"MYR":190.71,"VND":988191.07,"SGD":57.43,
"THB":1539,"NGN":17640.29,"TRY":751.48,"AED":148.51,"CAD":55.52,"AUD":64,"BDT":4276.41,"AFN":3531.25,
"ALL":4807.24,"AMD":16333.46,"AOA":18109.34,"ARS":6179.09,"AWG":72.88,"AZN":68.73,"BAM":80.49,"BBD":80.86,
"BGN":80.2,"BHD":15.24,"BIF":83303.64,"BMD":40.43,"BND":57.44,"BOB":279.23,"BRL":211.91,"BSD":40.43,"BTC":0.00209234
},
"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":
|
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",
"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"
}
]
} |
Вывод
Формирование сигнатуры (signature) на стороне клиента
Каждый постбек подписывается signature, она формируется следующим образом:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
$data = [
...
];
$data['signature'] = generateSignature($data); // return fa0ee1e2acf7f898635ec417491381c0a4f9d35c
//send $data like json ...
function generateSignature(array $data) {
$privateKey = 'yourprivatekey';
ksort($data);
$implode = self::multiImplode( ':', $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
"
Тело запроса:
Наименование
Тип
Описание
string
integer
Доступные статусы вывода:
Processed = 1
Rejected = 5
string
Комментарий, приходит вместе с html тэгами
Уникальный идентификатор присваиваемый центральным банком страны
Code Block | ||||
---|---|---|---|---|
| ||||
{ 'withdrawal_id' : '12345', 'status' : '1', 'comment' : 'comment', 'payment_system' : 'paytm', 'amount' : '1000', { "bank_code":"", "branch_code":"" } } '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
ok
error receiving
not enough fields
empty postback
incorrect signature
data integrity error
{...}
]
} |
Code Block | ||||
---|---|---|---|---|
| ||||
{
|
- В случае успеха, ожидаем от клиента http статус - 2XX.
Все 200-ые коды обязательно сопровождать "status" = "ok" - В случае неудачи, ожидаем от клиента http статус отличный от 2XX (в зависимости от ошибки) и сообщение об ошибке.
Например, error validation (не проходит валидацию), not enough fields (не достаточно полей).
Постбек вывода при использовании неактуального запроса на вывод "https:
//api.{URL_server_Paykassma}/withdrawal/manual/create
"
Тело запроса:
Наименование
Тип
Описание
id
withdrawal_id
string
ID вывода в системе клиента
wallet_type
string
Тип платёжной системы
wallet_recipient
string
Номер кошелька получателя
wallet_sender
string
Номер кошелька отправителя
account_name
string
Имя держателя аккаунта
account_number
string
string
Электронная почта того, кому выплачивают
double
Сумма вывода. Имеет 2 знака после запятой для всех валют и 8 знаков для криптовалют.
integer
Доступные статусы вывода:
New = 0
Canceled = 2
Processed = 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"
} |
Новый формат postback (постбека)
На данный момент осуществляется переход на новый формат постбека. В отличии от прошлого он содержит параметры выводов и депозитов в одном теле.
Тело запроса:
Описание
Подпись постбека
Тип платежной системы
Сумма транзакции
currency
Код валюты
ID пользователя
Сконвертированная во все валюты сумма транзакций, участвующих в накоплении (одна и более транзакции). Конвертация осуществляется на основе открытых данных о курсах валют.
Все валюты передаются с точностью до сотых долей, криптовалюты имеют 8 знаков в дробной части (стомиллионная точность). Передается в виде массива.
Внимание: описание функционала накопления приводится ниже в отдельном пункте
Массив сконвертированных сумм во все доступные валюты
Направление транзакции. Возможные значения:
- ingoing - депозит
- outgoing - вывод
created_datetime
Дата создания транзакции
Данные о транзакции
activated_datetime
Дата активации транзакции
stockpiling_id
integer
Уникальный ID накопления
transaction_id
Уникальный ID транзакции в Paykassma
transaction_type
Тип транзакции: 0 = автоматическая, 1 = отладочная, 2 = принудительная
plugin_custom_order_id
Уникальный ID транзакции в системе клиента
withdrawal_id
Уникальный ID вывода
withdrawal_status
Processed = 1
Rejected = 5
account_number
Номер счета получателя
account_name
Имя получателя
account_email
Электронная почта получателя
bank_details
bank_code
Уникальный ID присваиваемый центральным банком страны
branch_code
Код филиала (отделения) банка
Code Block | ||
---|---|---|
| ||
{ "signature":"signaturefcb57aabb9a7f46cd27f1b4249aeb9912bd49300", "wallet_type": "paytmnagad_api", "amount": 13629820, "currency_code": "INRBDT", "label":"6424468autotest898404792700response_500", "converted_amount": { "USD":40.43,"INR":33277.56,"EURINR":40.98620,"IDR":625650113212.2508,"MYR":19034.7139,"VND":988191178667.0764,"SGD":57.4310, "THB":1539257.14,"NGN":176405947.2967,"TRY":751203.485,"AED":14827.5175,"CAD":559.5293,"AUD":6411.07,"BDT":4276.41820,"AFN":3531647.2527, "ALL":4807681.2427,"AMD":163332946.4658,"AOA":181096231.3479,"ARS":61792025.099,"AWG":7213.8862,"AZN":6812.7384,"BAM":8013.4917,"BBD":8015.86, 11, "BGN":8013.217,"BHD":152.2485,"BIF":8330321376.6413,"BMD":407.4356,"BND":5710.4402,"BOB":27952.2324,"BRL":21136.912,"BSD":407.4356,"BTC":0.00209234 00025009 }, "direction":"ingoingoutgoing", "created_datetime":"2023-0607-3020 1008:5909:2401", "access_key":"access_key", "additional_data": [ { "Neiwk12Mdk2pdi1Jdi", "additional_data": [ { "activated_datetime":"2023-06-30 13:59:24", "exchanger_identifier":"97489343", "comment":"autotest approve by file", "amount":"13628.5820", "currency_code":"INRBDT", "wallet_type":"paytmnagad_api", "stockpiling_id":262402null, "transaction_id":"160028076535305", "transaction_type":0null, "plugin_custom_order_id":"6424468", "withdrawal_id":null"autotest984047927037", "withdrawal_status":null1, "account_number":"5632221204", "account_name":"autotest983948600573", "account_email":"", "bank_details": { "bank_code":""null, "branch_code":"" null } } {...} ] } |
Получение информации о ранее отправленном постбеке
Система позволяет повторно запросить информацию о постбеке на ввод или вывод, который был отправлен ранее. Подробности см. здесь
Оглавление:
Table of Contents | ||
---|---|---|
|