[{"data":1,"prerenderedAt":242},["ShallowReactive",2],{"content:/docs/callback":3},{"id":4,"title":5,"body":6,"description":235,"extension":236,"meta":237,"navigation":66,"path":238,"seo":239,"stem":240,"__hash__":241},"content/fr/docs/callback/index.md","Callbacks",{"type":7,"value":8,"toc":231},"minimark",[9,13,27,32,38,125,139,152,156,163,212,219,227],[10,11,5],"h1",{"id":12},"callbacks",[14,15,16,17,21,22,26],"p",{},"PayRouter résout les paiements de façon asynchrone. Lorsqu'un fournisseur confirme\nle résultat final, PayRouter fait avancer la transaction dans sa machine à états\npuis notifie ",[18,19,20],"strong",{},"votre"," ",[23,24,25],"code",{},"callback_url",".",[28,29,31],"h2",{"id":30},"votre-callback-marchand","Votre callback marchand",[14,33,34,35,37],{},"Fournissez ",[23,36,25],{}," lors de la création d'une transaction. PayRouter y envoie\nl'état final en POST :",[39,40,45],"pre",{"className":41,"code":42,"language":43,"meta":44,"style":44},"language-http shiki shiki-themes github-dark","POST https://your-app/payments/callback\nContent-Type: application/json\n\n{\n  \"reference\": \"\u003Cpayrouter-reference>\",\n  \"merchant_reference\": \"INV-2026-0001\",\n  \"transaction_status\": \"Success\",        // ou \"Failed\"\n  \"amount\": \"100.00\",\n  \"currency\": \"CDF\",\n  \"customer_number\": \"0810000000\",\n  \"provider_reference\": \"\u003Cprovider-txn-id>\"\n}\n","http","",[23,46,47,55,61,68,74,80,86,95,101,107,113,119],{"__ignoreMap":44},[48,49,52],"span",{"class":50,"line":51},"line",1,[48,53,54],{},"POST https://your-app/payments/callback\n",[48,56,58],{"class":50,"line":57},2,[48,59,60],{},"Content-Type: application/json\n",[48,62,64],{"class":50,"line":63},3,[48,65,67],{"emptyLinePlaceholder":66},true,"\n",[48,69,71],{"class":50,"line":70},4,[48,72,73],{},"{\n",[48,75,77],{"class":50,"line":76},5,[48,78,79],{},"  \"reference\": \"\u003Cpayrouter-reference>\",\n",[48,81,83],{"class":50,"line":82},6,[48,84,85],{},"  \"merchant_reference\": \"INV-2026-0001\",\n",[48,87,89,92],{"class":50,"line":88},7,[48,90,91],{},"  \"transaction_status\": \"Success\",",[48,93,94],{},"        // ou \"Failed\"\n",[48,96,98],{"class":50,"line":97},8,[48,99,100],{},"  \"amount\": \"100.00\",\n",[48,102,104],{"class":50,"line":103},9,[48,105,106],{},"  \"currency\": \"CDF\",\n",[48,108,110],{"class":50,"line":109},10,[48,111,112],{},"  \"customer_number\": \"0810000000\",\n",[48,114,116],{"class":50,"line":115},11,[48,117,118],{},"  \"provider_reference\": \"\u003Cprovider-txn-id>\"\n",[48,120,122],{"class":50,"line":121},12,[48,123,124],{},"}\n",[14,126,127,128,131,132,135,136,26],{},"Répondez ",[23,129,130],{},"200 OK",". Traitez le callback comme ",[18,133,134],{},"idempotent"," — vous pouvez le\nrecevoir plusieurs fois pour la même transaction ; indexez votre traitement sur\n",[23,137,138],{},"reference",[140,141,142],"blockquote",{},[14,143,144,147,148,151],{},[18,145,146],{},"Ne faites pas aveuglément confiance aux montants."," Re-récupérez\n",[23,149,150],{},"GET /api/payments/transaction/\u003Creference>/"," pour confirmer le statut faisant\nautorité avant de libérer des biens ou des fonds.",[28,153,155],{"id":154},"webhooks-fournisseur-payrouter-entrants","Webhooks fournisseur → PayRouter (entrants)",[14,157,158,159,162],{},"PayRouter expose des endpoints vérifiés que les fournisseurs appellent. Vous ne les\nappelez pas ; ils sont documentés par souci d'exhaustivité. Chacun est\n",[18,160,161],{},"vérifié cryptographiquement"," et échoue en mode fermé (HTTP 401) sur une\nsignature invalide :",[164,165,166,182],"table",{},[167,168,169],"thead",{},[170,171,172,176,179],"tr",{},[173,174,175],"th",{},"Fournisseur",[173,177,178],{},"Endpoint",[173,180,181],{},"Vérification",[183,184,185,199],"tbody",{},[170,186,187,191,196],{},[188,189,190],"td",{},"FreshPay",[188,192,193],{},[23,194,195],{},"POST /api/callbacks/freshpay/",[188,197,198],{},"AES-128-CBC + HMAC-SHA256",[170,200,201,204,209],{},[188,202,203],{},"Unipesa",[188,205,206],{},[23,207,208],{},"POST /api/callbacks/unipesa/",[188,210,211],{},"HMAC-SHA512",[14,213,214,215,218],{},"Les callbacks vérifiés sont stockés comme enregistrements ",[23,216,217],{},"RawCallback"," et traités\nde façon asynchrone, ce qui déclenche ensuite votre callback marchand ci-dessus.\nLes administrateurs peuvent auditer chaque callback entrant dans le portail admin\n(Callbacks).",[220,221],"doc-nav",{":first-page":222,":last-page":222,"next-title":223,"next-url":224,"previous-title":225,"previous-url":226},"false","Rapports","/docs/reports","Transactions","/docs/transaction",[228,229,230],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":44,"searchDepth":57,"depth":57,"links":232},[233,234],{"id":30,"depth":57,"text":31},{"id":154,"depth":57,"text":155},"Recevoir les résultats de paiement de PayRouter","md",{},"/fr/docs/callback",{"title":5,"description":235},"fr/docs/callback/index","UwG_s98nE95zfIqeNDj6ZoCuY8Zm8vQB25edydEoSHo",1781822932928]