Prime de 30 000 FCFA En litige : un modérateur tranche.
9

Gérer les notifications de paiement en double avec Laravel

MC Mariam Coulibaly 433 il y a 3 mois Côte d'Ivoire

Mon opérateur envoie parfois deux fois la même notification de succès, et j'ai crédité deux fois le portefeuille d'un client. Comment rendre le traitement idempotent ?

Modifiée il y a 1 heure
  • Quel message d'erreur exact voyez-vous dans les journaux du serveur ? · Wanjiru Kamau · il y a 3 mois

1 réponse

4
EN Estelle Ngono 336 · il y a 3 mois

Stockez la référence de transaction de l'opérateur dans une colonne unique. Traitez la notification dans une transaction et ignorez l'erreur de contrainte :

DB::transaction(function () use ($payload) {
    $paiement = Paiement::where('reference', $payload['reference'])->lockForUpdate()->firstOrFail();
    if ($paiement->statut === 'reussi') {
        return;
    }
    $paiement->update(['statut' => 'reussi']);
    $paiement->user->wallet->increment('solde', $paiement->montant);
});

Vous connaissez la réponse ? Rejoignez Griot pour aider.

Publier

Poser une question Obtenir de l'aide de la communauté Publier un composant Partager un SDK, un wrapper ou un package Proposer un troc Échanger une heure d'aide contre une autre Créer une prime Récompenser une solution en Mobile Money Organiser un hackathon Lancer un défi pour la communauté
Troc de compétences Primes Hackathons Observatoire