SDKs de nível empresarial para Android / Acompanhamento do status do pedido
  Voltar aos Documentos

SDKs de nível empresarial para Android

Acompanhamento do status do pedido

Aviso
O SDK permite que você rastreie o status do pedido no lado do cliente do seu aplicativo. Porém, recomendamos configurar um gerenciador de webhook Payment para receber informações no back-end do seu aplicativo. Isso permite que você implemente validações adicionais das compras concluídas.

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:

Aviso

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 tipo OrderStatusListener.
  • 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.
Documentação de referência do SDK
Saiba mais sobre os métodos SDK e seus parâmetros.

Exemplo de chamada do método 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)

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:

  1. Uma conexão de websocket é estabelecida.
  2. Se a conexão for estabelecida com sucesso e o status do pedido for alterado para done ou cancel, o rastreamento é interrompido. Se uma conexão de websocket falhar ou a resposta contiver dados incorretos, o status do pedido é rastreado usando short-polling.
  3. 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 done ou cancel.

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:
  1. Ao calcular o objeto XPayments.IntentBuilder, passe o retorno de chamada StatusReceivedCallback usando o método setStatusReceivedCallback.
  2. Implemente o método onSuccess no retorno de chamada StatusReceivedCallback, que é chamado a cada alteração de status diferente.
Aviso

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:

Copy
Full screen
Small screen
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()

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:

Aviso

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:

Copy
Full screen
Small screen

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")
            }

})
Este artigo foi útil?
Obrigado!
Podemos melhorar alguma coisa? Mensagem
Que pena ouvir isso
Explique porque este artigo não foi útil para você. Mensagem
Obrigado pelo seu feedback!
Avaliaremos sua mensagem e a usaremos para melhorar sua experiência.

Links úteis

Última atualização: 5 de Setembro de 2024

Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.

Relatar um problema
Nós sempre avaliamos nossos conteúdos. Seu feedback nos ajuda a melhorá-los.
Forneça um e-mail para que possamos responder
Obrigado pelo seu feedback!