今日已更新 267 条资讯 | 累计 41487 条内容
关于我们

标签:#afrique

找到 1 篇相关文章

AI 资讯

Trois fournisseurs mobile money, trois modèles d'idempotence, dont deux qui n'en ont aucun

À trois semaines de l'échéance du 30 septembre, beaucoup d'équipes de l'UEMOA écrivent du code de paiement dans l'urgence. La BCEAO a reporté à cette date la connexion à la plateforme PI-SPI pour les banques, les établissements de monnaie électronique et les établissements de paiement. Fin juin, 80 participants étaient connectés et 74 institutions encore en phase de test réel. Le Sénégal mène l'Union avec 20 institutions autorisées au 2 avril. PI-SPI règle l'interopérabilité entre institutions. Il ne règle pas ce que fait votre code quand un appel à Wave ou à Orange Money expire et que votre file de jobs le rejoue. C'est de ça que parle cet article, parce que c'est le bug que l'urgence produit et qu'on ne voit qu'en production, sur l'argent de quelqu'un d'autre. Le scénario, en trois lignes Un client valide sa commande. Vous appelez l'API du fournisseur. La requête met trente secondes, votre client HTTP abandonne, le job échoue, Laravel le relance. Le paiement est-il passé une fois ou deux ? La réponse dépend entièrement du fournisseur, et les trois que j'ai intégrés répondent différemment. MTN MoMo : une clé, et un piège dans sa réponse MTN est le seul des trois à fournir une vraie clé d'idempotence. L'en-tête X-Reference-Id sur POST /collection/v1_0/requesttopay , qui doit être un UUID. Si vous y mettez votre numéro de commande, l'API refuse sans expliquer pourquoi. Rejouez la même référence et MTN ne rejoue pas le paiement. Il répond : HTTP / 1.1 409 Conflict {"code": "RESOURCE_ALREADY_EXIST"} Le piège est là. Beaucoup de code PHP traite tout ce qui n'est pas 2xx comme un échec, et mon driver faisait pareil. Suivez alors le chemin complet : l'appelant subit un timeout, rejoue avec la même clé, reçoit un 409, voit une exception, conclut que rien n'est passé, et repart avec une nouvelle référence. Cette nouvelle référence est une nouvelle demande de paiement. Le client reçoit un second prompt. S'il valide, il paie deux fois. La clé a parfaitement fonctionné. C'est

2026-09-10 原文 →