Acompanhamento do status do pedido
Depois que um usuário faz uma compra, seu aplicativo pode executar as seguintes ações:
- mostrar o status do pedido na interface do aplicativo
- creditar o saldo de um usuário após um pagamento bem-sucedido
- conceder os itens comprados após um pagamento bem-sucedido
Ao usar o SDK para implementar a lógica dessas ações, você pode rastrear o status do pedido das seguintes maneiras:
Se você usa ambas bibliotecas Store e Payments no seu aplicativo, recomendamos usar o método de biblioteca Store para rastrear o pedido.
Se você usa apenas a biblioteca Payments, cadastre-se às alterações de status dos pedidos usando o método da biblioteca Payments. Use o método request the order status apenas como método auxiliar de recuperar dados para evitar sobrecarregar os sistemas da Xsolla.
Inscrevendo-se nas alterações de status do pedido
Use o método de biblioteca Store
Para se inscrever nas alterações de status de pedido, use o método SDK getOrderStatus da biblioteca Store e passe os seguintes parâmetros ao método:
listener— objeto do ouvinte do tipoOrderStatusListener.orderId— ID do pedido recebido da compra através do carrinho de compras, compras com um clique ou compras com moedas virtuais como parâmetro.
Exemplo de chamada do 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 chamar o método XStore.getOrderStatus ao abrir a interface de pagamento.
Esses métodos de compra encapsulam vários métodos para controlar o status do pedido. O rastreamento é realizado de acordo com o seguinte algoritmo:
- Uma conexão de websocket é estabelecida.
- Se a conexão for estabelecida com sucesso e o status do pedido for alterado para
doneoucancel, o rastreamento é interrompido. Se uma conexão de websocket falhar ou a resposta contiver dados incorretos, o status do pedido é rastreado usando short-polling. - O rastreamento do status do pedido continua com short-polling. Uma solicitação de status de pedido HTTP simples é enviada a cada 3 segundos. O rastreamento é interrompido se o status do pedido for alterado para
doneoucancel.
Use o método da biblioteca Payments
Para rastrear alterações nos status dos pedido usando a biblioteca Payments, use o retorno de chamada de status de pagamento. Para fazer isso:
- Ao calcular o objeto
XPayments.IntentBuilder, passe o retorno de chamadaStatusReceivedCallbackusando o métodosetStatusReceivedCallback. - Implemente o método
onSuccessno retorno de chamadaStatusReceivedCallback, que é chamado a cada alteração de status diferente.
As informações de status do pedido são passadas ao método onSuccess em um objeto do tipo InvoicesDataResponse. Esse objeto contém uma matriz de objetos InvoiceData. Cada objeto InvoiceData corresponde a um estágio específico no processamento de pedidos e contém o status dessa etapa.
Por exemplo, se o usuário inicialmente inserir dados inválidos ao fazer um pedido, um objeto com o status InvoicesDataResponse.CANCELED aparecerá na lista InvoiceData. Se o usuário corrigir posteriormente os dados e pagar o pedido com sucesso, um novo objeto InvoiceData aparecerá na matriz, agora com o status InvoicesDataResponse.Status.DONE.
O rastreamento de status é interrompido se o status de pagamento final (InvoicesDataResponse.Status.DONE ou InvoicesDataResponse.Status.ERROR) for recebido.
Exemplo:
- 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()
Solicitando o status do pedido
Para solicitar o status atual do pagamento, chame o método getOrder da biblioteca Store, passando os seguintes parâmetros a ele:
orderId— o ID do pedido, que foi recebido da compra pelo carrinho de compras, compra de um clique ou compra com moeda virtual.callback— o retorno de chamada por receber as informações do pedido com sucesso. Ao implementar um retorno de chamada, use a interfaceGetStatusCallbacke implemente os métodosonSuccesseonError.
As informações de status do pedido são passadas ao método onSuccess em um objeto do tipo InvoicesDataResponse. Esse objeto contém uma matriz de objetos InvoiceData. Cada objeto InvoiceData corresponde a um estágio específico no processamento de pedidos e contém o status dessa etapa.
Por exemplo, se o usuário inicialmente inserir dados inválidos ao fazer um pedido, um objeto com o status InvoicesDataResponse.CANCELED aparecerá na lista InvoiceData. Se o usuário corrigir posteriormente os dados e pagar o pedido com sucesso, um novo objeto InvoiceData aparecerá na matriz, agora com o status InvoicesDataResponse.Status.DONE.
O rastreamento de status é interrompido se o status de pagamento final (InvoicesDataResponse.Status.DONE ou InvoicesDataResponse.Status.ERROR) for recebido.
Exemplo:
- 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})
Links úteis
Última atualização: 5 de Dezembro de 2025Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.