Passer au contenu principal
Pour chaque événement de transaction, LigdiCash envoie deux requêtes POST à votre callback_url :
  • Une en application/x-www-form-urlencoded
  • Une en application/json
Les deux contiennent exactement les mêmes données. Votre serveur va donc recevoir deux appels pour un seul événement. Sans déduplication, vous risquez de traiter la même transaction deux fois — livrer une commande en double, déclencher deux remboursements, créditer un compte deux fois.

Stratégie de déduplication

La méthode la plus simple consiste à marquer chaque transaction traitée dans votre base de données et à ignorer les appels suivants pour la même transaction.
1

Extraire votre transaction_id

Parsez custom_data pour extraire votre transaction_id via keyof_customdata. Voir Parser custom_data.
2

Vérifier si déjà traité

Avant tout traitement, cherchez si cet identifiant existe déjà dans votre table de transactions traitées.
3

Traiter et marquer atomiquement

Si non traité, effectuez votre traitement et marquez la transaction comme traitée dans la même transaction de base de données. L’atomicité évite les race conditions si les deux requêtes arrivent simultanément.

Implémentation

La contrainte d’unicité en base de données est plus fiable qu’un simple SELECT suivi d’un INSERT — deux requêtes simultanées peuvent passer le SELECT en même temps avant que l’une des deux n’ait effectué son INSERT.

Pages associées