Use this file to discover all available pages before exploring further.
Cursor peut générer du code d’intégration LigdiCash en quelques secondes. En ajoutant un fichier de règles à votre projet, vous lui transmettez les conventions de l’API une seule fois.
Téléchargez le ZIP ou installez via npx skills. Les fichiers references/ peuvent être glissés directement dans le chat Cursor comme contexte de session.
Cursor supporte deux emplacements pour les règles de projet :
Cursor ≥ 0.45 : créez .cursor/rules/ligdicash.mdc à la racine
Ancienne version : créez .cursorrules à la racine
Ajoutez le contenu suivant :
# Intégration LigdiCash## ContexteLigdiCash est un agrégateur de paiement mobile money en Afrique de l'Ouest.API base URL : https://app.ligdicash.com## Headers obligatoires sur chaque requête```Apikey: {API_KEY}Authorization: Bearer {AUTH_TOKEN}Accept: application/jsonContent-Type: application/json```## Format des données- Numéros de téléphone : format E.164 sans `+` ni espaces — ex. `22670000000`- Montants : entiers (XOF n'a pas de décimales) — ex. `5000`- Devise : `XOF` exclusivement- Clés API dans les exemples : toujours `{API_KEY}` et `{AUTH_TOKEN}`, jamais de vraies valeurs## Règle d'or — identification des transactionsLe `token` retourné à la création est différent du `token` reçu dans le callback.Ne jamais utiliser ce token pour identifier une transaction.Toujours passer un identifiant marchand dans `custom_data` à la création :```json"custom_data": { "transaction_id": "ORD-2025-00042" }```Dans le callback, `custom_data` revient sous forme de tableau d'objets. LigdiCash y ajoute ses propres champs (`hash`, `logfile`). Extraire avec :```javascriptconst entry = custom_data.find(e => e.keyof_customdata === "transaction_id");const transactionId = entry?.valueof_customdata;```## Payin avec redirection — pièges- `customer` doit rester `""` — sinon LigdiCash filtre les opérateurs visibles- Ne jamais ouvrir l'URL de paiement dans un `<iframe>` — utiliser le même onglet, un nouvel onglet, un popup ou une WebView native## Callback- LigdiCash envoie deux POST : un `application/x-www-form-urlencoded` + un `application/json`. Dédupliquer.- Re-vérifier chaque callback en appelant l'endpoint `confirm` avec le token stocké à la création. Ne jamais faire confiance au payload reçu.
Utilisez ces prompts dans le chat Cursor (Cmd+L ou Ctrl+L).
Payin avec redirection (checkout-invoice)
Implémente un payin LigdiCash avec redirection en [langage].- Endpoint : POST https://app.ligdicash.com/pay/v01/redirect/checkout-invoice/create- Montant : variable (paramètre de la fonction)- customer doit rester "" (vide)- Passer transaction_id dans custom_data (objet) : { "transaction_id": "..." }- Ouvrir l'URL retournée dans un nouvel onglet (pas d'iframe)- Gérer les erreurs HTTP et les response_code != "00"Retourner l'URL de paiement ou lever une exception.
Handler de callback sécurisé
Écris un handler de callback LigdiCash en [langage/framework].Comportement requis :1. Accepter POST en application/json ET application/x-www-form-urlencoded2. Dédupliquer par token (idempotence)3. Re-vérifier le statut en appelant l'endpoint confirm avec le token stocké en base4. custom_data dans le callback est un tableau d'objets — extraire via keyof_customdata === "transaction_id"5. Mettre à jour la commande en base seulement si le statut confirm est "00"
Payout vers mobile money
Implémente un payout LigdiCash direct vers mobile money en [langage].- Endpoint : POST https://app.ligdicash.com/pay/v01/straight/payout- Paramètres : montant, numéro de téléphone (format 22670XXXXXXX), description- Passer transaction_id dans custom_data (objet) : { "transaction_id": "..." }- Gérer les erreurs et logger la wiki URL en cas d'échec
Activez Codebase indexing dans les paramètres Cursor pour qu’il analyse automatiquement vos fichiers existants et génère du code cohérent avec votre architecture.