Activer la récupération des paiements échoués
Il arrive que la connexion entre Salesforce et Payload échoue pendant l’envoi d’un paiement. Payload a peut-être encaissé l’argent, mais Salesforce n’a jamais reçu la réponse. REDA Pay enregistre une telle tentative comme une Pay Transaction au statut failed avec l’indicateur Process Callout Exception coché, et affiche au payeur le message qui commence par « Ooops.. we have experienced an unexpected exception. Your payment method may have been debited. Do not try to pay again… », accompagné d’un code.
La tâche Sync Failed Pay Order Transactions retrouve ces tentatives et demande à Payload ce qui s’est réellement passé. L’activer prend un clic dans l’onglet REDA Pay Admin, et toute organisation de production devrait l’avoir activée.
Activer la tâche
- Ouvrez l’application REDA Pay → onglet REDA Pay Admin.
- Sur la carte Sync Failed Pay Order Transactions (« System job to sync failed transactions againts a pay order in case of any runtime exceptions. »), passez Job Scheduled sur Yes.
- Le message « Batch job scheduled successfully. » le confirme. Désormais, la tâche s’exécute toutes les 15 minutes.
La repasser sur No l’arrête (« Batch job revoked successfully. »). La tâche apparaît dans la page Toutes les tâches prévues de la Configuration sous le nom Sync Failed Pay Order Transactions ; ne l’y supprimez pas, utilisez le commutateur.
Un commutateur. La tâche vérifie ensuite toutes les 15 minutes les paiements dont le résultat est inconnu.
Ce que fait la tâche
Toutes les 15 minutes, elle :
- Trouve les Pay Transactions créées dans l’heure qui portent Process Callout Exception.
- Pour chacune, demande à Payload toutes les transactions marquées avec ce Pay Order.
- Enregistre ce que Payload renvoie : met à jour les transactions que Salesforce possède et crée celles qui manquent, avec leur statut réel (processed, declined, etc.).
- Efface l’indicateur. Les tentatives de plus d’une heure ne sont pas traitées ; utilisez Sync Transaction sur l’ordre pour celles-ci.
Un paiement récupéré : la tentative échouée reste consignée ; le résultat réel figure à côté.
Exemple pratique
| Heure | Ce qui se passe |
|---|---|
| 10:02 | Un collaborateur appuie sur Process Order sur P-052010 pour 1 251,75 $. Payload reçoit la demande, mais la réponse n’arrive jamais dans Salesforce |
| 10:02 | L’écran affiche « 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… » suivi d’un code. Le collaborateur note le code et ne réessaie pas |
| 10:02 | Sous P-052010, une Pay Transaction T-0014500 est enregistrée au statut failed avec Process Callout Exception coché ; l’ordre reste Immediate - Not Processed |
| 10:15 | La tâche de récupération s’exécute. Elle trouve T-0014500, demande à Payload toutes les transactions marquées avec P-052010 et en obtient une : traitée, 1 251,75 $ |
| 10:15 | REDA Pay crée T-0014501 au statut processed sous P-052010 et efface l’indicateur sur T-0014500 |
| 10:20 | L’administrateur consulte la vue de liste Not Processed, voit P-052010 avec une transaction traitée et définit son Processed Datetime sur 10:02 pour que l’ordre indique Immediate - Processed |
Le code du message est l’identifiant de transaction de Payload, lorsque Payload en a renvoyé un avant l’échec. Le support peut retrouver le paiement chez Payload grâce à lui, avant même l’exécution de la tâche.
Où voir la tâche
| Où | Ce que vous voyez |
|---|---|
| Configuration → page Toutes les tâches prévues | Sync Failed Pay Order Transactions, avec une Prochaine exécution prévue dans les 15 minutes |
| Configuration → Tâches Apex | Une entrée de lot terminée pour chaque exécution |
| REDA Pay Logs → Attention Needed | Un journal uniquement lorsqu’une exécution a rencontré une erreur, par exemple Payload injoignable |
| Pay Transactions | Les transactions récupérées apparaissent avec leur statut réel à côté de la tentative échouée |
Si le commutateur refuse de basculer, l’utilisateur n’a pas REDA Pay - Admin User ; seul un administrateur peut planifier la tâche, qui s’exécute ensuite sous son identité.
Après une récupération : un point à vérifier
Lorsque la tâche (ou Sync Transaction, ou le rapprochement) ajoute après coup une transaction processed à un ordre, le Processed Datetime de l’ordre lui-même n’est pas renseigné et son Status indique toujours Immediate - Not Processed. Le paiement est réel ; c’est seulement l’ordre qui ne le dit pas. Deux conséquences :
- N’appuyez pas sur Process Pay Order sur un tel ordre : cela enverrait un second débit. L’ordre a une transaction traitée en dessous ; considérez-le comme payé.
- Pour que l’ordre se lise correctement, un administrateur peut le modifier et définir son Processed Datetime sur la date de la transaction. L’ordre se verrouille alors comme tout ordre traité.
C’est dans la vue de liste Not Processed des Pay Orders que ces cas apparaissent ; consultez-la après toute récupération.
Ce que le personnel doit faire quand le message apparaît
- N’appuyez plus sur rien, et n’ouvrez pas l’écran de paiement du même client pour « réessayer une fois ».
- Copiez le code du message dans les Internal Notes de l’ordre ou dans une requête.
- Dites au payeur : « Le paiement est peut-être passé ; nous vous le confirmons dans l’heure. »
- Dans les 15 minutes, ouvrez les Pay Transactions du Pay Order : une nouvelle transaction processed confirme le paiement ; seule une transaction failed dont l’indicateur est effacé, sans rien d’autre, signifie que Payload ne l’a jamais encaissé, et le paiement peut être encaissé de nouveau.
Erreurs à éviter
| Erreur | Ce qui se passe | Correction |
|---|---|---|
| Laisser la tâche désactivée | Des clients sont débités sans trace dans Salesforce jusqu’à une synchronisation manuelle | Activez-la |
| Appuyer sur Process Pay Order sur un ordre qui a une transaction traitée | Un second débit | Vérifiez d’abord la liste des Pay Transactions |
| Supprimer la tâche depuis la page des tâches prévues | Le commutateur indique toujours Yes, mais rien ne s’exécute | Passez-le sur No, puis sur Yes |
| S’attendre à ce qu’elle récupère des tentatives vieilles d’une semaine | Elle ne remonte qu’une heure en arrière | Utilisez Sync Transaction sur l’ordre |
Questions fréquentes
Non. Seulement les tentatives marquées Process Callout Exception.
Sous l’administrateur qui l’a activée. Si cet utilisateur est désactivé, désactivez puis réactivez le commutateur sous un autre administrateur.
Non. Les webhooks, c’est Payload qui informe Salesforce des changements de statut ultérieurs. Cette tâche, c’est Salesforce qui interroge Payload sur une tentative dont la première réponse s’est perdue. Les deux ont leur place dans une organisation de production.