Разработчикам

Создание платежа

Для создания платежа, отправляем по адресу https://lk.rukassa.is/api/v1/create
Метод: POST или GET

Со следующими параметрами:
Поле Тип Обязательный Описание
shop_id Int ID магазина.
order_id Int Уникальный номер платежа в вашей системе.
amount Float Сумма платежа.
token String API токен из настроек вашего мерчанта.
data Json Объект, передаваемый на сервер вместе с уведомлением об успешном платеже.
method String Метод оплаты, если хотите чтобы оплата была сделана через определённый метод. Методы: card, card_kzt, card_uzs, card_try, card_azn, skinpay, yandexmoney, payeer, crypta, sbp,
currency String В какой валюте указываете параметр amount. По умолчанию RUB. Валюты: RUB, USD
user_code String Для H2H, Anti-Fraud - обязателен. Идентификатор клиента (можно использовать IP адрес или ID Telegram пользователя).
json Bool Только для H2H интеграции. Просто true.
$token = 'ВАШ ТОКЕН';
$order_id = time() . mt_rand();
$amount = 300;

$params = [
'param1' => 'Ваше значение', 
'param2' => 'Ваше значение', 
'param3' => 'Ваше значение', 
];

$data = [
'shop_id'	=> 0, // ID Вашего мерчанта
'token'		=> $token,
'order_id' 	=> $order_id,
'amount' 	=> $amount,
'data' 		=> json_encode($params)
];

$ch = curl_init('https://lk.rukassa.is/api/v1/create');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data, '', '&'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
$result = json_decode(curl_exec($ch));
curl_close($ch);

header('Location: ' . $result->url); // Редирект на страницу оплаты
			
Результатом вернет id, hash и url в формате JSON.
Где id - номер операции в нашей системе.
Где hash - хэш оплаты.
Где url - ссылка на оплату.

Если способ интеграции h2h, то результатом вернет card, bank, receiver, amount и другое, в формате JSON.

В случае ошибки вернет error и message.
Где error - код ошибки.
Где message - сообщение ошибки.
Информация по платежам

Для просмотра платежа, отправляем по адресу https://lk.rukassa.is/api/v1/getPayInfo
Метод: POST или GET

Со следующими параметрами:
Поле Тип Обязательный Описание
id | order_id Int Номер платежа в нашей системе. Для order_id, номер платежа в Вашей системе
shop_id Int ID магазина.
token String API токен из настроек вашего мерчанта.
Результатом вернет id, order_id, amount, status, data в формате JSON.
Где id - номер операции в нашей системе.
Где order_id - номер операции в вашей системе.
Где amount - сумма платежа.
Где in_amount - сумма платежа, оплаченная клиентом по факту.
Где currency - валюта, в которой создан платёж.
Где method - метод, с помощью которого произведена оплата.
Где status - статус платежа: PAID если платёж прошёл успешно, WAIT если платёж ещё не прошел, CANCEL если платёж отменён.
Где data - значение переданное при создании платежа в data.

Для просмотра выплаты, отправляем по адресу https://lk.rukassa.is/api/v1/getWithdrawInfo
Метод: POST или GET

Со следующими параметрами:
Поле Тип Обязательный Описание
id | order_id Int Номер вывода в нашей системе. Для order_id, номер вывода в Вашей системе.
shop_id Int ID магазина.
token String API токен из настроек вашего мерчанта.
Результатом вернет id, amount, status в формате JSON.
Где id - номер операции в нашей системе.
Где order_id - номер операции в вашей системе.
Где amount - сумма платежа.
Где fee - комиссия вывода.
Где way - название платёжного шлюза, куда будет осуществлен вывод.
Где who_fee - откуда спишется комиссия: INVOICE спишется со счёта, BALANCE спишется с баланса.
Где status - статус платежа: PAID если платёж прошёл успешно, IN PROCESS платёж отправлен и ожидает зачисления, WAIT платёж ожидает выплаты, CANCEL если платёж отменён.
Уведомления на сервер

При успешном проведении платежа на ссылку, указанную в настройках (URL оповещения) будет отправлен запрос со следующими данными:
Метод: POST
Поле Тип Описание
id Int Номер операции в нашей системе.
order_id Int Уникальный номер платежа в вашей системе.
amount Float Сумма платежа.
in_amount Float Сумма, которая была оплачена клиентом.
data Json Объект, передаваемый на сервер вместе с уведомлением об успешном платеже.
createdDateTime String Время создания платежа.
status String Статус платежа - PAID если платёж прошёл успешно.
$token = 'ВАШ ТОКЕН';

$sign = $_SERVER['HTTP_SIGNATURE'];
$sign2 = hash_hmac('sha256', $_POST['id'] . '|' . $_POST['createdDateTime'] . '|' . $_POST['amount'], $token);

if($sign == $sign2) {
	if($_POST['in_amount'] >= $_POST['amount']) {
		// Код в случае успешной оплаты
		// Для получения data используйте html_entity_decode($_POST['data']);
		echo 'OK'; // Вернуть ответ серверу
	} else {
		echo 'ERROR AMOUNT';
	}
} else {
	echo 'ERROR SIGN';
}
				

При смене статуса выплаты, будет отправлен запрос на указанный в настройках URL (URL для выплаты) со следующими данными:
Метод: POST
Поле Тип Описание
id Int Номер операции в нашей системе.
order_id Int Уникальный номер выплаты в вашей системе.
amount Float Сумма выплаты.
way String Название платёжного шлюза, куда будет осуществлен вывод.
status String Статус выплаты - PAID если платёж прошёл успешно, IN PROCESS если платёж обрабатывается, WAIT если платёж ещё не прошел, CANCEL если выплата отменена.
Баланс и вывод

Для получения баланса, отправляем по адресу https://lk.rukassa.is/api/v1/getBalance
Метод: POST

Со следующими параметрами:
Поле Тип Обязательный Описание
email String Email пользователя.
password String Пароль пользователя.
$data = [
'email'		=> 'Ваш email',
'password'	=> 'Ваш пароль',
];

$ch = curl_init('https://lk.rukassa.is/api/v1/getBalance');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data, '', '&'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$result = json_decode(curl_exec($ch));
curl_close($ch);

print_r($result->balance);
			
Результатом вернет balance_rub и balance_usd в формате JSON.
Где balance - кол-во средств у пользователя в нашей системе.

В случае ошибки вернет error и message.
Где error - код ошибки.
Где message - сообщение ошибки.

Для создания выплаты, отправляем по адресу https://lk.rukassa.is/api/v1/createWithdraw
Метод: POST

Со следующими параметрами:
Поле Тип Обязательный Описание
email String Email пользователя.
password String Пароль пользователя.
way String Платежная система для вывода. Системы: CARD, PHONE, USDT, SBP,
wallet String Номер кошелька или карты, куда будут отправлены средства.
amount Float Сумма для вывода.
from String Счёт для списания средств. По умолчанию: BASE_RUB. (BASE_RUB, BASE_USD)
order_id Int ID в системе мерчанта
who_fee Int От куда списывать комиссию. По умолчанию: 0. (0 - со счёта, 1 - с баланса)
bank Int Только для СБП. Номер банка
$data = [
'email'		=> 'Ваш email',
'password'	=> 'Ваш пароль',

'way'		=> 'Платёжная система CARD, QIWI, YOOMONEY, другие',
'wallet'	=> 'Номер кошелька или карты',
'amount'	=> 'Сумма для вывода',
];

$ch = curl_init('https://lk.rukassa.is/api/v1/createWithdraw');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data, '', '&'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$result = json_decode(curl_exec($ch));
curl_close($ch);

print_r('ID #' . $result->id . ' - ' . $result->status);
			
Результатом вернет id и status в формате JSON.
Где id - номер выплаты в нашей системе.
Где status - статус выплаты.

В случае ошибки вернет error и message.
Где error - код ошибки.
Где message - сообщение ошибки.

Для создания выплаты, отправляем по адресу https://lk.rukassa.is/api/v1/cancelWithdraw
Метод: POST

Со следующими параметрами:
Поле Тип Обязательный Описание
email String Email пользователя.
password String Пароль пользователя.
id Int ID выплаты в нашей системе.
$data = [
'email'		=> 'Ваш email',
'password'	=> 'Ваш пароль',

'id'		=> 'ID выплаты',
];

$ch = curl_init('https://lk.rukassa.is/api/v1/cancelWithdraw');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data, '', '&'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$result = json_decode(curl_exec($ch));
curl_close($ch);

print_r($result);

			
Результатом вернет id и status в формате JSON.
Где id - номер выплаты в нашей системе.
Где status - статус выплаты.

В случае ошибки вернет error и message.
Где error - код ошибки.
Где message - сообщение ошибки.
Обработка ошибок

В случае ошибки API возвращает error - код ошибки:

100 - не получено значение.
200 - не найден магазин или платеж.
300 - мерчант не прошел проверку.
400 - другая ошибка.

Подробное описание текущей ошибки смотреть в параметре message - сообщение ошибки