Passer au contenu principal

Identité

ChampValeur
PaysBurkina Faso
OpérateurMoov Africa Burkina
operator_id12
operator_nameMOOV AFRICA BURKINA
Indicatif+226
Format du numéro226XXXXXXXXX (sans + ni espaces)
EndpointPOST /pay/v01/straight/checkout-invoice/create
Mode de validationUSSD Push (fallback : USSD guidé)

Modes de validation

Moov Africa Burkina Faso utilise deux modes selon la disponibilité réseau au moment de la transaction. Vous soumettez la même requête dans les deux cas — c’est l’opérateur qui décide du mode côté réseau. Mode principal — USSD Push : après votre requête, l’opérateur envoie directement un écran USSD push sur le téléphone du client. Le client valide avec son code PIN. Aucune saisie supplémentaire côté marchand. Mode fallback — USSD guidé : si le push n’aboutit pas, l’opérateur envoie un SMS contenant les instructions et le code USSD à composer. Le client compose le USSD pour valider.
Votre UX doit anticiper les deux cas. Affichez un message qui couvre les deux : le client recevra soit un push USSD à valider directement, soit un SMS avec les instructions à suivre.

UX recommandée

1

Collecter le numéro du client

Votre formulaire recueille uniquement le numéro de téléphone Moov. Aucun OTP à collecter.
2

Soumettre la requête

Requête avec le numéro dans customer et otp: "".
3

Afficher un message d'attente

Après soumission, affichez un message du type :
« Validez le paiement sur votre téléphone. Vous allez recevoir une demande de validation USSD, ou un SMS avec les instructions à suivre. »
Maintenez cet état d’attente jusqu’à la réception du callback.

Exemple de requête

curl -X POST https://app.ligdicash.com/pay/v01/straight/checkout-invoice/create \
  -H "Apikey: {API_KEY}" \
  -H "Authorization: Bearer {API_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "commande": {
      "invoice": {
        "items": [],
        "total_amount": 5000,
        "devise": "XOF",
        "description": "Abonnement Pro — Janvier 2025",
        "customer": "22660000000",
        "customer_firstname": "Aminata",
        "customer_lastname": "Sawadogo",
        "customer_email": "aminata@exemple.com",
        "external_id": "",
        "otp": ""
      },
      "store": {
        "name": "MonApp",
        "website_url": "https://monapp.com"
      },
      "actions": {
        "cancel_url": "",
        "return_url": "",
        "callback_url": "https://monapp.com/api/callback/ligdicash"
      },
      "custom_data": {
        "transaction_id": "ORD-2025-00043"
      }
    }
  }'
const response = await fetch(
  "https://app.ligdicash.com/pay/v01/straight/checkout-invoice/create",
  {
    method: "POST",
    headers: {
      Apikey: process.env.LIGDICASH_API_KEY,
      Authorization: `Bearer ${process.env.LIGDICASH_API_TOKEN}`,
      Accept: "application/json",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      commande: {
        invoice: {
          items: [],
          total_amount: 5000,
          devise: "XOF",
          description: "Abonnement Pro — Janvier 2025",
          customer: "22660000000",
          customer_firstname: "Aminata",
          customer_lastname: "Sawadogo",
          customer_email: "aminata@exemple.com",
          external_id: "",
          otp: "",
        },
        store: { name: "MonApp", website_url: "https://monapp.com" },
        actions: {
          cancel_url: "",
          return_url: "",
          callback_url: "https://monapp.com/api/callback/ligdicash",
        },
        custom_data: { transaction_id: "ORD-2025-00043" },
      },
    }),
  }
);

const data = await response.json();
$payload = [
  "commande" => [
    "invoice" => [
      "items" => [],
      "total_amount" => 5000,
      "devise" => "XOF",
      "description" => "Abonnement Pro — Janvier 2025",
      "customer" => "22660000000",
      "customer_firstname" => "Aminata",
      "customer_lastname" => "Sawadogo",
      "customer_email" => "aminata@exemple.com",
      "external_id" => "",
      "otp" => "",
    ],
    "store" => ["name" => "MonApp", "website_url" => "https://monapp.com"],
    "actions" => [
      "cancel_url" => "",
      "return_url" => "",
      "callback_url" => "https://monapp.com/api/callback/ligdicash",
    ],
    "custom_data" => ["transaction_id" => "ORD-2025-00043"],
  ],
];

$ch = curl_init("https://app.ligdicash.com/pay/v01/straight/checkout-invoice/create");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Apikey: " . $_ENV["LIGDICASH_API_KEY"],
  "Authorization: Bearer " . $_ENV["LIGDICASH_API_TOKEN"],
  "Accept: application/json",
  "Content-Type: application/json",
]);

$data = json_decode(curl_exec($ch), true);
curl_close($ch);

Réponse attendue

{
  "response_code": "00",
  "token": "eyJ0eXAiOiJKV1Qi...",
  "response_text": "Votre requête est en cours de traitement",
  "wiki": "https://client.ligdicash.com/wiki/createInvoice"
}
{
  "response_code": "01",
  "token": "",
  "response_text": "Echec (Code00)",
  "wiki": "https://client.ligdicash.com/wiki/createInvoice"
}
Stockez le token immédiatement après la création. Utilisez-le pour appeler confirm à la réception du callback — ne vous fiez pas au token présent dans le payload du callback.

Limites

ParamètreValeur
Montant minimum100 XOF
Montant maximum2 000 000 XOF
Limite quotidienne

Pages associées