Перейти к содержанию

Перенаправление на страницу оплаты через прямой вызов API

Способ интеграции, при котором бэкенд магазина самостоятельно напрямую вызывает методы API платежного сервиса XPAY.

Размещение API платежного сервиса XPAY: https://pay-service.xpay.by/api/v1/

Бизнес процесс

При использовании данного способа интеграции процесс оплаты выглядит следующим образом:

  1. Покупатель наполняет корзину покупок в онлайн магазине Мерчанта и нажимает на кнопку “Купить”.
  2. Бэкенд или сервер интернет-магазина Мерчанта формирует заказ и отображает страницу выбора способа оплаты.
  3. Покупатель выбирает способ оплаты XPAY и нажимает кнопку “Оплатить”.
  4. Бэкенд или сервер интернет-магазина Мерчанта создаёт сессию оформления заказа через вызов API и получает URL-адрес перенаправления. URL-адрес перенаправления содержит подписанный токен.
  5. Веб интерфейс интернет-магазина Мерчанта перенаправляет Покупателя на страницу оплаты XPAY по полученному URL-адресу перенаправления.
  6. Платежный сервис XPAY преобразует токен, полученный из URL-адреса, чтобы получить данные сессии
  7. Платежный сервис XPAY отображает платежную формы Покупателю и проводит оплату.
  8. После завершение оплаты платежный сервис XPAY отображает результат платёжной транзакции и возвращает Покупателя на страницу интернет-магазина Мерчанта, полученную из данных сессии.

Сценарий интеграции

1) Создать сеанс оформления заказа

Для создания сессии из бэкенда или с сервера Мерчанта отправляется запрос POST /v1/checkout/sessions с указанием суммы, валюты, URL возврата, X-API-Key и деталями корзины заказа.

Запрос

Заголовок запроса:

Параметр Обязательный Описание Заполнение
Content-Type ДА Тип содержимого application/json
X-API-Key ДА Аутентификация. Ключ API Мерчанта. Выдан XPAY при регистрации Мерчанта, хранится в конфигурации Мерчанта. Мерчант никогда не отправляет его из браузера, только между серверами. Взять из конфигурации Мерчанта. “sdrtywe54tgfe3gw4543f”
Idempotency-Key НЕТ Дополнительный ключ для обеспечения идемпотентности. Чтобы избежать повторной оплаты заказа Заполнить уникальным идентификатором заказа

Тело запроса:

json атрибут Обязательный Описание Заполнение
merchantId ДА Ваш идентификатор Мерчанта, выданный XPAY при регистрации Мерчанта Взять из конфигурации Мерчанта. “f436c940-e86d-4ea7-89c0-e72552419220”
amount ДА Сумма (минимум 0,01) 99.99
currency ДА ISO 4217 (например, BYN, USD, EUR) “BYN”
successReturnUrl ДА Куда отправить клиента после оплаты https://golden-shop.by/checkout/order-received/206/?key=wc_order_Kzo6qw9G1qdlw
cancelReturnUrl ДА Куда отправить клиента после отмены бронирования https://golden-shop.by/checkout/
orderId НЕТ Дополнительная ссылка на заказ (максимум 255 символов) 206
merchantName НЕТ Наименование магазина Мерчанта (максимум 200 символов) “Золотая груша”
description НЕТ Дополнительное описание (максимум 500 символов) “Заказ физлица (3 товарных позиции, 12 единиц товара)”
metadata НЕТ Не обязательный дополнительный блок данных. Может передавать детали о корзине заказа. см. пример заполнения ниже

Пример заполнения атрибута metadata:

    {
            "cartItems": [
                {
                    "quantity": 4,
                    "price": 15.96,
                    "name": "Sticker"
                },
                {
                    "quantity": 1,
                    "price": 5.6,
                    "name": "Pencil"
                }
            ]
        }

Пример заполнения тела запроса:

{ 
    "merchantId": "f436c940-e86d-4ea7-89c0-e72552419220",
    "amount": 15.96,
    "currency": "BYN",
    "successReturnUrl": "https://golden-shop.by/checkout/order-received/206/?key=wc_order_Kzo6qw9G1qdlw",
    "cancelReturnUrl": "https://golden-shop.by/checkout/",
    "orderId": "206",
    "merchantName": "Золотая груша",
    "metadata": { 
    "cartItems": [ 
        { 
            "quantity": 4,
            "price": 15.96,
            "name": "Sticker" 
        } 
                 ] 
                }
}

Ответ

Ответ 201 содержит:

  • checkoutUrl (с подписанным токеном), чтобы перенаправить Покупателя на платёжную страницу XPAY.
  • sessionId - Идентификатор сессия оформления заказа.
  • expiresAt - Таймаут сессия оформление заказа.

Пример ответа 201:

{ 
    "checkoutUrl": "http://web-ui.pay.local/checkout?token=Y3Nf...",
    "sessionId": "cs_f58119275369",
    "expiresAt": "2026-02-18T21:03:00Z"
}

Сессия оформления заказа в платёжном сервисе XPAY создана.

2) Перенаправить Покупателя на платежный сервис для оплаты

Перенаправьте Покупателя на страницу оформления заказа по checkoutUrl (например, с помощью HTTP 302 или ссылки/кнопки).

Токен в checkoutUrl подписан, не изменяйте его.

3) Подготовить страницы возврата Покупателя в магазин после оплаты

Подготовьте страницы магазина, куда Покупатель вернётся после оплаты.

После оплаты Покупатель перенаправляется на successReturnUrl или cancelReturnUrl , которые были указаны Мерчантом при создании сессии оформления заказа.