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

Создание платежа по host2host (GATE)

Этот способ интеграции позволяет создать платёж через SberPay напрямую с вашего сервера. Вы получаете два типа ссылок: обычную веб-ссылку и Deep Link для мгновенного перехода в мобильное приложение «СберБанк Онлайн».

Главное преимущество — возможность гибко управлять сценарием оплаты в зависимости от устройства пользователя (App-to-App или Web-to-App), что обеспечивает максимально высокую конверсию.

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

  1. Запрос — ваш сервер отправляет данные заказа и выбранный тип взаимодействия (sberpay_type) на эндпоинт 1Payment.
  2. Получение ссылок — в ответ вы получаете redirect_url и deep_link.
  3. Оплата — вы перенаправляете клиента. Использование Deep Link на смартфонах позволяет сразу открыть приложение Сбера для подтверждения транзакции.
  4. Уведомление (колбек) — мы присылаем callback с финальным статусом на ваш notify_url.

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

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

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

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

Эти поля необходимы для корректного создания платежа.

ПараметрТипОписание
partner_idIntegerВаш уникальный ID в системе 1Payment.
payment_typeStringВсегда значение sberpay.
project_idIntegerИдентификатор вашего проекта.
amountNumberСумма платежа. Формат: 100.00.
user_dataStringВаш внутренний ID заказа (вернётся в колбеке).
sberpay_typeStringСпособ взаимодействия: app2app (из приложения), web2app (из браузера), mweb2app (из мобильного браузера).
signStringКонтрольная подпись запроса (см. раздел «Подпись»).

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

Позволяют передать расширенную информацию о клиенте или настроить возврат.

ПараметрТипОписание
descriptionStringОписание заказа для плательщика.
deep_linkStringАдрес для перенаправления в ваше приложение после оплаты.
return_urlStringURL, куда вернуть плательщика после оплаты в банке.
phoneStringНомер телефона плательщика.
emailStringЭлектронная почта плательщика.
user_idStringВнутренний ID плательщика в вашей системе.
subscribeIntegerПередайте 1 для создания подписки.
tokenStringТокен привязанной карты (для оплаты по подписке).

Формирование подписи (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_777
Строка для MD5: init_paymentamount=50.00&partner_id=1234&payment_type=sberpay&project_id=5678&sberpay_type=app2app&user_data=order_777
Ожидаемая подпись: b8bed1ebf9e4a39cec80e2950b50cc93
Подпись не совпадает

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

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_typeStringДаТип платежа (sberpay).
order_idStringДаИдентификатор платежа в системе 1Payment.
project_idIntegerДаID вашего проекта.
statusIntegerДа2 — ожидание, 3 — успех, 4 — отказ.
status_descriptionStringДаТекст статуса: PENDING, SUCCESS или FAILURE.
init_timeStringДаВремя создания платежа.
status_timeStringДаВремя получения финального статуса.
merchant_priceNumberДаИтоговая сумма платежа.
user_priceNumberДаОтчисления партнёра.
currencyStringДаКод ISO 4217.
accountStringДаТехнический маркер (sberpay).
user_dataStringДаВаш ID заказа.
signStringДаКонтрольная подпись уведомления.
status_codeStringНетКод ошибки при отказе.

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

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

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

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