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.

Claude Code est l’outil CLI d’Anthropic. En ajoutant un fichier CLAUDE.md à la racine de votre projet, vous lui transmettez le contexte LigdiCash une seule fois — il respectera ensuite les conventions API dans chaque réponse.

Skill LigdiCash

Skill LigdiCash pour Claude Code

Installez le skill pour que Claude Code connaisse l’API LigdiCash dès le départ — téléchargement ZIP, installation via npx skills et prompts prêts à l’emploi.

Pré-requis

  • Claude Code installé (npm install -g @anthropic-ai/claude-code)
  • Un abonnement Claude Pro, Max ou un accès API Anthropic

Fichier CLAUDE.md à créer

Créez un fichier CLAUDE.md à la racine de votre projet avec le contenu suivant :
# 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
- Popup : ouvrir `about:blank` avant le `await fetch`, puis naviguer après réception de l'URL

## 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

Copiez-collez ces messages dans Claude Code pour les cas d’usage les plus fréquents.
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
Implémente un payin LigdiCash sans redirection (mode OTP USSD) en [langage].

- Endpoint : POST https://app.ligdicash.com/pay/v01/straight/checkout-invoice/create
- external_id doit rester "" (vide)
- L'utilisateur génère son OTP via le menu USSD de son opérateur AVANT la soumission
- Passer transaction_id dans custom_data (objet) : { "transaction_id": "..." }
- La confirmation définitive passe par le callback (ne pas implémenter de polling)

Bonnes pratiques

Lancez claude à la racine de votre projet — Claude Code lit automatiquement CLAUDE.md au démarrage et connaît d’emblée les conventions LigdiCash.