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
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:
- Uma conexão de websocket é estabelecida.
- Se a conexão for estabelecida com sucesso e o status do pedido for alterado para
done
oucancel
, 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
done
oucancel
.
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 chamadaStatusReceivedCallback
usando o métodosetStatusReceivedCallback
. - Implemente o método
onSuccess
no 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
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:
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 interfaceGetStatusCallback
e implemente os métodosonSuccess
eonError
.
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
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")
}
})
Links úteis
Última atualização: 5 de Setembro de 2024Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.