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

Банковская карта

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

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

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

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

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

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

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

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

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

ПараметрТипОписание
payout_typeStringВсегда значение card.
partner_idIntegerВаш уникальный ID в системе 1Payment.
project_idIntegerИдентификатор вашего проекта.
amountNumberСумма выплаты в валюте проекта (например, 50).
destinationStringНомер банковской карты получателя.
user_dataStringВаш внутренний ID выплаты (уникальное значение на стороне партнёра).
receiver_countryStringСтрана получателя по паспорту, код ISO 3166-1 alpha-2 (например, RU).
signStringКонтрольная подпись запроса (см. раздел «Подпись»).

Параметры получателя (по согласованию)

Необходимость передачи уточняйте у менеджера 1Payment:

ПараметрТипОписание
first_nameStringИмя получателя.
last_nameStringФамилия получателя.
card_holderStringИмя держателя карты (Cardholder), как на карте.

Дополнительные

ПараметрТипОписание
yearStringГод окончания действия карты, две последние цифры (например, 26).
monthStringМесяц окончания действия карты (например, 01).
emailStringEmail получателя.
receiver_cityStringГород проживания получателя.
receiver_addressStringАдрес проживания получателя.
receiver_zipStringПочтовый индекс получателя.

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

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

Формула:

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

Пример строки до хеширования:

init_payoutamount=50&destination=1234123412341234&partner_id=1234&payout_type=card&project_id=5678&user_data=1secret_key

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

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

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

Строка параметров: amount=50&destination=1234123412341234&partner_id=1234&payout_type=card&project_id=5678&receiver_country=RU&user_data=1
Строка для MD5: init_payoutamount=50&destination=1234123412341234&partner_id=1234&payout_type=card&project_id=5678&receiver_country=RU&user_data=1
Ожидаемая подпись: 3f6d47b647816dd393a900fa23412605
Подпись не совпадает

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

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

async function createCardPayout(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: 'card',
  partner_id: 1234,
  project_id: 5678,
  amount: 50,
  destination: '1234123412341234',
  user_data: '1',
  receiver_country: 'RU',
};

createCardPayout(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_typeStringТип выплаты (card; см. Типы выплат).
project_idIntegerID вашего проекта.
order_idStringID выплаты из ответа при инициации.
statusInteger2 — ожидание, 3 — успешная выплата, 4 — отказ.
status_descriptionStringPENDING, SUCCESS или FAILURE.
init_timeStringВремя создания выплаты.
status_timeStringВремя получения статуса.
amountStringСумма выплаты.
balance_amountStringСумма списания с баланса.
destinationStringПолучатель; для выплат на карту — маска номера карты.
status_codeIntegerКод причины отказа (при status = 4).
paid_amountStringТолько при status = 2 (PENDING) и частичной выплате: сумма частичных выплат на текущий момент.
init_amountStringТолько при status = 3 (SUCCESS), если сумма инициации отличается от суммы выплаты: сумма инициации; в amount и balance_amount — фактические суммы проведённой выплаты.
signStringКонтрольная подпись колбека.

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

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

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

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