Caso uma transação não tenha uma resposta do Autorizador Stone ou da API de QRCode e retorne timeout, o SDK Android marcará a transação com o status WITH_ERROR e, com isso, enviará automaticamente um desfazimento logo em seguida no caso de Autorização, ou atualizará os dados no caso de transações PIX (processo chamado de Sonda).
Se o desfazimento for efetuado com sucesso, a transação terá status atualizado de WITH_ERROR para CANCELLED e o provider finalizado como erro COMMUNICATION_ERROR.
Se a requisição de cancelamento também tiver timeout, será retornado o status WITH_ERROR.
O ReversalProvider deve ser utilizado para os casos em que existem transações com desfazimento pendente (status WITH_ERROR). Este provider varrerá o banco procurando por transações com esse status para realizar o cancelamento ou sonda.
BOA PRÁTICA
Crie uma rotina no seu App para chamar este Provider para realizar o cancelamento das transações que ficarem com status WITH_ERROR.
A falta desta rotina pode resultar em cobranças duplicadas dos consumidores finais.
ReversalProvider reversalProvider = new ReversalProvider(CONTEXT);
reversalProvider.setDialogMessage("Cancelando transação com erro");
reversalProvider.isDefaultUI();
reversalProvider.setConnectionCallback(new StoneCallbackInterface() {
@Override
public void onSuccess() {
// code code code
}
@Override
public void onError() {
// code code code
}
});
reversalProvider.execute();
Sonda de Transações PIX
Transações PIX que forem abortadas pelo usuário após o pagamento e antes do POS identificar o crédito em conta (devido, por exemplo, à instabilidade de rede) serão atualizadas para APROVADAS e constarão nos relatórios, e isso deve ser considerado em qualquer fluxo de conciliação de sua solução.
Isso se dá ao fato de não haver, de fato, reversão para pagamentos instantaneas.