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

# Payin avec redirection

> Le client est redirigé vers la page de paiement LigdiCash. La méthode la plus simple à intégrer, compatible avec tous les opérateurs supportés.

Le payin avec redirection est la méthode d'intégration la plus rapide. Vous créez une facture via l'API, récupérez un lien de paiement, et redirigez votre client vers la page hébergée par LigdiCash. Le client choisit son opérateur, effectue son paiement, et est renvoyé vers votre site. Vous n'avez pas à gérer l'interface de paiement.

Cette méthode fonctionne aussi bien sur le web que dans les **applications mobiles natives** : le lien de paiement s'ouvre dans une WebView, et vous détectez le retour du client en écoutant les changements d'URL.

## Comment ça fonctionne

<Steps>
  <Step title="Créer la facture">
    Vous appelez `POST /pay/v01/redirect/checkout-invoice/create` avec les détails de la commande. LigdiCash vous retourne un `token` et un lien de paiement dans `response_text`.
  </Step>

  <Step title="Rediriger le client">
    Vous ouvrez le lien de paiement dans le même onglet, un nouvel onglet ou un popup. Le client arrive sur la page de paiement LigdiCash où il choisit son opérateur mobile money.
  </Step>

  <Step title="Le client paie">
    Le client saisit son numéro et valide le paiement selon les instructions de son opérateur. LigdiCash gère entièrement cette étape.
  </Step>

  <Step title="Notification et redirection">
    LigdiCash envoie un callback à votre `callback_url` et redirige le client vers votre `return_url` (succès) ou `cancel_url` (annulation).
  </Step>
</Steps>

```mermaid theme={null}
sequenceDiagram
    actor Client
    participant Frontend as Votre frontend
    participant Backend as Votre backend
    participant LC as LigdiCash

    Client->>Frontend: Déclenche un paiement
    Frontend->>Backend: POST /api/paiement/initier
    Backend->>LC: POST /checkout-invoice/create
    LC-->>Backend: token + pay_url
    Backend->>Backend: Stocke le token en DB
    Backend-->>Frontend: pay_url
    Frontend->>Client: Ouvre pay_url

    Note over Client,LC: Le client choisit son opérateur et paie sur la page LigdiCash

    par Simultanément
        LC-->>Client: Redirige vers return_url
    and
        LC->>Backend: POST /callback_url
    end
    Backend->>LC: GET /confirm?token={token_stocké}
    LC-->>Backend: status
    Backend->>Backend: Met à jour la commande
```

## Contraintes importantes

<Warning>
  L'iframe est bloqué par LigdiCash. Le lien de paiement doit s'ouvrir dans le même onglet, un nouvel onglet, un popup, ou une WebView native sur mobile — jamais dans une iframe.
</Warning>

<Warning>
  Le champ `customer` doit rester vide (`""`). Si vous y renseignez un numéro de téléphone, LigdiCash filtre la page de paiement pour n'afficher que les opérateurs correspondant à ce numéro, masquant les autres.
</Warning>

## Dans cette section

<CardGroup cols={2}>
  <Card title="Créer une facture" icon="file-invoice" href="/api-paiement/payin-redirect/creer-facture">
    Paramètres, payload complet et réponse de l'endpoint de création
  </Card>

  <Card title="Rediriger le client" icon="arrow-up-right" href="/api-paiement/payin-redirect/rediriger-client">
    Ouvrir le lien de paiement : même onglet, popup, WebView
  </Card>

  <Card title="Vérifier le statut" icon="circle-check" href="/api-paiement/payin-redirect/verifier-statut">
    Appeler l'endpoint confirm avec le token de création
  </Card>

  <Card title="Intégration mobile" icon="mobile" href="/api-paiement/payin-redirect/integration-mobile">
    Ouvrir le lien dans une WebView native et détecter le retour
  </Card>

  <Card title="Pièges courants" icon="triangle-exclamation" href="/api-paiement/payin-redirect/pieges-courants">
    Iframe, customer vide, popup bloqué — les erreurs fréquentes
  </Card>
</CardGroup>
