Получение статуса заказа пользователя

Получение статуса заказа пользователя

Существуют следующие способы получить статус заказа пользователя:

  1. На стороне сервера с помощью вебхуков.
  2. На стороне клиента с помощью WebSocket API или Shop Builder API.

Получение статуса заказа на стороне сервера с помощью вебхуков

После того как вы настроили обработку вебхуков на вашем сервере, вы можете использовать их для получения статуса заказа и информации о заказе.

Получение статуса заказа на стороне клиента с помощью WebSocket API или Shop Builder API

Если у вас нет своего сервера или вы используете логику обработки покупок на стороне клиента, вы можете использовать следующие способы:
  1. WebSocket API.
  2. Простые запросы (Short-polling).

Получение статуса заказа на стороне клиента с помощью веб-сокет-соединения

Решение предусматривает использование веб-сокетов для получения статусов заказа без получения подробной информации о самом заказе. Этот способ является предпочтительным: между клиентом (например, вашим сайтом или мобильным приложением) и сервером Xsolla устанавливается только одно подключение, поэтому нет дополнительной нагрузки ни на клиент, ни на сервер.

Примечание
Если у вас нет своего сервера для обработки вебхуков или вы используете логику обработки покупок на стороне клиента, вы можете использовать веб-сокет-соединение с помощью Centrifuge SDK.

Выполните следующие действия:

  1. Для того чтобы веб-сокет-сервер Xsolla и ваш клиент могли идентифицировать сообщения со статусом заказа, создайте соединение:

Copy
Full screen
Small screen
 1const client = new Centrifuge(
 2connectionURL,
 3{
 4data: {
 5  user_external_id: user_external_id,
 6  auth: auth,
 7  project_id: project_id
 8}
 9}
10)
11connectionURL - wss://ws-store.xsolla.com/connection/websocket
12auth - user JWT token
  1. Чтобы получать новые сообщения о статусах заказов, подпишитесь на события с помощью функции client.on:
Copy
Full screen
Small screen
1client.on('publication', (ctx) => {
2   //handle the status
3});
  1. Установите соединение:
Copy
Full screen
Small screen
1client.connect()
  1. Чтобы получать историю изменений статусов заказов, подключите метод API history method.
Copy
Full screen
Small screen
 1client.on('subscribed', function (ctx) {
 2   client.history(ctx.channel, { limit: -1, since: { offset: 0 }, reverse: false }).then(function (resp) {
 3resp.publications.forEach((ctx) => {
 4   /handle the status
 5});
 6
 7   }, function (err) {
 8       //handle the status
 9   });
10});

Пример тела сообщения:

Copy
Full screen
Small screen
1{
2order_id: 59614241,
3status: 'new'
4}

Возможны следующие статусы заказа:

  • New — заказ создан и еще не оплачен.
  • Paid — заказ оплачен.
  • Done — заказ полностью доставлен (в том числе отправлены все чеки, выполнены доставки на стороне Xsolla, внешних платформ и т.д.).
  • Canceled — заказ отменен, оплата возвращена пользователю.

Рекомендации при работе с веб-сокетами:

  • Установите максимальное время ожидания ответча через веб-сокет — 5 минут.
  • Устанавливайте соединение при открытии платежного интерфейса.
  • Прерывайте соединение после получения финального статуса заказа: Canceled или Done.
  • По истечении времени жизни веб-сокета или при возникновении проблем с соединением используйте простые запросы.

Простые запросы (short-polling)

Чтобы получить детальную информацию о товарах в заказе после перехода в нужный статус, используйте API-метод Получение заказа.

Примечание
Используется периодический опрос статуса заказа — простой HTTP-запрос, который получает текущий статус заказа, а также информацию по нему. Рекомендуемая задержка между запросами — 3 секунды.
Была ли статья полезна?
Спасибо!
Что может сделать страницу еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
Последнее обновление: 4 июля 2025

Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.

Сообщите о проблеме
Мы постоянно улучшаем качество нашей документации. Ваш отзыв поможет нам в этом.
Укажите email-адрес, чтобы мы могли связаться с вами
Спасибо за обратную связь!
Не получилось отправить ваш комментарий
Попробуйте еще раз позже или напишите нам на [email protected].
OSZAR »