Банковская карта
Метод позволяет инициировать выплату на банковскую карту получателя. Запрос отправляется на эндпоинт init_payout с payout_type=card. Финальный статус приходит на notify_url, указанный в настройках выплат проекта; при необходимости статус можно опросить через Статус выплаты.
Формат запросов и подписи — в разделе Формат запроса к API.
Принцип работы
- Запрос — ваш сервер отправляет подписанный запрос на
init_payoutс реквизитами карты и суммой выплаты. - Ответ — API возвращает
order_idи начальныйstatus(2,PENDING). - Обработка — система проводит выплату; при частичном зачислении возможен промежуточный статус
PENDINGс полемpaid_amountв колбеке. - Уведомление (колбек) — финальный статус отправляется POST JSON на ваш
notify_url.
Расшифровка кодов status и status_description — в разделе Статусы транзакций.
Техническая информация
| Эндпоинт | https://api.1payment.com/init_payout |
| Методы | GET, POST |
| Формат ответа | JSON |
| Тип выплаты | В запросе обязательно payout_type=card (см. Типы выплат) |
Параметры запроса
Обязательные
| Параметр | Тип | Описание |
|---|---|---|
payout_type | String | Всегда значение card. |
partner_id | Integer | Ваш уникальный ID в системе 1Payment. |
project_id | Integer | Идентификатор вашего проекта. |
amount | Number | Сумма выплаты в валюте проекта (например, 50). |
destination | String | Номер банковской карты получателя. |
user_data | String | Ваш внутренний ID выплаты (уникальное значение на стороне партнёра). |
receiver_country | String | Страна получателя по паспорту, код ISO 3166-1 alpha-2 (например, RU). |
sign | String | Контрольная подпись запроса (см. раздел «Подпись»). |
Параметры получателя (по согласованию)
Необходимость передачи уточняйте у менеджера 1Payment:
| Параметр | Тип | Описание |
|---|---|---|
first_name | String | Имя получателя. |
last_name | String | Фамилия получателя. |
card_holder | String | Имя держателя карты (Cardholder), как на карте. |
Дополнительные
| Параметр | Тип | Описание |
|---|---|---|
year | String | Год окончания действия карты, две последние цифры (например, 26). |
month | String | Месяц окончания действия карты (например, 01). |
email | String | Email получателя. |
receiver_city | String | Город проживания получателя. |
receiver_address | String | Адрес проживания получателя. |
receiver_zip | String | Почтовый индекс получателя. |
Формирование подписи (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=1init_payoutamount=50&destination=1234123412341234&partner_id=1234&payout_type=card&project_id=5678&receiver_country=RU&user_data=13f6d47b647816dd393a900fa23412605Примеры запроса
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_id | ID выплаты в системе 1Payment; используйте для запроса статуса. |
status | Числовой код состояния: 2 — ожидание, 3 — успех, 4 — отказ. |
status_description | PENDING, SUCCESS или FAILURE. |
status_code | Код причины отказа (при status = 4); см. Коды ошибок (отказы). |
Ошибка запроса (400):
{
"error_code": 2
}Уведомления о статусе (колбеки)
После получения финального статуса выплаты на ваш notify_url (из настроек выплат проекта) отправляется POST-уведомление в формате JSON.
| Параметр | Тип | Описание |
|---|---|---|
payout_type | String | Тип выплаты (card; см. Типы выплат). |
project_id | Integer | ID вашего проекта. |
order_id | String | ID выплаты из ответа при инициации. |
status | Integer | 2 — ожидание, 3 — успешная выплата, 4 — отказ. |
status_description | String | PENDING, SUCCESS или FAILURE. |
init_time | String | Время создания выплаты. |
status_time | String | Время получения статуса. |
amount | String | Сумма выплаты. |
balance_amount | String | Сумма списания с баланса. |
destination | String | Получатель; для выплат на карту — маска номера карты. |
status_code | Integer | Код причины отказа (при status = 4). |
paid_amount | String | Только при status = 2 (PENDING) и частичной выплате: сумма частичных выплат на текущий момент. |
init_amount | String | Только при status = 3 (SUCCESS), если сумма инициации отличается от суммы выплаты: сумма инициации; в amount и balance_amount — фактические суммы проведённой выплаты. |
sign | String | Контрольная подпись колбека. |
Важно: ваш сервер должен вернуть HTTP 200 OK. Иначе система повторяет отправку колбека раз в минуту в течение 10 минут.
Проверка подписи колбека: MD5 от всех параметров в алфавитном порядке через & + API_KEY (без префикса init_payout). Подробнее — в разделе Формат запроса к API.