You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 37 Next »

Общение происходит с помощью 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($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 не был передан ранее.

Пример postback, отправленного POST-запросом в JSON-формате
{
   "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"
      }
 ]
}

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

Вывод

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

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

Signature
$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));
}

Postback вывода

Постбек вывода при использовании актуального запроса на вывод "https://api.{URL_server_Paykassma}/v2/withdrawal/create"

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

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

Тип

Описание

status

integer

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

description

string

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

withdrawal_id

string

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

wallet_type

string

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

wallet_recepient

string

Номер кошелька получателя

label

string

Уникальный ID пользователя в системе клиента, передаётся в параметре label при составлении URL в Iframe

amount

double

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

currency_code

string

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

Пример postback, отправленного POST-запросом в JSON-формате
{
	"status": 1,
	"description": "<p>123<\/p>",
	"withdrawal_id": 3479370,
	"wallet_type": "IMPS",
	"wallet_recipient": "123",
	"label": "123",
	"amount": 1000,
	"currency_code": "INR"
	"signature": "SIGNATURE"
}

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


Постбек вывода при использовании неактуального запроса на вывод "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
Пример 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"
}

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

Оглавление: