> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.gimpayapp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Guide d'intégration : exécuter une opération

> Enchaînez les APIs GIMgar Sud pour transférer de l'argent d'un usager vers un instrument de paiement d'un autre usager, via le service d'un contributeur.

Ce guide décrit un cas d'usage complet : un usager GIMpay transfère de l'argent vers l'instrument de paiement d'un autre usager, par le biais du service d'un contributeur.

D'abord, vous authentifiez votre backend. Puis vous vérifiez les instruments de paiement de l'usager initiateur (carte, compte, mobile wallet) et son solde disponible. La plateforme récupère ensuite les services proposés par le contributeur, calcule les frais applicables, et envoie un code de sécurité (OTP) pour valider l'opération. Une fois ce code confirmé, l'opération est exécutée.

<Steps>
  <Step title="Authentifiez votre backend">
    ```http theme={null}
    POST {{baseUrl}}/api/v1/auth/token
    ```

    Récupérez un token Bearer à utiliser dans toutes les requêtes suivantes. Voir [Authentication](/getting-started/authentication).
  </Step>

  <Step title="Collectez les instruments de paiement de l'usager">
    ```http theme={null}
    GET {{baseUrl}}/api/v1/users/{referenceUsager}/wallets
    ```

    Identifiez l'instrument de paiement de l'usager initiateur à débiter.
  </Step>

  <Step title="Vérifiez le solde disponible">
    ```http theme={null}
    GET {{baseUrl}}/api/v1/wallets/{referenceWallet}/balance
    ```

    Assurez-vous que le solde de l'instrument sélectionné couvre le montant de l'opération.
  </Step>

  <Step title="Collectez la mini-place de marché transparente du contributeur">
    ```http theme={null}
    GET {{baseUrl}}/api/v2/contributors/{referenceContributor}/transparent-mmp
    ```

    Récupérez la Mini Market Place (MMP) transparente associée au contributeur à travers lequel l'opération transitera.
  </Step>

  <Step title="Collectez les services du contributeur dans cette MMP">
    ```http theme={null}
    GET {{baseUrl}}/api/v1/mmps/{referenceMmp}/contributors/{referenceContributor}/services
    ```

    Identifiez le service à utiliser pour l'opération.
  </Step>

  <Step title="Calculez les frais">
    ```http theme={null}
    GET {{baseUrl}}/api/v1/services/{referenceService}/fees?amount={montant}
    ```

    Simulez les frais applicables au montant saisi avant d'engager l'opération.
  </Step>

  <Step title="Générez un code OTP">
    ```http theme={null}
    POST {{baseUrl}}/api/v1/otp/debit
    ```

    Envoyez un OTP au numéro de téléphone associé à l'instrument de paiement initiateur, pour sécuriser le débit.
  </Step>

  <Step title="Exécutez l'opération">
    ```http theme={null}
    POST {{baseUrl}}/api/v1/operations
    ```

    Une fois l'OTP saisi par l'usager, transmettez-le dans le champ `authData` et exécutez l'opération.
  </Step>
</Steps>

<Tip>
  Avant d'enrôler un usager ou d'exécuter une opération, vous pouvez vérifier les droits de l'usager, de l'instrument de paiement ou du terminal impliqué via les endpoints `GET /users/{referenceUsager}/authorization`, `GET /wallets/{referenceWallet}/authorization` et `GET /terminals/{serialNumber}/authorization`.
</Tip>

## Étapes suivantes

<CardGroup cols={2}>
  <Card title="Tester ce flux dans le sandbox" icon="flask" href="/getting-started/testing">
    Exécutez chacune de ces étapes directement depuis la documentation.
  </Card>

  <Card title="Codes d'erreur" icon="triangle-exclamation" href="/getting-started/errors">
    Comprenez les erreurs possibles à chaque étape.
  </Card>
</CardGroup>
