Neste tópico vamos descrever como checar casos onde o pedido consta como pago no gateway, mas foi cancelado na VTEX. Para analisar o que ocorreu em cada caso em específico, é necessário checar os logs da transação referente ao pedido em questão, para isso basta acessar a página de “Transações” e clicar sobre a transação desejada.
Note que o número da transação referente a um pedido específico é o mesmo número do sequencial do pedido, ou seja, o número logo ao lado do número do pedido:
Checando os logs da transação é possível encontrar as Regras da Autorização da Transação,
“Authorization Rules ”:
Nelas são definidas:
- o número de tentativas de autorizar essa transação no campo
MaxEnqueues
; - o tempo até a primeira tentativa no campo
FirstReTryAttemptInSeconds
; - tempo mínimo entre tentativas no campo
MinimumScaleInMinutes
; - tempo máximo entre tentativas no campo
MaximumScaleInMinutes
.
Sendo assim, após realizar todas as tentativas definidas no campo MaxEnqueues
, é então disparado o fluxo de cancelamento do pedido:
Cabe ressaltar que o número de tentativas é calculado com base no valor enviado pelo gateway de pagamentos no campo delayToCancel
na resposta da requisição da transação, conforme a documentação Create Payment. Ou seja, esse campo não pode ser alterado pelo cliente ou diretamente na plataforma VTEX, é um campo que precisa ser ajustado pelo conector de pagamentos, caso seja necessário.
O valor enviado no campo é dividido por 86.400 (segundos em um dia), se o resultado for maior que 0 significa que o delayToCancel
é maior que um dia. Se for esse o caso, a quantidade de novas tentativas será igual a 6 tentativas por dia.
Se o resultado da divisão for igual a 0, significa que o delayToCancel
tem um tempo menor ou igual a 1 dia para ser cancelado, sendo assim nesse caso, será feita 1 nova tentativa por hora.
Ou seja, se o campo delayToCancel
for maior que 24 horas (86.400 segundos), serão feitas 6 tentativas por dia. Se for menor, será feita uma por hora.
Caso esse campo seja enviado como null
, serão feitas 336 tentativas para aprovação desse tipo de pagamento.
Casos de time out:
Além do cancelamento por não aprovação do pagamento dentro do limite de tentativas estipulado, é possível que em alguns casos pedidos que tenham o boleto como método de pagamento tenham o fluxo de cancelamento disparado após um timeout, esse erro ocorre quando o conector não responde à requisição de autorização da transação dentro de 20 segundos, conforme o nosso Payment Provider Protocol. Nesses casos o seguinte erro será exibido nos logs da transação Message = Timeout by cancellation token
:
Recomendações:
Infelizmente nesses cenários não é possível “descancelar” esses pedidos. Então algumas recomendações podem ser feitas:
- Checar com o parceiro o que pode ter ocorrido, pois a VTEX é 100% passiva no que tange ao fluxo de pagamentos, apenas recebemos a notificação do parceiro e alteramos o status da transação.
- Para evitar maiores prejuízos, uma alternativa é gerar um vale-presente para o cliente final no valor do pedido e solicitar que o mesmo refaça o pedido. Existem algumas formas de fazer com que esse processo seja feito de uma maneira mais simples e com menos fricção para o cliente final, que é através da utilização do carrinho compartilhável. Deixo aqui o link da nossa documentação que trata dessa solução: Carrinho compartilhável
Possíveis dúvidas:
É possível mudar o status de um pedido cancelado para dar prosseguimento à transação?
Resp.: Infelizmente não, depois que o fluxo de cancelamento de uma transação é disparado não há como “descancelar” ela.
É possível alterar o número de tentativas de aprovação de um pedido?
Resp.: Os conectores conseguem fazer isso através do campo delayToCancel
que deve ser enviado na resposta da requisição da transação, conforme a seguinte documentação: Create Payment
Karina Mota
Field Software Engineer | VTEX