SDK для Android / Отслеживание статуса заказа
  На главную

SDK для Android

Отслеживание статуса заказа

Внимание
SDK позволяет отслеживать статус заказа на клиентской части вашего приложения. Однако мы рекомендуем настроить обработчик вебхука Успешный платеж и получать информацию о заказе на серверной части вашего приложения. Это позволит реализовать дополнительную валидацию совершенных покупок.

После совершения покупки в вашем приложении могут выполняться следующие действия:

  • отображение статуса заказа в интерфейсе приложения;
  • пополнение баланса виртуальной валюты пользователя в результате успешной оплаты;
  • начисление купленных предметов пользователю в результате успешной оплаты.

Чтобы реализовать логику этих действий с помощью SDK, вы можете отслеживать статус заказа следующими способами:

Подписка на изменение статуса заказа

Чтобы подписаться на изменения статуса заказа, используйте метод SDK getOrderStatus из библиотеки Store. Передайте в метод следующие параметры:

  • listener — объект слушателя типа OrderStatusListener;
  • orderId — ID заказа, полученный в результате покупки через корзину, покупки в один клик или покупки за виртуальную валюту.
Справочная документация SDK
Узнайте больше о методах SDK и их параметрах.

Пример вызова метода XStore.getOrderStatus:

Copy
Full screen
Small screen
XStore.getOrderStatus(object : OrderStatusListener() {

               override fun  onStatusUpdate(status: OrderResponse.Status) {

                   if(status == OrderResponse.Status.DONE) {

                       Log.d("MainActivity", "Success")

                   }

               }

               override fun  onFailure() {

                   Log.d("MainActivity", "Failure")

               }

           }, orderId)

Мы рекомендуем вызывать метод XStore.getOrderStatus вместе с открытием платежного интерфейса.

Этот метод инкапсулирует в себя несколько методов отслеживания статуса заказа. Отслеживание выполняется по следующему алгоритму:

  1. Устанавливается веб-сокет-соединение.
  2. Если соединение установлено и статус заказа изменен на done или cancel, отслеживание прекращается. Если не удалось установить веб-сокет-соединение либо в ответе приходят некорректные данные, статус заказа отслеживается с помощью short-polling.
  3. Отслеживание статуса заказа продолжается с помощью short-polling. Раз в 3 секунды отправляется простой HTTP-запрос статуса заказа. Отслеживание прекращается, когда статус заказа изменится на done или cancel.

Запрос статуса заказа

Вы также можете запрашивать статус заказа например, при перенаправлении пользователя в приложение из платежного интерфейса. Используйте статусы, возвращаемые классом XPayments, чтобы отслеживать закрытие платежного интерфейса.

Внимание
Статусы, возвращаемые классом XPayments, показывают, завершил ли пользователь покупку в платежном интерфейсе, и не соответствуют статусам платежной транзакции.

Класс XPayments может вернуть следующие статусы:

  • XPayments.Status.COMPLETED — пользователь завершил оплату и вернулся в приложение;
  • XPayments.Status.CANCELLED — пользователь закрыл платежный интерфейс, не завершив оплату;
  • XPayments.Status.UNKNOWN — при оплате произошла ошибка, например банк отклонил транзакцию.

Для запроса текущего статуса платежной транзакции используйте метод getOrder из библиотеки Store. В качестве параметра передайте ID заказа, полученный в результате покупки через корзину, покупки в один клик или покупки за виртуальную валюту.

Была ли статья полезна?
Спасибо!
Что может сделать страницу еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
Оценить страницу
Оценить страницу
Что может сделать страницу еще лучше?

В другой раз

Спасибо за обратную связь!

Полезные ссылки

Последнее обновление: 26 марта 2024

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

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