Перейти к содержимому

Выплата по СБП

Метод позволяет инициировать выплату через СБП (Система быстрых платежей). Запрос отправляется на эндпоинт init_payout с payout_type=sbp. Финальный статус приходит на notify_url, указанный в настройках выплат проекта; при необходимости статус можно опросить через Статус выплаты.

Формат запросов и подписи — в разделе Формат запроса к API.

Принцип работы

  1. Запрос — ваш сервер отправляет подписанный запрос на init_payout с идентификатором получателя в СБП и bank_id банка.
  2. Ответ — API возвращает order_id и начальный status (2, PENDING).
  3. Обработка — система проводит выплату.
  4. Уведомление (колбек) — финальный статус отправляется POST JSON на ваш notify_url.

Расшифровка кодов status и status_description — в разделе Статусы транзакций.

Техническая информация

Эндпоинтhttps://api.1payment.com/init_payout
МетодыGET, POST
Формат ответаJSON
Тип выплатыВ запросе обязательно payout_type=sbp (см. Типы выплат)

Параметры запроса

Обязательные

ПараметрТипОписание
payout_typeStringВсегда значение sbp.
partner_idIntegerВаш уникальный ID в системе 1Payment.
project_idIntegerИдентификатор вашего проекта.
amountNumberСумма выплаты: строго от 10 до 15000 (в валюте проекта).
destinationStringИдентификатор участника СБП (например, номер телефона 79261234567).
bank_idStringИдентификатор банка, 12 символов. Список банков — на сайте НСПК: значение поля schema без префикса bank. Пример для Сбербанка: 100000000111.
user_dataStringВаш внутренний ID выплаты (уникальное значение на стороне партнёра).
signStringКонтрольная подпись запроса (см. раздел «Подпись»).

Формирование подписи (sign)

Подпись: MD5, lowercase (hex). Общие правила — Формат запроса к API.

Формула:

MD5(init_payout + <параметры_без_sign_в_алфавитном_порядке_через_&> + <API_KEY>)

Пример строки до хеширования (минимальный набор полей из архивной документации):

init_payoutamount=50&destination=79261234567&partner_id=1234&payout_type=sbp&project_id=5678&user_data=1secret_key

Если передаёте bank_id и другие поля, они участвуют в строке подписи в алфавитном порядке.

Проверка подписи в документации

Проверка подписи {{method}}

Вставьте параметры запроса (JSON), API key и подпись. Виджет автоматически проверит корректность.

Строка параметров: amount=50&bank_id=100000000111&destination=79261234567&partner_id=1234&payout_type=sbp&project_id=5678&user_data=1
Строка для MD5: init_payoutamount=50&bank_id=100000000111&destination=79261234567&partner_id=1234&payout_type=sbp&project_id=5678&user_data=1
Ожидаемая подпись: 72880c9585a94544bd38b07518bd8590
Подпись не совпадает

Примеры запроса

const crypto = require('crypto');
const axios = require('axios');

async function createSbpPayout(apiKey, params) {
  // 1. Сортируем параметры по алфавиту
  const sortedKeys = Object.keys(params).sort();
  const queryString = sortedKeys.map((key) => `${key}=${params[key]}`).join('&');

  // 2. Подпись с префиксом init_payout
  const baseString = `init_payout${queryString}${apiKey}`;
  params.sign = crypto.createHash('md5').update(baseString).digest('hex');

  // 3. GET-запрос
  const response = await axios.get('https://api.1payment.com/init_payout', { params });
  return response.data;
}

const apiKey = process.env.ONEPAYMENT_API_KEY;
const data = {
  payout_type: 'sbp',
  partner_id: 1234,
  project_id: 5678,
  amount: 50,
  destination: '79261234567',
  bank_id: '100000000111',
  user_data: '1',
};

createSbpPayout(apiKey, data).then(console.log);

Ответ API

Успешный ответ (200):

{
  "order_id": "8p3brmb19gfg0sg8gcwhws8kgc748s87",
  "status": 2,
  "status_description": "PENDING",
  "status_code": 0
}
ПолеОписание
order_idID выплаты в системе 1Payment; используйте для запроса статуса.
statusЧисловой код состояния: 2 — ожидание, 3 — успех, 4 — отказ.
status_descriptionPENDING, SUCCESS или FAILURE.
status_codeКод причины отказа (при status = 4); см. Коды ошибок (отказы).

Ошибка запроса (400):

{
  "error_code": 2
}

Уведомления о статусе (колбеки)

После получения финального статуса выплаты на ваш notify_url (из настроек выплат проекта) отправляется POST-уведомление в формате JSON. Структура аналогична другим выплатам; payout_type — sbp.

Важно: ваш сервер должен вернуть HTTP 200 OK. Иначе система повторяет отправку колбека раз в минуту в течение 10 минут.

Проверка подписи колбека: MD5 от всех параметров в алфавитном порядке через & + API_KEY (без префикса init_payout). Подробнее — в разделе Формат запроса к API.

Связанные разделы

Статья была полезна?