{"id":77600,"plugin_id":"plugin_asdk_app_6ae79de462448191ae1cc7d6041b2bd9","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-03T00:14:55.264Z","digest":"14e6006e891e7e476236f61ed16454ddf6a2697d2b51d0c50f338e74a0698d25","against":null,"payload":{"description":"Webhooks Tchin : format, en-têtes Tchin-Signature, vérification HMAC-SHA256, idempotence, réponses.","included_files":[{"relative_path":"references/REFERENCE.md","size_in_bytes":4048}],"name":"tchin-webhooks","skill_md_contents":"---\nname: tchin-webhooks\ndescription: \"Webhooks Tchin : format, en-têtes Tchin-Signature, vérification HMAC-SHA256, idempotence, réponses.\"\n---\n\n# Tchin : Webhooks et signature\n\nÀ chaque changement d'état, Tchin appelle votre callback_url. Vérifiez la signature avant de faire confiance au contenu.\n\n## Ce que couvre la référence\n- Le format\n- Vérifier la signature\n- Répondre\n- Tester\n\nLisez `references/REFERENCE.md` pour les champs exacts, le code dans chaque langage (cURL, PHP, Node.js, Python, Java, Go) et les réponses.\n\n## Règles de sécurité (toujours)\n- Cette skill aide à écrire le code d’intégration du développeur ; elle n’envoie rien elle-même. N’appelez l’API Tchin et ne transmettez des données d’un client (nom, e-mail, téléphone, pièce d’identité, photo) que si l’utilisateur le demande explicitement ; pendant le développement, utilisez le mode test et des valeurs d’exemple.\n- Les clés (`tchin_pk_…`, `tchin_sk_…`) restent sur le SERVEUR : variables d'environnement, jamais dans le code du navigateur, d'une application mobile ni d'un dépôt Git.\n- La page ou l'application ne reçoit qu'un `token` ; elle ouvre la feuille Tchin avec ce token.\n- Ne faites jamais confiance au retour de la page : vérifiez la signature du webhook (HMAC-SHA256 avec la clé secrète, 10 minutes au plus) ou demandez l'état côté serveur.\n- Traitez chaque webhook de façon idempotente (une même `reference` peut arriver deux fois).\n- Montants en francs CFA (XOF), entiers, sans décimales.\n- Testez avec `\"env\": \"test\"` (aucun argent réel), puis passez à `\"env\": \"live\"`.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}