Получение статуса заказа пользователя
Получение статуса заказа пользователя
Существуют следующие способы получить статус заказа пользователя:
- На стороне сервера с помощью вебхуков.
- На стороне клиента с помощью WebSocket API или Shop Builder API.
Получение статуса заказа на стороне сервера с помощью вебхуков
После того как вы настроили обработку вебхуков на вашем сервере, вы можете использовать их для получения статуса заказа и информации о заказе.Получение статуса заказа на стороне клиента с помощью WebSocket API или Shop Builder API
Если у вас нет своего сервера или вы используете логику обработки покупок на стороне клиента, вы можете использовать следующие способы:Получение статуса заказа на стороне клиента с помощью веб-сокет-соединения
Решение предусматривает использование веб-сокетов для получения статусов заказа без получения подробной информации о самом заказе. Этот способ является предпочтительным: между клиентом (например, вашим сайтом или мобильным приложением) и сервером Xsolla устанавливается только одно подключение, поэтому нет дополнительной нагрузки ни на клиент, ни на сервер.
Примечание
Если у вас нет своего сервера для обработки вебхуков или вы используете логику обработки покупок на стороне клиента, вы можете использовать веб-сокет-соединение с помощью Centrifuge SDK.
Выполните следующие действия:
- Для того чтобы веб-сокет-сервер Xsolla и ваш клиент могли идентифицировать сообщения со статусом заказа, создайте соединение:
Copy
- javascript
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
- Чтобы получать новые сообщения о статусах заказов, подпишитесь на события с помощью функции
client.on
:
Copy
- javascript
1client.on('publication', (ctx) => {
2 //handle the status
3});
- Установите соединение:
Copy
- javascript
1client.connect()
- Чтобы получать историю изменений статусов заказов, подключите метод API history method.
Copy
- javascript
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
- javascript
1{
2order_id: 59614241,
3status: 'new'
4}
Возможны следующие статусы заказа:
New
— заказ создан и еще не оплачен.Paid
— заказ оплачен.Done
— заказ полностью доставлен (в том числе отправлены все чеки, выполнены доставки на стороне Xsolla, внешних платформ и т.д.).Canceled
— заказ отменен, оплата возвращена пользователю.
Рекомендации при работе с веб-сокетами:
- Установите максимальное время ожидания ответча через веб-сокет — 5 минут.
- Устанавливайте соединение при открытии платежного интерфейса.
- Прерывайте соединение после получения финального статуса заказа:
Canceled
илиDone
. - По истечении времени жизни веб-сокета или при возникновении проблем с соединением используйте простые запросы.
Простые запросы (short-polling)
Чтобы получить детальную информацию о товарах в заказе после перехода в нужный статус, используйте API-метод Получение заказа.
Примечание
Используется периодический опрос статуса заказа — простой HTTP-запрос, который получает текущий статус заказа, а также информацию по нему. Рекомендуемая задержка между запросами — 3 секунды.
Была ли статья полезна?
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.