Caso uma transação não tenha uma resposta do Autorizador Stone 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.
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.
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();