Отслеживание статуса заказа
После совершения покупки в вашем приложении могут выполняться следующие действия:
- отображение статуса заказа в интерфейсе приложения;
- пополнение баланса виртуальной валюты пользователя в результате успешной оплаты;
- начисление купленных предметов пользователю в результате успешной оплаты.
Чтобы реализовать логику этих действий с помощью SDK, вы можете отслеживать статус заказа следующими способами:
- подписаться на изменение статуса заказа (рекомендуется);
- запрашивать статус заказа.
Если в своем приложении вы используете библиотеки Store и Payments, мы рекомендуем использовать для отслеживания заказа метод библиотеки Store.
Если вы используете только библиотеку Payments, подпишитесь на изменение статуса заказа с помощью метода библиотеки Payments. Используйте метод запроса статуса заказа только в качестве вспомогательного способа получения данных, чтобы избежать чрезмерной нагрузки на системы Xsolla.
Подписка на изменение статуса заказа
С помощью метода библиотеки Store
Чтобы подписаться на изменения статуса заказа, используйте метод SDK getOrderStatus
из библиотеки Store. Передайте в метод следующие параметры:
listener
— объект слушателя типаOrderStatusListener
;orderId
— ID заказа, полученный в результате покупки через корзину, покупки в один клик или покупки за виртуальную валюту.
Пример вызова метода XStore.getOrderStatus:
- kotlin
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
вместе с открытием платежного интерфейса.
Этот метод инкапсулирует в себя несколько методов отслеживания статуса заказа. Отслеживание выполняется по следующему алгоритму:
- Устанавливается веб-сокет-соединение.
- Если соединение установлено и статус заказа изменен на
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
val intent = XPayments.createIntentBuilder(this)
.accessToken(<accessToken>)
.isSandbox(<isSandbox>)
.setStatusReceivedCallback(object : StatusReceivedCallback {
override fun onSuccess(data: InvoicesDataResponse) {
Log.d(TAG, "StatusReceivedCallback is fired. Result data = $data")
}
})
.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
XPayments.getStatus(<token>, <isSandbox>, object : GetStatusCallback {
override fun onSuccess(data: InvoicesDataResponse?) {
Log.d(TAG, "onSuccess is fired. Result data = $data")
}
override fun onError(throwable: Throwable?, errorMessage: String?) {
Log.d(TAG, "onError is fired. ErrorMessage = $errorMessage")
}
})
Полезные ссылки
Последнее обновление: 5 сентября 2024Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.