Отслеживание статуса заказа
После совершения покупки в вашем приложении могут выполняться следующие действия:
- отображение статуса заказа в интерфейсе приложения;
- пополнение баланса виртуальной валюты пользователя в результате успешной оплаты;
- начисление купленных предметов пользователю в результате успешной оплаты.
Чтобы реализовать логику этих действий с помощью SDK, вы можете отслеживать статус заказа следующими способами:
- подписаться на изменение статуса заказа (рекомендуется);
- запрашивать статус заказа.
Если в своем приложении вы используете библиотеки Store и Payments, мы рекомендуем использовать для отслеживания заказа метод библиотеки Store.
Если вы используете только библиотеку Payments, подпишитесь на изменение статуса заказа с помощью метода библиотеки Payments. Используйте метод запроса статуса заказа только в качестве вспомогательного способа получения данных, чтобы избежать чрезмерной нагрузки на системы Xsolla.
Подписка на изменение статуса заказа
С помощью метода библиотеки Store
Чтобы подписаться на изменения статуса заказа, используйте метод SDK getOrderStatus из библиотеки Store. Передайте в метод следующие параметры:
listener— объект слушателя типаOrderStatusListener;orderId— ID заказа, полученный в результате покупки через корзину, покупки в один клик или покупки за виртуальную валюту.
Пример вызова метода XStore.getOrderStatus:
- kotlin
1XStore.getOrderStatus(object : OrderStatusListener() {
2
3 override fun onStatusUpdate(status: OrderResponse.Status) {
4
5 if(status == OrderResponse.Status.DONE) {
6
7 Log.d("MainActivity", "Success")
8
9 }
10
11 }
12
13 override fun onFailure() {
14
15 Log.d("MainActivity", "Failure")
16
17 }
18
19 }, orderId)
Мы рекомендуем вызывать метод XStore.getOrderStatus вместе с открытием платежного интерфейса.
Этот метод инкапсулирует в себя несколько методов отслеживания статуса заказа. Отслеживание выполняется по следующему алгоритму:
- Устанавливается веб-сокет-соединение.
- Если соединение установлено и статус заказа изменен на
doneилиcancel, отслеживание прекращается. Если не удалось установить веб-сокет-соединение либо в ответе приходят некорректные данные, статус заказа отслеживается с помощью short-polling. - Отслеживание статуса заказа продолжается с помощью short-polling. Раз в 3 секунды отправляется простой HTTP-запрос статуса заказа. Отслеживание прекращается, когда статус заказа изменится на
doneилиcancel.
С помощью метода библиотеки Payments
Чтобы отслеживать изменения статуса платежа с помощью библиотеки Payments, используйте обработчик статуса платежа. Для этого:
- При создании объекта
XPayments.IntentBuilderпередайте обработчикStatusReceivedCallbackс помощью методаsetStatusReceivedCallback. - В обработчике
onSuccessреализуйте методStatusReceivedCallback, который вызывается при каждом уникальном изменении статуса.
Данные о статусе заказа передаются в метод onSuccess в объекте с типом InvoicesDataResponse. Этот объект содержит массив объектов InvoiceData. Каждый объект InvoiceData соответствует определенному этапу в обработке заказа и содержит статус этого этапа.
Например, если пользователь сначала ввел некорректные данные при оформлении заказа, в списке InvoiceData появится объект со статусом InvoicesDataResponse.CANCELED. Если затем пользователь исправит данные и успешно оплатит заказ, в массиве появится новый объект InvoiceData уже со статусом InvoicesDataResponse.Status.DONE.
Отслеживание статуса прекращается, если получен финальный статус платежа (InvoicesDataResponse.Status.DONE или InvoicesDataResponse.Status.ERROR).
Пример:
- kotlin
1val intent = XPayments.createIntentBuilder(this)
2 .accessToken(<accessToken>)
3 .isSandbox(<isSandbox>)
4 .setStatusReceivedCallback(object : StatusReceivedCallback {
5 override fun onSuccess(data: InvoicesDataResponse) {
6 Log.d(TAG, "StatusReceivedCallback is fired. Result data = $data")
7 }
8 })
9 .build()
Запрос статуса заказа
Для запроса текущего статуса платежной транзакции вызовите метод getOrder из библиотеки Payments, передав в него следующие параметры:
orderId— ID заказа, который был получен в результате покупки через корзину, покупки в один клик или покупки за виртуальную валюту.callback— обработчик, вызываемый после успешного получения информации о заказе. При создании обработчика используйте интерфейсGetStatusCallbackи реализуйте методыonSuccessиonError.
Данные о статусе заказа передаются в метод onSuccess в объекте с типом InvoicesDataResponse. Этот объект содержит массив объектов InvoiceData. Каждый объект InvoiceData соответствует определенному этапу в обработке заказа и содержит статус этого этапа.
Например, если пользователь сначала ввел некорректные данные при оформлении заказа, в списке InvoiceData появится объект со статусом InvoicesDataResponse.CANCELED. Если затем пользователь исправит данные и успешно оплатит заказ, в массиве появится новый объект InvoiceData уже со статусом InvoicesDataResponse.Status.DONE.
Отслеживание статуса прекращается, если получен финальный статус платежа (InvoicesDataResponse.Status.DONE или InvoicesDataResponse.Status.ERROR).
Пример:
- kotlin
1
2XPayments.getStatus(<token>, <isSandbox>, object : GetStatusCallback {
3 override fun onSuccess(data: InvoicesDataResponse?) {
4 Log.d(TAG, "onSuccess is fired. Result data = $data")
5 }
6
7 override fun onError(throwable: Throwable?, errorMessage: String?) {
8 Log.d(TAG, "onError is fired. ErrorMessage = $errorMessage")
9 }
10
11})
Полезные ссылки
Последнее обновление: 5 декабря 2025Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.