Game Sales / Получение статуса заказа пользователя
  На главную

Game Sales

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   }, function (err) {
       //handle the status
   });
});

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

Copy
Full screen
Small screen
{
order_id: 59614241,
status: 'new'
}

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

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

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

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

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

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

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

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

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