Создание инвойса
Метод позволяет выставить инвойс (счёт на оплату) и получить ссылку на платёжную форму. Запрос отправляется на эндпоинт init_invoice. После оплаты или истечения срока действия инвойса финальный статус приходит на invoice_notify_url, указанный в настройках проекта.
Формат запросов и подписи — в разделе Формат запроса к API.
Принцип работы
- Запрос — ваш сервер отправляет подписанный запрос на
init_invoiceс суммой иinvoice_user_data. - Ответ — API возвращает
invoice_idиurlплатёжной страницы. - Оплата — вы перенаправляете плательщика по
urlили передаёте ссылку иным способом. - Уведомление (колбек) — при финальном статусе инвойса отправляется POST JSON на
invoice_notify_urlпроекта.
Расшифровка кодов status — в разделе Статусы транзакций.
Техническая информация
| Эндпоинт | https://api.1payment.com/init_invoice |
| Методы | GET, POST |
| Формат ответа | JSON |
Параметры запроса
Обязательные
| Параметр | Тип | Описание |
|---|---|---|
partner_id | Integer | Ваш уникальный ID в системе 1Payment. |
project_id | Integer | Идентификатор вашего проекта. |
amount | Number | Сумма инвойса в валюте проекта (например, 50). |
invoice_user_data | String | Ваш внутренний ID инвойса (уникальное значение на стороне партнёра). |
sign | String | Контрольная подпись запроса (см. раздел «Подпись»). |
Дополнительные
| Параметр | Тип | Описание |
|---|---|---|
description | String | Описание платежа для плательщика. |
success_url | String | URL возврата плательщика после успешной оплаты. |
failure_url | String | URL возврата плательщика после ошибки оплаты. |
Формирование подписи (sign)
Подпись: MD5, lowercase (hex). Общие правила — Формат запроса к API.
Формула:
MD5(init_invoice + <параметры_без_sign_в_алфавитном_порядке_через_&> + <API_KEY>)Пример строки до хеширования (как в архивной документации, без invoice_user_data в минимальном примере):
init_invoiceamount=50&description=test_payment&partner_id=1234&project_id=5678secret_keyЕсли передаёте invoice_user_data, success_url и другие поля, они участвуют в строке подписи в алфавитном порядке.
Проверка подписи в документации
Проверка подписи init_invoice
Вставьте параметры запроса (JSON), API key и подпись. Виджет автоматически проверит корректность.
amount=50&description=test_payment&invoice_user_data=inv_12345&partner_id=1234&project_id=5678init_invoiceamount=50&description=test_payment&invoice_user_data=inv_12345&partner_id=1234&project_id=5678e65714bdce70f68c92553ed3c2ecbb47Примеры запроса
const crypto = require('crypto');
const axios = require('axios');
async function createInvoice(apiKey, params) {
// 1. Сортируем параметры по алфавиту
const sortedKeys = Object.keys(params).sort();
const queryString = sortedKeys.map((key) => `${key}=${params[key]}`).join('&');
// 2. Подпись с префиксом init_invoice
const baseString = `init_invoice${queryString}${apiKey}`;
params.sign = crypto.createHash('md5').update(baseString).digest('hex');
// 3. GET-запрос
const response = await axios.get('https://api.1payment.com/init_invoice', { params });
return response.data;
}
const apiKey = process.env.ONEPAYMENT_API_KEY;
const data = {
partner_id: 1234,
project_id: 5678,
amount: 50,
description: 'test_payment',
invoice_user_data: 'inv_12345',
};
createInvoice(apiKey, data).then(console.log);Ответ API
Успешный ответ (200):
{
"invoice_id": "inv_dp2eqgnyt008ocg88wwsw00oksgs8s88",
"url": "https://merchant.1payment.com/xZ5g7F"
}| Поле | Описание |
|---|---|
invoice_id | ID инвойса в системе 1Payment. |
url | Ссылка на платёжную форму; перенаправьте плательщика по этому адресу. |
Ошибка запроса (400):
{
"error_code": 2
}Уведомления о статусе (колбеки)
После получения финального статуса инвойса на ваш invoice_notify_url (из настроек проекта) отправляется POST-уведомление в формате JSON.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
type | String | Да | Тип уведомления; для инвойса — invoice. |
invoice_id | String | Да | ID инвойса в системе 1Payment. |
order_id | String | Нет | При успешной оплате — ID транзакции, которой оплачен инвойс. |
project_id | Integer | Да | ID вашего проекта. |
status | Integer | Да | 3 — инвойс оплачен, 4 — истёк срок ожидания оплаты. |
init_time | String | Да | Время создания инвойса. |
vaild_till | String | Да | Время окончания срока действия инвойса (имя поля — как в API). |
amount | Number | Да | Сумма, на которую выставлен инвойс. |
currency | String | Да | Валюта инвойса (ISO 4217). |
invoice_user_data | String | Да | ID инвойса, переданный при создании. |
sign | String | Да | Контрольная подпись колбека. |
Важно: ваш сервер должен вернуть HTTP 200 OK. Иначе система повторяет отправку колбека раз в минуту в течение 10 минут.
Проверка подписи колбека: MD5 от всех параметров в алфавитном порядке через & + API_KEY (без префикса init_invoice). Подробнее — в разделе Формат запроса к API.