Paiements directs
Initiez des paiements directs avec des prestataires spécifiques comme Wave.
L’API Charges permet d’initier des paiements directs avec des prestataires donnés. Utile pour un tunnel personnalisé ou pour débiter un client sans le rediriger tout de suite vers un tunnel hébergé (certains prestataires comme Wave peuvent tout de même renvoyer une URL de paiement).
Les opérateurs lomi. Network peuvent ajouter Lomi-Account: acct_... pour créer des charges carte, Wave ou MTN pour un compte membre connecté. L’adhésion doit avoir payment.create.
Créer une charge Wave
Initie une demande de paiement spécifiquement pour Wave Mobile Money.
Endpoint
POST /charge/wave
Corps de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
amount | number | Oui | Montant à débiter (minimum 100). |
currency | string | Oui | Code devise (doit être XOF). |
customer | object | Oui | Objet détails client. |
customer.name | string | Oui | Nom complet du client. |
customer.email | string | Non | Adresse e-mail du client. |
customer.phoneNumber | string | Non | Numéro de téléphone (ex. +2250102030405). |
description | string | Non | Description de la charge. |
successUrl | string | Non | URL de redirection après paiement réussi. |
errorUrl | string | Non | URL de redirection après échec du paiement. |
environment | string | Non | live ou test (par défaut live). |
curl -X POST "https://api.lomi.africa/charge/wave" \
-H "Content-Type: application/json" \
-H "X-API-KEY: $LOMI_SECRET_KEY" \
-d '{
"amount": 1000,
"currency": "XOF",
"customer": {
"name": "Jane Doe",
"email": "jane@example.com",
"phoneNumber": "+2250707070707"
},
"description": "Paiement pour le service",
"successUrl": "https://your-site.com/success",
"errorUrl": "https://your-site.com/error"
}'const response = await fetch('https://api.lomi.africa/charge/wave', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-KEY': process.env.LOMI_SECRET_KEY!,
},
body: JSON.stringify({
amount: 1000,
currency: 'XOF',
customer: {
name: 'Jane Doe',
email: 'jane@example.com',
phoneNumber: '+2250707070707',
},
description: 'Paiement pour le service',
successUrl: 'https://your-site.com/success',
errorUrl: 'https://your-site.com/error',
}),
});
const data = await response.json();import requests
import os
url = "https://api.lomi.africa/charge/wave"
headers = {
"Content-Type": "application/json",
"X-API-KEY": os.environ["LOMI_SECRET_KEY"]
}
payload = {
"amount": 1000,
"currency": "XOF",
"customer": {
"name": "Jane Doe",
"email": "jane@example.com",
"phoneNumber": "+2250707070707"
},
"description": "Paiement pour le service",
"successUrl": "https://your-site.com/success",
"errorUrl": "https://your-site.com/error"
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()Réponse
Renvoie un statut 201 Created avec les détails de la session Wave et l’URL de paiement.
{
"transactionId": "1a0a4df9-ae73-4776-b955-57522625421c",
"checkoutUrl": "https://pay.wave.com/c/cos-22txmv4682mee?...",
"waveSession": {
"id": "cos-22txmv4682mee",
"amount": "1000",
"checkout_status": "open",
"payment_status": "processing",
"currency": "XOF",
"aggregated_merchant_id": "am-1wfm8v3z023p4",
...
}
}Réponses d’erreur
| Statut | Description |
|---|---|
400 | Requête incorrecte (ex. configuration prestataire manquante, montant invalide). |
401 | Non autorisé (clé API invalide). |
500 | Erreur serveur interne (échec du prestataire de paiement). |
Charge carte embarquée
Créez un paiement carte et récupérez un client_secret pour votre propre UI de checkout.
Endpoints
| Méthode | Chemin |
|---|---|
POST | /charge/card |
GET | /charge/card/{id} |
POST | /charge/card/{id}/cancel |
const res = await lomi.charges.createCardCharge({
amount: 10000,
currency_code: 'XOF',
customer_email: 'buyer@example.com',
customer_name: 'Buyer Name',
});
// res.data.client_secret → confirmer côté client avec votre clé publiableVoir Créer une charge carte et lomi Payment Elements.
Exemple réseau :
curl -X POST "https://api.lomi.africa/charge/card" \
-H "X-API-KEY: $LOMI_OPERATOR_API_KEY" \
-H "Lomi-Account: acct_1234567890" \
-H "Content-Type: application/json" \
-d '{
"amount": 10000,
"currency_code": "XOF",
"customer_email": "buyer@example.com",
"customer_name": "Buyer Name"
}'Implémentation de référence
Démo minimale exécutable (Wave, MTN, carte via Payment Elements @lomi./sdk) dans le monorepo :
apps/plugins/references/direct-charge-integration-reference: proxy serveur, UI Payment Element et scripts cURL
Pour les sessions checkout hébergées, voir payment-integration-sdk-reference.
Charge directe MTN
POST /charge/mtn, même schéma que Wave ; voir Créer une charge MTN.