Ativar a recuperação de pagamentos com falha
De vez em quando, a conexão entre o Salesforce e a Payload falha enquanto um pagamento está sendo enviado. A Payload pode ter recebido o dinheiro, mas o Salesforce nunca recebeu a resposta. O REDA Pay registra essa tentativa como uma Pay Transaction com status failed e a marcação Process Callout Exception ativada, e mostra ao pagador a mensagem que começa com "Ooops.. we have experienced an unexpected exception. Your payment method may have been debited. Do not try to pay again…", com um código.
O trabalho Sync Failed Pay Order Transactions encontra essas tentativas e pergunta à Payload o que realmente aconteceu. Ativá-lo é uma etapa de um clique na guia REDA Pay Admin, e toda organização de produção deve tê-lo ativado.
Ativar o trabalho
- Abra o aplicativo REDA Pay → guia REDA Pay Admin.
- No cartão Sync Failed Pay Order Transactions ("System job to sync failed transactions againts a pay order in case of any runtime exceptions."), mude Job Scheduled para Yes.
- A mensagem "Batch job scheduled successfully." confirma. Daí em diante, o trabalho roda a cada 15 minutos.
Mudar para No o interrompe ("Batch job revoked successfully."). O trabalho aparece na página Todos os trabalhos agendados da Configuração como Sync Failed Pay Order Transactions; não o exclua lá, use a chave.
Uma chave. O trabalho então verifica a cada 15 minutos os pagamentos cujo resultado é desconhecido.
O que o trabalho faz
A cada 15 minutos, ele:
- Encontra as Pay Transactions criadas na última hora que têm o Process Callout Exception.
- Para cada uma, pede à Payload todas as transações marcadas com aquela Pay Order.
- Salva o que a Payload devolve: atualiza as transações que o Salesforce tem e cria as que faltam, com o status real (processed, declined e assim por diante).
- Limpa a marcação. Tentativas com mais de uma hora não são tocadas; use o Sync Transaction na ordem para elas.
Um pagamento recuperado: a tentativa com falha fica registrada; o resultado real fica ao lado dela.
Exemplo prático
| Horário | O que acontece |
|---|---|
| 10:02 | Um membro da equipe pressiona Process Order na P-052010, de $1,251.75. A Payload recebe a solicitação, mas a resposta nunca chega ao Salesforce |
| 10:02 | A tela mostra "Ooops.. we have experienced an unexpected exception. Your payment method may have been debited. Do not try to pay again and quote following code to the support team…", seguido de um código. O membro da equipe anota o código e não tenta de novo |
| 10:02 | Abaixo da P-052010, uma Pay Transaction T-0014500 é salva com Status failed e Process Callout Exception marcado; a ordem continua Immediate - Not Processed |
| 10:15 | O trabalho de recuperação roda. Ele encontra a T-0014500, pede à Payload todas as transações marcadas com a P-052010 e recebe uma: processada, $1,251.75 |
| 10:15 | O REDA Pay cria a T-0014501 com Status processed abaixo da P-052010 e limpa a marcação da T-0014500 |
| 10:20 | O administrador confere o modo de exibição de lista Not Processed, vê a P-052010 com uma transação processada e define o Processed Datetime dela como 10:02, para que a ordem mostre Immediate - Processed |
O código na mensagem é o identificador da Payload para a transação, quando a Payload devolveu um antes da falha. O suporte consegue encontrar o pagamento na Payload a partir dele, mesmo antes de o trabalho rodar.
Onde ver o trabalho
| Onde | O que você vê |
|---|---|
| Configuração → página Todos os trabalhos agendados | Sync Failed Pay Order Transactions, com uma Próxima execução agendada dentro de 15 minutos |
| Configuração → Trabalhos do Apex | Uma entrada de lote concluída para cada execução |
| REDA Pay Logs → Attention Needed | Um log só quando uma execução deu erro, por exemplo a Payload inacessível |
| Pay Transactions | As transações recuperadas aparecem com o status real ao lado da tentativa com falha |
Se a chave se recusa a mudar, o usuário não tem o REDA Pay - Admin User; o trabalho só pode ser agendado por um administrador e então roda como esse administrador.
Depois de uma recuperação: uma coisa a conferir
Quando o trabalho (ou o Sync Transaction, ou a conciliação) acrescenta uma transação processed a uma ordem depois do fato, o Processed Datetime da própria ordem não é preenchido e o Status dela continua Immediate - Not Processed. O pagamento é real; só a ordem não diz isso. Duas consequências:
- Não pressione Process Pay Order em uma ordem assim: isso enviaria uma segunda cobrança. A ordem tem uma transação processada abaixo dela; trate-a como paga.
- Para que a ordem fique correta, um administrador pode editá-la e definir o Processed Datetime com a data da transação. A ordem então fica bloqueada como qualquer ordem processada.
O modo de exibição de lista Not Processed de Pay Orders é onde esses casos aparecem; confira-o depois de qualquer recuperação.
O que a equipe deve fazer quando a mensagem aparece
- Não pressione nada de novo e não abra a tela de pagamento do mesmo cliente para "tentar mais uma vez".
- Copie o código da mensagem para as Internal Notes da ordem ou para um caso.
- Diga ao pagador: "O pagamento pode ter sido concluído; vamos confirmar dentro de uma hora."
- Em até 15 minutos, abra as Pay Transactions da Pay Order: uma nova transação processed confirma o pagamento; só uma failed com a marcação limpa e nada mais significa que a Payload nunca o recebeu, e o pagamento pode ser feito de novo.
Erros comuns a evitar
| Erro | O que acontece | Solução |
|---|---|---|
| Deixar o trabalho desativado | Clientes debitados sem registro no Salesforce até alguém sincronizar à mão | Ative-o |
| Pressionar Process Pay Order em uma ordem que tem uma transação processada | Uma segunda cobrança | Confira antes a lista de Pay Transactions |
| Excluir o trabalho na página de trabalhos agendados | A chave continua em Yes, mas nada roda | Mude para No e depois para Yes |
| Esperar que ele recupere tentativas de uma semana atrás | Ele olha só uma hora para trás | Use o Sync Transaction na ordem |
Perguntas frequentes
Não. Só nas tentativas marcadas com Process Callout Exception.
Como o administrador que o ativou. Se esse usuário for desativado, desative e ative de novo a chave como outro administrador.
Não. Os webhooks são a Payload avisando o Salesforce sobre mudanças de status posteriores. Este trabalho é o Salesforce perguntando à Payload sobre uma tentativa cuja primeira resposta se perdeu. Os dois são necessários em uma organização de produção.