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.

Le SDK PHP LigdiCash s’installe via Composer et fonctionne avec n’importe quel backend PHP. Les appels réseau sont synchrones. Le SDK utilise Guzzle comme client HTTP.

Installation

composer require ligdicash/ligdicash
Prérequis : PHP ≥ 7.4. Guzzle est installé automatiquement comme dépendance.

Initialisation

PHP
require_once 'vendor/autoload.php';

$client = new \Ligdicash\Ligdicash([
    "api_key"    => "{API_KEY}",
    "auth_token" => "{AUTH_TOKEN}",
    "platform"   => "live",
]);
Obtenez votre api_key et votre auth_token depuis le dashboard LigdiCash en créant un projet API.

Payin avec redirection

Le client est redirigé vers la page de paiement hébergée par LigdiCash. C’est le flux recommandé pour les boutiques en ligne.
PHP
// 1. Créer la facture
$invoice = $client->Invoice([
    "currency"           => "xof",
    "description"        => "Commande #ORD-20240512",
    "customer_firstname" => "Amadou",
    "customer_lastname"  => "Ouédraogo",
    "customer_email"     => "amadou@exemple.com",
    "store_name"         => "MaSuperBoutique",
    "store_website_url"  => "https://masuperboutique.com",
]);

// 2. Ajouter les articles
$invoice->addItem([
    "name"        => "Chemise kente",
    "description" => "Taille M",
    "quantity"    => 2,
    "unit_price"  => 15000,
]);
$invoice->addItem([
    "name"        => "Frais de livraison",
    "description" => "",
    "quantity"    => 1,
    "unit_price"  => 1500,
]);

// 3. Lancer le paiement
$response = $invoice->payWithRedirection([
    "return_url"   => "https://masuperboutique.com/commande/succes",
    "cancel_url"   => "https://masuperboutique.com/commande/annulation",
    "callback_url" => "https://backend.masuperboutique.com/ligdicash/callback",
    "custom_data"  => ["transaction_id" => "ORD-20240512"],
]);

// 4. Rediriger le client
$paymentUrl = $response->response_text;
header("Location: $paymentUrl");
exit;
Ne jamais ouvrir $paymentUrl dans une iframe — LigdiCash la bloque. Redirigez dans le même onglet, un nouvel onglet ou un popup.
Laissez toujours customer absent (ou vide) dans le payin avec redirection. Si vous passez un numéro, LigdiCash filtre la page de paiement pour ne montrer que les opérateurs de ce numéro.

Payin sans redirection

Le client paie directement depuis votre interface. Vous devez collecter son numéro de téléphone et, selon l’opérateur, son code OTP.
PHP
// 1. Créer la facture
$invoice = $client->Invoice([
    "currency"           => "xof",
    "description"        => "Commande #ORD-20240512",
    "customer_firstname" => "Amadou",
    "customer_lastname"  => "Ouédraogo",
    "customer_email"     => "amadou@exemple.com",
    "store_name"         => "MaSuperBoutique",
    "store_website_url"  => "https://masuperboutique.com",
]);
$invoice->addItem([
    "name" => "Chemise kente", "description" => "Taille M",
    "quantity" => 2, "unit_price" => 15000,
]);

// 2. Lancer le paiement (avec OTP fourni par le client)
$response = $invoice->payWithoutRedirection([
    "otp"          => "123456",       // Code OTP saisi par le client
    "customer"     => "22670123456",  // Numéro du client, sans + ni espaces
    "callback_url" => "https://backend.masuperboutique.com/ligdicash/callback",
    "custom_data"  => ["transaction_id" => "ORD-20240512"],
]);

// 3. Stocker le token pour vérification ultérieure
$token = $response->token;
Le mode OTP varie selon l’opérateur. Par exemple, pour un opérateur en mode USSD, le client génère son OTP sur son téléphone avant que vous ne soumetttiez. Pour un opérateur en mode approbation (ex. Moov Africa), envoyez "otp" => "" — le client approuve directement sur son application. Consultez la page de l’opérateur concerné.

Payout

Envoyez de l’argent vers un client — remboursement, salaire, gain.

Vers le wallet LigdiCash du client

PHP
$withdrawal = $client->Withdrawal([
    "amount"      => 5000,
    "description" => "Remboursement commande ORD-20240510",
    "customer"    => "22670123456",
]);

$response = $withdrawal->send([
    "type"         => "client",
    "to_wallet"    => false,  // false = virement automatique vers le mobile money lié
    "callback_url" => "https://backend.masuperboutique.com/ligdicash/callback-payout",
    "custom_data"  => ["transaction_id" => "REFUND-20240512"],
]);

$token = $response->token;

Directement vers le mobile money

PHP
$response = $withdrawal->send([
    "type"         => "merchant",  // Payout direct, sans wallet intermédiaire
    "callback_url" => "https://backend.masuperboutique.com/ligdicash/callback-payout",
    "custom_data"  => ["transaction_id" => "PAY-20240512"],
]);
"type" => "client" utilise POST /pay/v01/withdrawal/create (via wallet LigdiCash). "type" => "merchant" utilise POST /pay/v01/straight/payout (mobile money direct, plus lent). Voir Payout — Introduction.

Vérification de statut

Appelez getTransaction avec le token stocké à la création (pas le token du callback, qui est différent).
PHP
$token = "eyJ0eXAiOiJ...";  // Token retourné lors de la création

// Payin
$transaction = $client->getTransaction([
    "token" => $token,
    "type"  => "payin",  // "payin" ou "payout"
]);

if ($transaction->status === "completed") {
    // Livrer la commande / valider le paiement
} elseif ($transaction->status === "pending") {
    // Paiement en cours — relancer dans quelques secondes
} else {
    // Paiement échoué ou annulé
}
En PHP, le paramètre type de getTransaction accepte "payin" ou "payout" (pas "client_payout" ni "merchant_payout" comme dans les SDK Python et JavaScript).
Champs disponibles sur $transaction :
PropriétéTypeDescription
statusstring"completed", "pending", "cancelled"
response_codestring"00" succès, "01" échec
amountintMontant de la transaction
operator_idstringIdentifiant de l’opérateur
operator_namestringNom de l’opérateur
customerstringNuméro du client
tokenstringToken de la transaction
custom_dataarrayDonnées personnalisées envoyées à la création
wikiarrayLiens vers les codes d’erreur de l’endpoint
Ne livrez jamais une commande uniquement sur la base d’un callback entrant. Appelez toujours getTransaction avec le token stocké à la création pour confirmer le statut côté serveur LigdiCash. Voir Sécurisation du callback.

Gestion des erreurs

PHP
try {
    $response = $invoice->payWithRedirection([
        "return_url"   => "https://masuperboutique.com/succes",
        "cancel_url"   => "https://masuperboutique.com/annulation",
        "callback_url" => "https://backend.masuperboutique.com/callback",
        "custom_data"  => ["transaction_id" => "ORD-20240512"],
    ]);
} catch (\InvalidArgumentException $e) {
    // Paramètre manquant ou invalide (currency, type, etc.)
    echo $e->getMessage();
} catch (\Exception $e) {
    // Erreur réseau ou erreur retournée par l'API
    echo $e->getMessage();
}
Vérifiez aussi $response->response_code après chaque appel : "00" indique un succès, "01" une erreur. En cas d’erreur, consultez $response->wiki pour obtenir l’URL de détail des sous-codes.

Liens utiles