Hacer un seguimiento del estado del pedido
Después de que un usuario haga una compra, su aplicación puede realizar las siguientes acciones:
- mostrar el estado del pedido en la interfaz de usuario de la aplicación
- abonar el importe en el saldo de un usuario tras un pago aceptado
- conceder los artículos comprados tras un pago aceptado
Cuando utilice el SDK para implementar la lógica de estas acciones, puede hacer un seguimiento del estado del pedido de las siguientes maneras:
Si utiliza tanto la biblioteca de Store como la biblioteca de Payments en su aplicación, le recomendamos que utilice el método de la biblioteca de Store para realizar el seguimiento del pedido.
Si solo utiliza la biblioteca de Payments, suscríbase a los cambios de estado de los pedidos mediante el método de la biblioteca de Payments. Utilice el método para solicitar el estado del pedido solo como opción complementaria para recuperar datos y evitar sobrecargar los sistemas de Xsolla.
Suscribirse a los cambios de estado de los pedidos
Utilice el método de la biblioteca de Store
Para suscribirse a los cambios de estado del pedido, use el método del SDK getOrderStatus de la biblioteca de Store y transmita los siguientes parámetros al método:
listener: objeto de agente de escucha del tipoOrderStatusListener.orderId: ID del pedido recibido de la compra mediante la cesta de la compra, compra con un solo clic o compra a cambio de moneda virtual como el parámetro.
Ejemplo de llamada al método 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)
Recomendamos invocar el método XStore.getOrderStatus al abrir la interfaz de pago.
Estos métodos de compra encapsulan varios métodos de seguimiento del estado del pedido. El seguimiento se realiza conforme al siguiente algoritmo:
- Hay establecida una conexión de socket web.
- Si la conexión de socket web está establecida correctamente y el estado del pedido cambia a
doneocancel, se detiene el seguimiento. Si la conexión de socket web falla o la respuesta contiene datos incorrectos, el seguimiento del estado del pedido se realiza mediante sondeo corto. - El seguimiento del estado del pedido prosigue con sondeo corto. Una simple solicitud HTTP de estado del pedido se envía una vez cada 3 segundos. El seguimiento se detiene si el estado del pedido cambia a
doneocancel.
Utilice el método de la biblioteca de Payments
Para realizar un seguimiento de los cambios de estado de los pedidos mediante la biblioteca de Payments, utilice la devolución de llamada del estado del pago. Para ello:
- Al crear el objeto
XPayments.IntentBuilder, transmita la devolución de llamadaStatusReceivedCallbackutilizando el métodosetStatusReceivedCallback. - Implemente el método
onSuccessen la devolución de llamadaStatusReceivedCallback, que se llama con cada cambio de estado único.
La información sobre el estado del pedido se transmite al método onSuccess en un objeto de tipo InvoicesDataResponse. Este objeto contiene una matriz de objetos InvoiceData. Cada objeto InvoiceData corresponde a una etapa concreta del procesamiento del pedido y contiene el estado de dicha etapa.
Por ejemplo, si el usuario inicialmente introdujo datos no válidos al realizar el pedido, aparecerá un objeto con el estado InvoicesDataResponse.CANCELED en la lista InvoiceData. Si después el usuario corrige los datos y realiza correctamente el pago del pedido, aparecerá un nuevo objeto InvoiceData en la matriz, ahora con el estado InvoicesDataResponse.Status.DONE.
El seguimiento del estado se detiene si se recibe el estado de pago final (InvoicesDataResponse.Status.DONE o InvoicesDataResponse.Status.ERROR).
Ejemplo
- 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()
Solicitar el estado del pedido
Para solicitar el estado actual del pago, llame al método getOrder de la biblioteca de Store, transmitiendo los siguientes parámetros:
orderId— el ID del pedido, que se recibió al realizar la compra a través de la cesta de la compra, compra con un solo clic o compra por moneda virtual.callback: la devolución de llamada para recuperar la información del pedido correctamente. Cuando implemente una devolución de llamada, utilice la interfazGetStatusCallbacke implemente los métodosonSuccessyonError.
La información sobre el estado del pedido se transmite al método onSuccess en un objeto de tipo InvoicesDataResponse. Este objeto contiene una matriz de objetos InvoiceData. Cada objeto InvoiceData corresponde a una etapa concreta del procesamiento del pedido y contiene el estado de dicha etapa.
Por ejemplo, si el usuario inicialmente introdujo datos no válidos al realizar el pedido, aparecerá un objeto con el estado InvoicesDataResponse.CANCELED en la lista InvoiceData. Si después el usuario corrige los datos y realiza correctamente el pago del pedido, aparecerá un nuevo objeto InvoiceData en la matriz, ahora con el estado InvoicesDataResponse.Status.DONE.
El seguimiento del estado se detiene si se recibe el estado de pago final (InvoicesDataResponse.Status.DONE o InvoicesDataResponse.Status.ERROR).
Ejemplo
- 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})
Enlaces útiles
Última actualización: 5 de Diciembre de 2025¿Has encontrado una errata u otro error de texto? Selecciona el texto y pulsa Ctrl+Intro.