Passer au contenu principal

Documentation Index

Fetch the complete documentation index at: https://developers.ligdicash.com/llms.txt

Use this file to discover all available pages before exploring further.

Windsurf et son assistant Cascade peuvent générer du code d’intégration LigdiCash. En ajoutant un fichier de règles à votre projet, Cascade connaît les conventions de l’API dès le départ.

Skill LigdiCash

Skill LigdiCash — téléchargement et installation

Téléchargez le ZIP ou installez via npx skills. Les fichiers references/ peuvent être ajoutés via Add Context dans Cascade pour enrichir chaque session.

Pré-requis

  • Windsurf installé
  • Accès au projet à intégrer

Fichier de règles à créer

Créez .windsurf/rules.md à la racine de votre projet :
# Intégration LigdiCash

## Contexte

LigdiCash 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/json
Content-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 transactions

Le `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 :
```javascript
const 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.

Prompts prêts à l’emploi

Utilisez ces prompts dans le chat Cascade (Cmd+L ou Ctrl+L).
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.
Écris un handler de callback LigdiCash en [langage/framework].

Comportement requis :
1. Accepter POST en application/json ET application/x-www-form-urlencoded
2. Dédupliquer par token (idempotence)
3. Re-vérifier le statut en appelant l'endpoint confirm avec le token stocké en base
4. 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"
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
Cascade comprend le contexte de vos fichiers ouverts. Ouvrez le fichier où vous intégrez LigdiCash avant de lancer un prompt — la réponse sera directement adaptée à votre code existant.