Создание платежа по host2host (GATE)
Этот способ интеграции позволяет создать платёж через SberPay напрямую с вашего сервера. Вы получаете два типа ссылок: обычную веб-ссылку и Deep Link для мгновенного перехода в мобильное приложение «СберБанк Онлайн».
Главное преимущество — возможность гибко управлять сценарием оплаты в зависимости от устройства пользователя (App-to-App или Web-to-App), что обеспечивает максимально высокую конверсию.
Принцип работы
- Запрос — ваш сервер отправляет данные заказа и выбранный тип взаимодействия (
sberpay_type) на эндпоинт 1Payment. - Получение ссылок — в ответ вы получаете
redirect_urlиdeep_link. - Оплата — вы перенаправляете клиента. Использование Deep Link на смартфонах позволяет сразу открыть приложение Сбера для подтверждения транзакции.
- Уведомление (колбек) — мы присылаем callback с финальным статусом на ваш
notify_url.
Техническая информация
| Эндпоинт | https://api.1payment.com/init_payment |
| Методы | GET, POST |
| Формат ответа | JSON |
| Тип платежа | В запросе обязательно payment_type=sberpay |
Параметры запроса
Обязательные
Эти поля необходимы для корректного создания платежа.
| Параметр | Тип | Описание |
|---|---|---|
partner_id | Integer | Ваш уникальный ID в системе 1Payment. |
payment_type | String | Всегда значение sberpay. |
project_id | Integer | Идентификатор вашего проекта. |
amount | Number | Сумма платежа. Формат: 100.00. |
user_data | String | Ваш внутренний ID заказа (вернётся в колбеке). |
sberpay_type | String | Способ взаимодействия: app2app (из приложения), web2app (из браузера), mweb2app (из мобильного браузера). |
sign | String | Контрольная подпись запроса (см. раздел «Подпись»). |
Дополнительные
Позволяют передать расширенную информацию о клиенте или настроить возврат.
| Параметр | Тип | Описание |
|---|---|---|
description | String | Описание заказа для плательщика. |
deep_link | String | Адрес для перенаправления в ваше приложение после оплаты. |
return_url | String | URL, куда вернуть плательщика после оплаты в банке. |
phone | String | Номер телефона плательщика. |
email | String | Электронная почта плательщика. |
user_id | String | Внутренний ID плательщика в вашей системе. |
subscribe | Integer | Передайте 1 для создания подписки. |
token | String | Токен привязанной карты (для оплаты по подписке). |
Формирование подписи (sign)
Подпись — это MD5-хеш в нижнем регистре. Общие правила — Формат запроса к API.
Формула:
MD5(init_payment + <параметры_без_sign_в_алфавитном_порядке_через_&> + <API_KEY>)Сценарий 1 — только обязательные поля
Моковые данные: amount=50, partner_id=1234, payment_type=sberpay, project_id=5678, sberpay_type=app2app, user_data=order_777.
init_paymentamount=50&partner_id=1234&payment_type=sberpay&project_id=5678&sberpay_type=app2app&user_data=order_777secret_keyПроверка подписи в документации
Проверка подписи {{method}}
Вставьте параметры запроса (JSON), API key и подпись. Виджет автоматически проверит корректность.
amount=50.00&partner_id=1234&payment_type=sberpay&project_id=5678&sberpay_type=app2app&user_data=order_777init_paymentamount=50.00&partner_id=1234&payment_type=sberpay&project_id=5678&sberpay_type=app2app&user_data=order_777b8bed1ebf9e4a39cec80e2950b50cc93Примеры запроса
const crypto = require('crypto');
const axios = require('axios');
async function createSberPayPayment(apiKey, params) {
// 1. Сортируем параметры по алфавиту
const sortedKeys = Object.keys(params).sort();
const queryString = sortedKeys.map((key) => `${key}=${params[key]}`).join('&');
// 2. Генерируем подпись с префиксом init_payment
const baseString = `init_payment${queryString}${apiKey}`;
params.sign = crypto.createHash('md5').update(baseString).digest('hex');
// 3. Отправляем POST-запрос
try {
const response = await axios.post('https://api.1payment.com/init_payment', params);
return response.data;
} catch (error) {
console.error('Ошибка:', error.message);
}
}
// Пример данных запроса
const mockApiKey = process.env.ONEPAYMENT_API_KEY;
const mockData = {
partner_id: 1234,
project_id: 5678,
amount: '50.00',
payment_type: 'sberpay',
sberpay_type: 'app2app',
user_data: 'order_777',
};
createSberPayPayment(mockApiKey, mockData).then(console.log);Ответ API
Успешный ответ (200):
{
"order_id": "8p3brmb19gfg0sg8gcwhws8kgc748s87",
"status": 2,
"status_description": "PENDING",
"redirect_url": "https://secure_link_to_sberpay",
"deep_link": "sberpay://link_to_app"
}| Поле | Описание |
|---|---|
order_id | Уникальный ID платежа в системе 1Payment. |
status | Цифровой код состояния (2 — ожидание). |
status_description | Текстовое описание статуса (PENDING и др.). |
redirect_url | Веб-ссылка для оплаты в браузере. |
deep_link | Ссылка для прямого перехода в приложение Сбера. |
Ошибка запроса (400):
{
"error_code": 2
}Уведомления о статусе (колбеки)
При изменении статуса на ваш notify_url будет отправлено POST-уведомление в формате JSON.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
payment_type | String | Да | Тип платежа (sberpay). |
order_id | String | Да | Идентификатор платежа в системе 1Payment. |
project_id | Integer | Да | ID вашего проекта. |
status | Integer | Да | 2 — ожидание, 3 — успех, 4 — отказ. |
status_description | String | Да | Текст статуса: PENDING, SUCCESS или FAILURE. |
init_time | String | Да | Время создания платежа. |
status_time | String | Да | Время получения финального статуса. |
merchant_price | Number | Да | Итоговая сумма платежа. |
user_price | Number | Да | Отчисления партнёра. |
currency | String | Да | Код ISO 4217. |
account | String | Да | Технический маркер (sberpay). |
user_data | String | Да | Ваш ID заказа. |
sign | String | Да | Контрольная подпись уведомления. |
status_code | String | Нет | Код ошибки при отказе. |
Важно: ваш сервер должен вернуть HTTP 200 OK. Иначе система повторяет отправку колбека раз в минуту в течение 10 минут.
Проверка подписи колбека: MD5 от всех параметров в алфавитном порядке через & + API_KEY (без префикса init_payment). Подробнее — в разделе Формат запроса к API.