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
PsV
PsV

Ввод/Вывод

Формирование сигнатуры (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

Подпись, по которой происходит проверка подлинности постбека.

Внимание: принцип формирование подписи приводится ниже в отдельном пункте.

label

string

Уникальный ID пользователя в системе клиента

Stockpiling

signature                          string

Подпись постбека      

wallet_typestring

Тип платежной системы

amountfloat

Сумма транзакции

currency_code

string

Код валюты

labelstring

ID пользователя

converted_amountarray
object

Сконвертированная во все валюты сумма транзакций, участвующих в накоплении (одна и более транзакции). Конвертация осуществляется на основе открытых данных о курсах валют.

Все валюты передаются с точностью до сотых долей, криптовалюты имеют 8 знаков в дробной части (стомиллионная точность). Передается в виде массива.

Внимание: описание функционала накопления приводится

ниже

в отдельном

пункте

stockpiling_id

integer

Уникальный ID накопления

transactions

array

Передается информация о совершённых транзакциях, учавствующих в накоплении (одна и более).

Массив transactions:

разделе

Массив сконвертированных сумм во все доступные валюты

directionstring

Направление транзакции. Возможные значения: 

  • ingoing - депозит 
  • outgoing - вывод 

created_datetime

string

Дата создания транзакции

access_keystringКлюч доступа, указывается в настройках личного кабинета ТП Paykassma
additional_dataarray

Данные о транзакции


activated_datetime

string

Дата активации транзакции


exchanger_identifierstringУникальный ID счета пользователя, с которого пришел запрос на транзакцию

commentstringКомментарий

Наименование

Тип

Описание

amount

string

Сумма транзакции

currency_code

string

Код валюты транзакции

wallet_typestring

Платёжная система, в которой произведена транзакция

code

string или “null”

Название ручной платежной системы. Заполняется только при указании wallet_type = “manual”.
Тип платежной системы

amountstringСумма транзакции в накоплении 

currency_codestringКод валюты

stockpiling_id

integer

Уникальный ID накопления


transaction_id

string
Уникальный ID транзакции в Paykassma

Уникальный 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 не был передан ранее.

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
themeDJango
titleПример postback , отправленного POST-запросом в JSON-форматедепозита
{
     "access_key":"mrOYReXJphqo7lkL"//
   "signature":"dfsfrwe3344d",
   "signature":"signature",
      "wallet_type": "paytm_api",
      "amount": 13629,
      "currency_code": "INR",
      "label":1
   "Stockpiling":{
      "6424468",
      "converted_amount": 
          {
           "USD":80,
      40.43,"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"
      }
 ]
}
AnchorPsVVPsVV

< Вернуться на главную

Вывод

Формирование сигнатуры (signature) на стороне клиента

Каждый постбек подписывается signature, она формируется следующим образом:

Code Block
languagephp
themeDJango
titleSignature
$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"

Тело запроса:

Наименование

Тип

Описание

withdrawal_id

string

Уникальный ID выводаstatus

string

Доступные статусы вывода:
Processed = 1
Rejected = 5

comment

string

Комментарий, приходит вместе с html тэгами

payment_systemstringПлатежная система amountdoubleСуммаcurrency_codestringВалютаlabelstringУникальный идентификатор пользователя, для которого производится выводaccount_numberstringНомер счета получателя account_namestringИмя получателя счета account_emailstringEmail получателя счета payments_detailsJSONpayments_providerstringПоставщик, который осуществляет электронный платеж, выбранным способом оплатыbank_detailsJSONbank_codestring

Уникальный идентификатор присваиваемый центральным банком страны

branch_codestringКод филиала (отделения) банка signaturestringПодпись постбека
Code Block
themeDJango
titleПример postback, отправленного POST-запросом в JSON-формате
{
	'withdrawal_id' : '12345',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": 
                {
                     "bank_code":"",
        'status'  : '1',                            "branch_code":"" 
                }
             } 
         
    'comment' : 'comment',      {...}
            ]
}
Code Block
themeDJango
titleПример postback вывода
{
      "signature":"fcb57aabb9a7f46cd27f1b4249aeb9912bd49300",
      "wallet_type":"nagad_api",
      "amount":820,
  
    'payment_system' : 'paytm',"currency_code":"BDT",
      "label":"autotest898404792700response_500",
      "converted_amount": 
         {
    'amount' : '1000',    "USD":7.56,"INR":620,"IDR":113212.08,"MYR":34.39,"VND":178667.64,"SGD":10,
          "THB":257.14,"NGN":5947.67,"TRY":203.5,"AED":27.75,"CAD":9.93,"AUD":11.07,"BDT":820,"AFN":647.27,
          "ALL":681.27,"AMD":2946.58,"AOA":6231.79,"ARS":2025.9,"AWG":13.62,"AZN":12.84,"BAM":13.17,"BBD":15.11,
      
    'currency_code' : 'INR',"BGN":13.17,"BHD":2.85,"BIF":21376.13,"BMD":7.56,"BND":10.02,"BOB":52.24,"BRL":36.2,"BSD":7.56,"BTC":0.00025009
         },
      "direction":"outgoing",
      "created_datetime":"2023-07-20 08:09:01",
    'label' : '125',  "access_key":"Neiwk12Mdk2pdi1Jdi",
      "additional_data": 
       [
        {
      
    'account_number' : '123456789',"activated_datetime":"",
          "exchanger_identifier":"",
          "comment":"autotest approve by file",
    'account_name' : '',    "amount":"820",
          "currency_code":"BDT",
          "wallet_type":"nagad_api",
    'account_email' : '',    "stockpiling_id":null,
          "transaction_id":"",
       
    'payments_details':"transaction_type":null,
        {
  "plugin_custom_order_id":"",
          'payments_provider' : '',"withdrawal_id":"autotest984047927037",
          "withdrawal_status":1,
         } "account_number":"5632221204",
    'bank_details':      "account_name":"autotest983948600573",
        {
  "account_email":"",
          '"bank_code' details":
 '',           {
       
        "bank_code":null,
    'branch_code' : '', 
        },"branch_code":null
    'signature' : 'signature'
}

Ожидаемые ответы на постбеки от клиента

code

message

200

ok

400error
 
receiving401error validation404not found http exception500not
 
enough
 
fields501empty
 
postback502incorrect
 
signature503data
 
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

Номер счета аккаунта 

email

string

Электронная почта того, кому выплачивают

amount

double

Сумма вывода. Имеет 2 знака после запятой для всех валют и 8 знаков для криптовалют.

status

integer

Доступные статусы вывода:
New = 0
Canceled = 2
Processed = 1

created_atdateДата и время создания updated_atdateДата и время обновления failed_reasonstringПричина неудачи. Данный параметр не передается, если статус 1
Code Block
themeDJango
titleПример postback, отправленного POST-запросом в JSON-формате
{
	"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
minLevel2