# Create Transaction Source: https://docs.lygosapp.com/api-reference/collecte/create-transaction api-reference/openapi.json post /v1/api/deposit/ direct creation of transactions # Read Transaction Source: https://docs.lygosapp.com/api-reference/collecte/read-transaction api-reference/openapi.json get /v1/api/deposit/get_transaction get transaction details from track_id # Environnements et URLs Source: https://docs.lygosapp.com/api-reference/environment Informations concernant nos URLs et environnements. ## Environnements disponibles Actuellement, nous disposons uniquement d'un environnement de production. D'autres environnements (staging, développement) pourront être ajoutés ultérieurement en fonction des besoins. ## Production * **API Backend** : [https://api.lygosapp.com/v1/](https://api.lygosapp.com/v1/) ## Accès et Sécurité * L'accès à l'API nécessite une authentification via clé API ou OAuth selon les endpoints. * Toutes les communications passent par HTTPS pour garantir la sécurité des échanges. * Pour accéder aux endpoints de l'environnement ci-dessus, utilisez la base d'URL suivante : ```json theme={null} https://api.lygosapp.com/v1/ ``` # Create Payment Gateway Source: https://docs.lygosapp.com/api-reference/gateway/create-payment-gateway api-reference/openapi.json post /v1/gateway # Delete Gateway Source: https://docs.lygosapp.com/api-reference/gateway/delete-gateway api-reference/openapi.json delete /v1/gateway/{gateway_id} # Get Gateway Source: https://docs.lygosapp.com/api-reference/gateway/get-gateway api-reference/openapi.json get /v1/gateway/{gateway_id} # List Payment Gateways Source: https://docs.lygosapp.com/api-reference/gateway/list-payment-gateways api-reference/openapi.json get /v1/gateway # Update Gateway Source: https://docs.lygosapp.com/api-reference/gateway/update-gateway api-reference/openapi.json put /v1/gateway/{gateway_id} # Bien démarrer Source: https://docs.lygosapp.com/api-reference/introduction Apprenez à intégrer nos API dans vos applications Vous devez créer un compte gratuit Lygos pour commencer à utiliser nos servces API. ## Nos API Nos API reposent sur les principes REST, une architecture qui garantit des services fiables, flexibles et faciles à intégrer. Elles utilisent les méthodes HTTP classiques comme GET, POST, PUT et DELETE pour interagir avec les ressources. Les réponses sont toujours au format JSON, ce qui les rend simples à comprendre et à utiliser avec les outils de développement modernes. Que vous construisiez une application, connectiez des systèmes ou enrichissiez votre plateforme, nos API sont là pour vous offrir une expérience fluide et agréable. View the OpenAPI specification file ## Réponses et erreurs Voici la liste des erreurs et des réponses associées que vous pourrez rencontrer durant la mise en place des API dans votre application. Lygos maintient un formattage clair et comprehensible pour vous faciliter l'intégration. | **Code Statut** | **Catégorie** | **Description** | **Exemple** | | --------------- | ---------------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | | **200** | Succès | La requête a réussi, et le serveur a renvoyé les données attendues. | `GET /users` renvoie une liste d'utilisateurs. | | **201** | Créé | La ressource a été créée avec succès. | `POST /users` renvoie les détails du nouvel utilisateur. | | **204** | Aucun Contenu | La requête a réussi, mais aucune donnée n'est retournée. | `DELETE /users/{id}` après suppression réussie d'un utilisateur. | | **400** | Requête Incorrecte | Le serveur n'a pas compris la requête en raison d'une syntaxe invalide. | Champs obligatoires manquants dans une requête `POST`. | | **401** | Non Autorisé | Une authentification est requise ou a échoué. | Jeton API manquant ou invalide. | | **403** | Interdit | Le client n'a pas les permissions nécessaires pour accéder à la ressource. | Tentative d'accès à des données restreintes. | | **404** | Non Trouvé | La ressource demandée est introuvable. | `GET /users/{id}` pour un utilisateur inexistant. | | **409** | Conflit | La requête entre en conflit avec l'état actuel du serveur. | Tentative de création d'une ressource en double. | | **422** | Entité Non Traitée | La requête est bien formée mais contient des données invalides. | Données invalides pour la création d'une ressource. | | **500** | Erreur Serveur Interne | Le serveur a rencontré une condition inattendue. | Erreurs générales ou exceptions inattendues du serveur. | | **502** | Mauvaise Passerelle | Le serveur a reçu une réponse invalide d'un serveur en amont. | Problème temporaire avec les services en amont. | | **503** | Service Indisponible | Le serveur est temporairement incapable de traiter la requête (surcharge ou maintenance). | Panne planifiée ou surcharge du serveur. | | **504** | Délai d'Attente | Le serveur n'a pas reçu de réponse à temps d'un serveur en amont. | Requêtes longues causant des délais d'attente. | ## Authentification Pour comprendre comment gérer l'authentification, vous pouvez vous réferrer à la section [Authentification](href="https://docs.lygosapp.com/introduction/authentication") du guide. # Create Gateway Source: https://docs.lygosapp.com/api-reference/marketplace/create-gateway api-reference/openapi.json post /v1/api/marketplace/gateway # Create Marketplace Source: https://docs.lygosapp.com/api-reference/marketplace/create-marketplace api-reference/openapi.json post /v1/api/marketplace # Delete Gateway Source: https://docs.lygosapp.com/api-reference/marketplace/delete-gateway api-reference/openapi.json delete /v1/api/marketplace/gateway/{gateway_id} # Delete Marketplace Source: https://docs.lygosapp.com/api-reference/marketplace/delete-marketplace api-reference/openapi.json delete /v1/api/marketplace/ # Get Gateway Source: https://docs.lygosapp.com/api-reference/marketplace/get-gateway api-reference/openapi.json get /v1/api/marketplace/gateway/{gateway_id} # Get Gateway Transactions Source: https://docs.lygosapp.com/api-reference/marketplace/get-gateway-transactions api-reference/openapi.json get /v1/api/marketplace/gateway/{gateway_id}/transactions # Get Marketplace Source: https://docs.lygosapp.com/api-reference/marketplace/get-marketplace api-reference/openapi.json get /v1/api/marketplace # List Gateways Source: https://docs.lygosapp.com/api-reference/marketplace/list-gateways api-reference/openapi.json get /v1/api/marketplace/gateway # Update Gateway Source: https://docs.lygosapp.com/api-reference/marketplace/update-gateway api-reference/openapi.json patch /v1/api/marketplace/gateway/{gateway_id} # Update Marketplace Source: https://docs.lygosapp.com/api-reference/marketplace/update-marketplace api-reference/openapi.json patch /v1/api/marketplace/ # Get Payin Status Source: https://docs.lygosapp.com/api-reference/payin/get-payin-status api-reference/openapi.json get /v1/gateway/payin/{order_id} # Guides Source: https://docs.lygosapp.com/home Intégrez Lygos et simplifiez vos paiements. Hero Light Hero Dark ## Découvrir ### Nos clients Vous trouverez dans cette documentation tout un ensemble d'informations qui vous permettront de comprendre comment intégrer Lygos à vos sites et applications. Que vous soyez un entrepreneur, une entreprise ou une fintech vous trouverez des outils adaptés à vos besoins. Foncez vers une introduction rapide pour comprendre Lygos et ses differentes solutions. Découvrez comment des milliers d'entrepreneurs et entreprises ont utilisé Lygos pour accroitre leurs revenus. # Authentification (API Keys) Source: https://docs.lygosapp.com/introduction/authentication Protection des endpoints via clé API unique Vos requêtes vers Lygos doivent être authentifiées en utilisant une clé API. Ces clés sont générées depuis votre tableau de bord Lygos.\ **Toutes vos requêtes** doivent inclure une clé dans les headers. ## Obtenir une clé API 1. Connectez-vous à votre [dashboard](https://pay.lygosapp.com/dashboard) 2. Accédez à la section [API](https://pay.lygosapp.com/dashboard/api-keys) 3. Cliquez sur **"Créer une clé"** Chaque compte peut créer plusieurs clés. La clé est valable jusqu'à sa révocation manuelle. *** ## Utilisation dans les requêtes Ajoutez la clé dans le header `api-key` de toutes vos requêtes : ```javascript JS theme={null} const headers = { 'api-key': 'VOTRE_CLÉ_API', 'Content-Type': 'application/json' }; ``` ```python Python theme={null} headers = { "api-key": "VOTRE_CLÉ_API", "Content-Type": "application/json" } ``` ```php PHP theme={null} $headers = [ "api-key: VOTRE_CLÉ_API", "Content-Type: application/json" ]; ``` ```java Java theme={null} import java.net.http.HttpRequest; HttpRequest.Builder requestBuilder = HttpRequest.newBuilder() .header("api-key", "VOTRE_CLÉ_API") .header("Content-Type", "application/json"); ``` # Démarrage Rapide (5min) Source: https://docs.lygosapp.com/introduction/fasttrack Acceptez des paiements en moins de 5 minutes ## Étapes clées pour bien commencer 1. Créez votre [compte](https://pay.lygosapp.com/register) 2. Accédez à la section [API](https://pay.lygosapp.com/dashboard/api-keys) 3. Cliquez sur **"Créer une clé"** pour votre projet 4. (Optionnel) Si vous comptez collecter +**100,000 FCFA** ou +**450,000 CDF** via l'API il est important de faire [valider votre compte](https://pay.lygosapp.com/dashboard/account/business) en partageant les informations de votre business. 5. Créez votre première session d'achat avec Lygos et obtenez le lien de paiement Copiez-collez le code ci-dessous dans votre langage préféré pour générer une session de paiement et récupérer le lien à rediriger vers vos utilisateurs. ```python lygos.py theme={null} import requests import uuid # Remplacez ces valeurs par vos propres informations AMOUNT = 20000 # Montant du paiement dans la monnaie de votre compte Lygos SHOP_NAME = "Nike" # Nom de votre boutique MESSAGE = "Contactez-nous sur WA pour toutes vos questions" SUCCESS_URL = "https://yourwebsite.com" # URL de redirection en cas de succès (Optionnel) FAILURE_URL = "https://failedwebsite.com" # URL de redirection en cas d'échec (Optionnel) ORDER_ID = str(uuid.uuid4()) # Génération automatique d'un ID unique (Optionnel) url = "https://api.lygosapp.com/v1/gateway" payload = { "amount": AMOUNT, "shop_name": SHOP_NAME, "message": MESSAGE, "success_url": SUCCESS_URL, "failure_url": FAILURE_URL, "order_id": ORDER_ID } headers = { "api-key": "VOTRE-API-KEY", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) payment_link = response.json().get("link") print(f"Redirigez vos utilisateurs vers : {payment_link}") ``` ```javascript lygos.js theme={null} const axios = require("axios"); const { v4: uuidv4 } = require("uuid"); // Remplacez ces valeurs par vos propres informations const AMOUNT = 20000; // Montant du paiement dans la devise de votre compte Lygos const SHOP_NAME = "Nike"; // Nom de votre boutique const MESSAGE = "Contactez-nous sur WA pour toutes vos questions"; const SUCCESS_URL = "https://yourwebsite.com"; // URL de redirection en cas de succès (Optionnel) const FAILURE_URL = "https://failedwebsite.com"; // URL de redirection en cas d'échec (Optionnel) const ORDER_ID = uuidv4(); // Génération automatique d'un ID unique (Optionnel) const url = "https://api.lygosapp.com/v1/gateway"; const payload = { amount: AMOUNT, shop_name: SHOP_NAME, message: MESSAGE, success_url: SUCCESS_URL, failure_url: FAILURE_URL, order_id: ORDER_ID }; const headers = { "api-key": "VOTRE-API-KEY", "Content-Type": "application/json" }; axios.post(url, payload, { headers }) .then(response => console.log(`Redirigez vos utilisateurs vers : ${response.data.link}`)) .catch(error => console.error(error)); ``` 6. Redirigez votre client vers le lien url et recevez votre [paiement](https://pay.lygosapp.com/dashboard/transactions) # Pricing Source: https://docs.lygosapp.com/introduction/pricing Frais de paiements par pays — en fonction du pays vendeur et du pays acheteur ## Fonctionnement des frais Les frais ci-dessous indiquent les frais facturés à l'acheteur en fonction du pays du vendeur. Les frais seront toujours facturés à l'acheteur. Quand vous créez votre compte Lygos, vous serez associé au pays correspondant à votre numéro mobile money. C'est ce pays qui sera la référence dans le calcul des frais pour chacune de vos transactions. Les frais incluent : * Collecte du paiement auprès de l'acheteur * Paiement dans votre compte mobile money * Conversion de la devise Pour des entreprises qui souhaitent recevoir leurs paiement sur des comptes bancaires, veuillez nous contacter directement par email à \[[support@lygosapp.com](mailto:support@lygosapp.com)]. Exemple : Je suis inscrit sur Lygos et basé en Côte d'Ivoire. Voici le [lien de mon produit](https://pay.lygosapp.com/link/db8938e5-6355-4936-8c3f-9716066d1e1b). Mon produit coûte 35,000 FCFA (XOF) et mon client basé au Cameroun veut acheter via mon lien Lygos. Les frais sont de 12.9% dans ce cas précis. Donc mon client Camerounais devra payer 4,515 FCFA pour un montant total de 39,515 FCFA (XAF). ## 🇧🇯 Bénin | Pays acheteur | Devise | Frais | | ------------- | ------ | --------- | | Bénin | XOF | **4.5%** | | Burkina Faso | XOF | **4.5%** | | Côte d'Ivoire | XOF | **4.5%** | | Sénégal | XOF | **4.5%** | | Cameroun | XAF | **12.9%** | | Gabon | XAF | **12.9%** | | Congo | XAF | **12.9%** | | RDC | CDF | **13.3%** | | Kenya | KES | **13.3%** | | Rwanda | RWF | **13.3%** | | Tanzanie | TZS | **13.3%** | | Zambie | ZMW | **13.3%** | *** ## 🇧🇫 Burkina Faso | Pays acheteur | Devise | Frais | | ------------- | ------ | --------- | | Bénin | XOF | **4.5%** | | Burkina Faso | XOF | **4.5%** | | Côte d'Ivoire | XOF | **4.5%** | | Sénégal | XOF | **4.5%** | | Cameroun | XAF | **12.9%** | | Gabon | XAF | **12.9%** | | Congo | XAF | **12.9%** | | RDC | CDF | **13.3%** | | Kenya | KES | **13.3%** | | Rwanda | RWF | **13.3%** | | Tanzanie | TZS | **13.3%** | | Zambie | ZMW | **13.3%** | *** ## 🇨🇮 Côte d'Ivoire | Pays acheteur | Devise | Frais | | ------------- | ------ | --------- | | Bénin | XOF | **4.5%** | | Burkina Faso | XOF | **4.5%** | | Côte d'Ivoire | XOF | **4.5%** | | Sénégal | XOF | **4.5%** | | Cameroun | XAF | **12.9%** | | Gabon | XAF | **12.9%** | | Congo | XAF | **12.9%** | | RDC | CDF | **13.3%** | | Kenya | KES | **13.3%** | | Rwanda | RWF | **13.3%** | | Tanzanie | TZS | **13.3%** | | Zambie | ZMW | **13.3%** | *** ## 🇸🇳 Sénégal | Pays acheteur | Devise | Frais | | ------------- | ------ | --------- | | Bénin | XOF | **4.5%** | | Burkina Faso | XOF | **4.5%** | | Côte d'Ivoire | XOF | **4.5%** | | Sénégal | XOF | **4.5%** | | Cameroun | XAF | **12.9%** | | Gabon | XAF | **12.9%** | | Congo | XAF | **12.9%** | | RDC | CDF | **13.3%** | | Kenya | KES | **13.3%** | | Rwanda | RWF | **13.3%** | | Tanzanie | TZS | **13.3%** | | Zambie | ZMW | **13.3%** | *** ## 🇨🇲 Cameroun | Pays acheteur | Devise | Frais | | ------------- | ------ | ------------------ | | Bénin | XOF | **-1% (Cashback)** | | Burkina Faso | XOF | **-1% (Cashback)** | | Côte d'Ivoire | XOF | **-1% (Cashback)** | | Sénégal | XOF | **-1% (Cashback)** | | Cameroun | XAF | **4.5%** | | Gabon | XAF | **4.5%** | | Congo | XAF | **4.5%** | | RDC | CDF | **13.3%** | | Kenya | KES | **13.3%** | | Rwanda | RWF | **13.3%** | | Tanzanie | TZS | **13.3%** | | Zambie | ZMW | **13.3%** | *** ## 🇬🇦 Gabon | Pays acheteur | Devise | Frais | | ------------- | ------ | ---------------- | | Bénin | XOF | **-1% Cashback** | | Burkina Faso | XOF | **-1% Cashback** | | Côte d'Ivoire | XOF | **-1% Cashback** | | Sénégal | XOF | **-1% Cashback** | | Cameroun | XAF | **4.5%** | | Gabon | XAF | **4.5%** | | Congo | XAF | **4.5%** | | RDC | CDF | **13.3%** | | Kenya | KES | **13.3%** | | Rwanda | RWF | **13.3%** | | Tanzanie | TZS | **13.3%** | | Zambie | ZMW | **13.3%** | *** ## 🇨🇬 Congo | Pays acheteur | Devise | Frais | | ------------- | ------ | ---------------- | | Bénin | XOF | **-1% Cashback** | | Burkina Faso | XOF | **-1% Cashback** | | Côte d'Ivoire | XOF | **-1% Cashback** | | Sénégal | XOF | **-1% Cashback** | | Cameroun | XAF | **3%** | | Gabon | XAF | **4.5%** | | Congo | XAF | **4.5%** | | RDC | CDF | **13.3%** | | Kenya | KES | **13.3%** | | Rwanda | RWF | **13.3%** | | Tanzanie | TZS | **13.3%** | | Zambie | ZMW | **13.3%** | *** ## 🇨🇩 RDC | Pays acheteur | Devise | Frais | | ------------- | ------ | --------- | | Bénin | XOF | **6%** | | Burkina Faso | XOF | **6%** | | Côte d'Ivoire | XOF | **6%** | | Sénégal | XOF | **6%** | | Cameroun | XAF | **6%** | | Gabon | XAF | **6%** | | Congo | XAF | **6%** | | RDC | CDF | **6%** | | Kenya | KES | **13.3%** | | Rwanda | RWF | **13.3%** | | Tanzanie | TZS | **13.3%** | | Zambie | ZMW | **13.3%** | # Guide de démarrage Source: https://docs.lygosapp.com/introduction/quickstart Comprendre Lygos et ses avantages ## Présentation globale **Lygos** est une solution de paiement pour entrepreneurs et entreprises en Afrique francophone. Elle permet d’intégrer facilement des fonctionnalités de paiement dans vos applications et sites web. Nous simplifions les paiements afin de vous permettre de vous concentrer sur votre coeur de métier. Lygos automatise pour vous la gestion des paiements et les suivi de vos transactions à travers une seule interface de manière sécurisée. ### Lygos Pay Aujourd'hui c'est plus de 8,000 entreprises et entrepreneurs qui nous font confiance pour vendre localement et à l'international. Pour commencer à utiliser l'API vous devez obligatoirement créer un compte sur [Lygos Pay](https://pay.lygosapp.com/register). Vous devez aussi fournir vos informations personelles (CNI ou permis) et des informations concernant votre business. ## Endpoints API Voici les differentes catégories d'API mises à disposition pour nos utilisateurs et partenaires. Intégrez les paiements Lygos dans votre application. # Collecte (Payins) Source: https://docs.lygosapp.com/modules/collecte Permet de collecter des paiements instantanément directement sans redirection, via une demande de prélèvement opérateur L’API de Collecte permet aux applications d’initier un paiement **sans redirection vers une page Lygos**.\ Lygos contacte directement l’opérateur Mobile Money pour déclencher un prélèvement auprès de l’acheteur. ### Flux de Paiement (Collecte Directe) ```plaintext theme={null} Application Lygos Opérateur Mobile Money Acheteur | | | | |---(1) Dépôt API-> | | | | |---(2) Demande Collecte--------->| | | | |----(3) Notification---->| | | |<---(3b) Paiement--------| | |<------------(4) Statut Collecte---------------------------| | | | ``` 1. **Requête de dépôt**\ L’application initie une collecte en appelant l’API Lygos avec : * le montant, * le numéro Mobile Money de l’acheteur, * la référence interne, * les métadonnées éventuelles. 2. **Demande de collecte opérateur**\ Lygos envoie une instruction de prélèvement directement à l’opérateur Mobile Money. 3. **Validation par l’acheteur**\ L’acheteur reçoit une demande sur son téléphone et valide avec : * son PIN Mobile Money, * ou sa confirmation biométrique selon l’opérateur. 4. **Confirmation et règlement**\ Une fois validé : * L’opérateur débite l’acheteur, * Les fonds sont reversés instantanément sur le wallet Mobile Money du marchand, * Lygos renvoie le statut final à l’application via API ou webhook. Démarrez une collecte directe depuis votre application. # Gateway Source: https://docs.lygosapp.com/modules/gateway Pour générer facilement des liens de paiement par API L'API Gateway permet aux commerçants de gérer les passerelles de paiement associées à leur clé API. Les fonctionnalités incluent la création, la récupération, la mise à jour et la suppression des passerelles de paiement. ### Flux de Paiement ```plaintext theme={null} Client Site E-commerce Lygos Mobile Money | | | | |-----(1) Achats-------> | | | | |----(2) Créer Gateway---> | | | | <---(3) URL Checkout-----| | |<--(4) Redirection URL---| | | |----------------(5) Saisie Infos-----------------> | | | | |---(6) Notification------> | | | |<-(7) Validation Paiement--| | <----------(8) Redirection selon le Statut--------| | ``` 1. **Achat et Déclenchement du Paiement** * Le client sélectionne un produit et initie le paiement sur le site e-commerce. * Le site e-commerce appelle l'API de Lygos pour créer une passerelle de paiement. 2. **Création de la Gateway** * Lygos génère une passerelle de paiement et retourne une URL de paiement (checkout). 3. **Fourniture de l'URL Checkout** * Le site e-commerce redirige le client vers l'URL de paiement fournie par Lygos. 4. **Redirection vers le Checkout** * Le client est redirigé sur la page de paiement où il saisit ses informations. 5. **Saisie des Informations de Paiement** * Le client entre ses informations de paiement et valide la transaction. 6. **Notification Mobile Money** * Lygos envoie une demande de paiement au service Mobile Money du client. * Le client reçoit une notification et doit valider avec son code PIN. 7. **Validation du Paiement** * Une fois le PIN saisi, Mobile Money valide ou rejette le paiement. 8. **Redirection selon le Statut** * **Succès**: Le client est redirigé vers la page de confirmation du commerçant. * **Échec**: Le client est redirigé vers une page d’échec. * **Personnalisation**: Si le commerçant a défini des URLs spécifiques, le client y est redirigé en fonction du statut du paiement. Intégrez les paiements Lygos dans votre application. # Marketplace Source: https://docs.lygosapp.com/modules/marketplace Pour gérer les paiements entre acheteurs et vendeurs avec redistribution automatique L’API Marketplace permet aux plateformes d’orchestrer les paiements entre acheteurs et vendeurs.\ Elle gère la création d’ordres de paiement, la distribution des fonds, les commissions, et les redirections. ### Flux de Paiement Marketplace ```plaintext theme={null} Acheteur Marketplace Lygos Vendeur | | | | |-----(1) Achat---------> | | | | |----(2) Créer Transaction----->| | | | <-----(3) URL Checkout--------| | |<--(4) Redirection------ | | | |--------------------(5) Paiement-----------------------> | | |<--------------(6) Redirection selon Statut------------- | | Si le paiement de l'acheteur a bien été effecué : | | |---(7) Paiement Vendeur -->| | |<---(8) Paiement Commission----| | | |<---(9) Notification de Vente--| | ``` 1. **Création d’un achat**\ L’acheteur sélectionne un produit. La plateforme crée un ordre marketplace via Lygos, incluant : * le montant total, * la part vendeur, * la commission de la plateforme, * les URLs de redirection. 2. **Création de l’Order Marketplace**\ Lygos enregistre l’ordre et renvoie une URL de paiement (checkout). 3. **Redirection vers le Checkout Lygos**\ La plateforme redirige l’acheteur vers la page de paiement. 4. **Saisie et validation du paiement**\ L’acheteur saisit ses informations (Mobile Money, carte, etc.) et valide. 5. **Débit de l’acheteur**\ Lygos envoie la demande de paiement au fournisseur Mobile Money ou bancaire. 6. **Validation**\ Une fois confirmé, Lygos reçoit le statut (succès, échec, pending). 7. **Distribution automatique (Split Payment)**\ Si succès : * Paiement de la part **vendeur** sur son wallet / compte bancaire, * Paiement de la **commission** à la plateforme, * Conservation éventuelle de frais par Lygos. 8. **Notifcation**\ La marketplace reçoit une notication que la transaction a bien été effectuée. Gérez vos vendeurs, paiements et commissions avec Lygos. # Monitoring Source: https://docs.lygosapp.com/modules/monitoring Suivez en temps réel le statut des opérateurs Mobile Money et de nos services Lygos met à disposition un tableau de bord de monitoring permettant de suivre en temps réel le statut des opérateurs Mobile Money, de la plateforme et des services API. ## Suivi des Statuts en Temps Réel ### Accès au Tableau de Bord Visitez [lygos.openstatus.dev](https://lygos.openstatus.dev) pour consulter le statut des opérateurs et services. ### Informations Disponibles 1. **Statut des Opérateurs** * Disponibilité des opérateurs Mobile Money (MTN, Moov, Orange, Wave, etc.) * État des services de collecte et de décaissement * Performance des canaux de paiement 2. **Notifications** * Abonnement aux alertes par email * Notifications en cas d'indisponibilité d'un opérateur * Alertes de maintenance planifiée 3. **Historique** * Historique des incidents et interruptions de service * Temps de disponibilité (uptime) par opérateur * Statistiques de performance ### S'abonner aux Notifications Les clients peuvent s'abonner pour recevoir des notifications en cas de : * Indisponibilité d'un opérateur Mobile Money * Interruption de service de collecte ou décaissement * Maintenances planifiées * Restauration de service * Changements de statut des opérateurs Suivez en temps réel la disponibilité des opérateurs Mobile Money et des services. # Webhooks Source: https://docs.lygosapp.com/modules/webhooks Recevez des notifications en temps réel sur les transactions Les webhooks permettent de recevoir des notifications en temps réel sur les transactions initiées par vos clients, sans avoir à interroger régulièrement l'API. Lygos envoie automatiquement une requête HTTP POST à votre URL configurée à chaque événement sélectionné. ## Configuration des Webhooks ### Configuration dans le Dashboard Vous pouvez configurer vos webhooks directement depuis votre dashboard Lygos dans la section **Configurations**. ### URL du Webhook L'URL du webhook doit être : * **Sécurisée** : Utilisez HTTPS avec un certificat SSL valide * **Accessible publiquement** : L'URL doit être accessible depuis Internet * **Valide** : Format d'URL correct (ex: `https://my-webhook-url.com/lygos`) Les webhooks avec des URLs non sécurisées (HTTP) ou avec des certificats SSL invalides seront rejetés pour des raisons de sécurité. ### Description du Webhook Vous pouvez ajouter une description optionnelle pour vous souvenir de l'usage de chaque webhook (ex: "Webhook pour tag et lien de paiement"). ## Sécurité et Authentification ### Authentification HMAC-SHA256 Lygos utilise l'algorithme HMAC avec SHA256 pour signer tous les webhooks envoyés. Cette signature permet de vérifier que les requêtes proviennent bien de Lygos et n'ont pas été modifiées en transit. ### Clé Secrète Lors de la création d'un webhook, vous recevrez par email une **clé secrète** unique que vous devrez conserver précieusement. Cette clé est utilisée pour vérifier l'authenticité des webhooks. Gardez votre clé secrète confidentielle. Ne la partagez jamais et ne la commitez pas dans votre dépôt de code. Vous pouvez régénérer votre clé secrète à tout moment depuis le dashboard. La régénération invalide immédiatement l'ancienne clé. ### Headers des Webhooks Chaque webhook envoyé par Lygos contient les headers suivants : * **`X-Signature`** : Signature HMAC-SHA256 calculée à partir du body et du timestamp * **`X-Timestamp`** : Timestamp Unix (en millisecondes) de la requête * **`Content-Type`** : `application/json` Exemple de headers reçus : ```http theme={null} X-Signature: a1b2c3d4e5f6789... X-Timestamp: 1234567890244 Content-Type: application/json ``` ### Vérification de la Signature Pour vérifier l'authenticité d'un webhook : 1. Récupérez les headers `X-Signature` et `X-Timestamp` 2. Concaténez le body de la requête (en string) avec le timestamp 3. Calculez le HMAC-SHA256 de cette chaîne en utilisant votre clé secrète 4. Comparez le résultat avec la valeur de `X-Signature` 5. Si les valeurs correspondent, le webhook est authentique ### Exemples de Code #### Node.js / JavaScript ```javascript theme={null} const crypto = require("crypto"); function verifyWebhookSignature(body, signature, timestamp, secretKey) { // Concaténer le body (string) avec le timestamp const payload = JSON.stringify(body) + timestamp; // Calculer le HMAC-SHA256 const expectedSignature = crypto .createHmac("sha256", secretKey) .update(payload) .digest("hex"); // Comparer les signatures (comparaison sécurisée) return crypto.timingSafeEqual( Buffer.from(signature), Buffer.from(expectedSignature) ); } // Utilisation const body = req.body; const signature = req.headers["x-signature"]; const timestamp = req.headers["x-timestamp"]; const secretKey = process.env.WEBHOOK_SECRET_KEY; if (verifyWebhookSignature(body, signature, timestamp, secretKey)) { // Webhook authentique, traiter la requête console.log("Webhook authentifié"); } else { // Signature invalide, rejeter la requête res.status(401).send("Signature invalide"); } ``` #### Python ```python theme={null} import hmac import hashlib import json def verify_webhook_signature(body, signature, timestamp, secret_key): # Concaténer le body (string) avec le timestamp payload = json.dumps(body, separators=(',', ':')) + str(timestamp) # Calculer le HMAC-SHA256 expected_signature = hmac.new( secret_key.encode('utf-8'), payload.encode('utf-8'), hashlib.sha256 ).hexdigest() # Comparer les signatures (comparaison sécurisée) return hmac.compare_digest(signature, expected_signature) # Utilisation body = request.json signature = request.headers.get('X-Signature') timestamp = request.headers.get('X-Timestamp') secret_key = os.environ.get('WEBHOOK_SECRET_KEY') if verify_webhook_signature(body, signature, timestamp, secret_key): # Webhook authentique, traiter la requête print('Webhook authentifié') else: # Signature invalide, rejeter la requête return 'Signature invalide', 401 ``` ## Types d'Événements Disponibles Vous pouvez sélectionner les types d'événements pour lesquels vous souhaitez recevoir des notifications : ### Marketplace * **`marketplace_deposit_completed`** - Dépôt marketplace réussi * **`marketplace_deposit_failed`** - Dépôt marketplace échoué * **`marketplace_deposit_submitted`** - Dépôt marketplace soumis ### Lien de Paiement * **`payment_link_deposit_completed`** - Dépôt de lien de paiement réussi * **`payment_link_deposit_failed`** - Dépôt de lien de paiement échoué * **`payment_link_deposit_submitted`** - Dépôt de lien de paiement soumis ### Passerelle de Paiement * **`gateway_deposit_completed`** - Dépôt passerelle réussi * **`gateway_deposit_failed`** - Dépôt passerelle échoué * **`gateway_deposit_submitted`** - Dépôt passerelle soumis ## Structure du Payload Chaque webhook reçu contient les informations suivantes dans le body de la requête : ```json theme={null} { "operationId": "uuid", "status": "string", "amount": "number", "buyer": { "name": "string", "email": "string", "phoneNumber": "string", "country": "string", "operator": "string" } } ``` ### Champs du Payload * **`operationId`** (UUID) : Identifiant unique de l'opération (format UUID) * **`status`** (string) : Statut de la transaction (voir [Statuts possibles](#statuts-possibles)) * **`amount`** (number) : Montant de la transaction * **`buyer`** (object, optionnel) : Informations sur l'acheteur * **`name`** (string) : Nom de l'acheteur * **`email`** (string) : Email de l'acheteur * **`phoneNumber`** (string) : Numéro de téléphone de l'acheteur * **`country`** (string) : Pays de l'acheteur (ex: "CMR") * **`operator`** (string) : Opérateur Mobile Money utilisé (ex: "MTN\_MOMO\_CMR") Le champ `buyer` peut être absent pour certaines transactions. Assurez-vous de gérer ce cas dans votre code. ## Statuts Possibles Les statuts suivants peuvent être renvoyés dans le webhook : * **`INITIATED`** - Transaction initiée, en attente de traitement * **`DEPOSIT_PENDING`** - Dépôt en cours de traitement * **`DEPOSIT_COMPLETED`** - Dépôt complété avec succès * **`DEPOSIT_FAILED`** - Dépôt échoué * **`DEPOSIT_REJECTED`** - Dépôt rejeté * **`PAYOUT_PAID`** - Paiement sortant effectué * **`MANUAL_PAYOUT`** - Paiement sortant manuel ## Exemples de Payloads ### Exemple 1 : Transaction réussie avec buyer ```json theme={null} { "operationId": "550e8400-e29b-41d4-a716-446655440000", "status": "DEPOSIT_COMPLETED", "amount": 10000, "buyer": { "name": "Jean Dupont", "email": "jean.dupont@example.com", "phoneNumber": "237657843901", "country": "CMR", "operator": "MTN_MOMO_CMR" } } ``` ### Exemple 2 : Transaction en attente sans buyer ```json theme={null} { "operationId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "status": "DEPOSIT_PENDING", "amount": 5000 } ``` ### Exemple 3 : Paiement sortant ```json theme={null} { "operationId": "6ba7b812-9dad-11d1-80b4-00c04fd430c8", "status": "PAYOUT_PAID", "amount": 15000 } ``` ## Bonnes Pratiques 1. **Validation** : Validez toujours les données reçues dans le webhook 2. **Idempotence** : Utilisez `operationId` pour éviter de traiter deux fois le même événement 3. **Sécurité** : Vérifiez toujours la signature des webhooks en utilisant votre clé secrète (voir [Sécurité et Authentification](#sécurité-et-authentification)) 4. **Variables d'environnement** : Stockez votre clé secrète dans des variables d'environnement, ne la commitez jamais dans votre code 5. **Vérification du timestamp** : Vérifiez que le timestamp n'est pas trop ancien pour éviter les attaques de replay (recommandé) 6. **Gestion d'erreurs** : Répondez avec un code HTTP 200 même en cas d'erreur de traitement pour éviter les tentatives de retry 7. **Logging** : Enregistrez tous les webhooks reçus pour le débogage et l'audit # Woocommerce Source: https://docs.lygosapp.com/plugins/woocommerce Acceptez les paiements via Woocommerce avec Lygos L'API Woocommerce arrive bientôt. Stay tuned! # Environnement Sandbox Source: https://docs.lygosapp.com/sandbox/introduction-sandbox Comment utiliser la sandbox ? **Lygos Sandbox** est un environnement de développement isolé et sécurisé. Il permet de simuler l'ensemble du processus de paiement et d'interagir avec notre API sans engager de fonds réels. C'est l'outil idéal pour valider votre intégration technique et vos parcours clients avant le lancement officiel. ### Tests et simulations Développez en toute confiance en reproduisant différents scénarios de transactions (succès, échecs, attentes) afin d'assurer la stabilité de votre application. Pour interagir avec cet environnement, vous devez utiliser vos **clés API de test** (disponibles dans votre tableau de bord). Les données créées dans la Sandbox sont fictives et ne sont pas visibles en production. ## Outils de simulation Accédez aux ressources nécessaires pour effectuer vos tests. Obtenez les numéros de téléphone et cartes bancaires fictifs pour tester vos scénarios. # Numéros Test Source: https://docs.lygosapp.com/sandbox/test-numbers Liste des numéros de test pour la sandbox Les numéros ci-dessous sont **fictifs** et destinés à la sandbox. > **Règle simple :** > > * **Successful** → numéro se terminant par `11 11 11` > * **Failed** → numéro se terminant par `55 55 55` > * **No Status (Error)** → numéro se terminant par `33 33 33` > Tous les autres numéros qui ne remplissent pas ces conditions sont considérés comme **Failed**. *** ### **Numéros de test** | Pays | Indicatif | Successful | Failed | No Status (Error) | | ------------------- | --------- | -------------- | -------------- | ----------------- | | Bénin | +229 | +229XXXX111111 | +229XXXX555555 | +229XXXX333333 | | Cameroun | +237 | +237XXX111111 | +237XXX555555 | +237XXX333333 | | Congo (Brazzaville) | +242 | +242XXX111111 | +242XXX555555 | +242XXX333333 | | Côte d’Ivoire | +225 | +225XXX111111 | +225XXX555555 | +225XXX333333 | | RD Congo | +243 | +243XXX111111 | +243XXX555555 | +243XXX333333 | | Gabon | +241 | +241XXX111111 | +241XXX555555 | +241XXX333333 | | Kenya | +254 | +254XXX111111 | +254XXX555555 | +254XXX333333 | | Rwanda | +250 | +250XXX111111 | +250XXX555555 | +250XXX333333 | | Sénégal | +221 | +221XXX111111 | +221XXX555555 | +221XXX333333 | | Tanzanie | +255 | +255XXX111111 | +255XXX555555 | +255XXX333333 | | Zambie | +260 | +260XXX111111 | +260XXX555555 | +260XXX333333 | *** 1. **Sandbox uniquement** : ces numéros ne sont pas routés en production. 2. Les `XXX` sont des placeholders que vous pouvez remplacer par n’importe quel préfixe local. 3. La terminaison du numéro est la seule information qui détermine le statut.