Documentation API TalyPay
Intégrez facilement les paiements Mobile Money et cartes bancaires dans votre application avec notre API simple et sécurisée.
Démarrage rapide
Suivez ces étapes pour commencer à accepter des paiements avec TalyPay en quelques minutes.
Créez un compte
Inscrivez-vous sur TalyPay et vérifiez votre compte
Récupérez vos clés API
Accédez à votre tableau de bord pour obtenir vos clés
Intégrez l'API
Utilisez nos SDKs ou notre API REST
Intégration de l'API
La méthode la plus simple pour accepter des paiements :
curl --location 'https://www.talypay-me.com/api/v1/init-payment' \
--header 'Request-Environment: production' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer tk_live_USFHpBGl9o3DoxYL0Mki4SmKINroIEqF8XMz7TyoMUGIuf2MAXUfntm71KsIu8dS' \
--data-raw '{
"payment_mode": "mtn_momo",
"customer_name": "GOMASSO",
"customer_firstname": "Roméo",
"customer_email": "romeo26@yahoo.fr",
"amount": "25",
"currency": "XOF",
"country": "benin",
"payment_ref": "c7dri3j1-3km9-2r89",
"customer_tel": "2290190415261",
"description": "Paiement de la facture du tableau artistique"
}'
Astuce : Utilisez toujours vos clés de test (sandbox) pendant le développement et les clés de production uniquement en environnement live.
Authentification
L'API TalyPay utilise des clés API pour authentifier les requêtes. Vous pouvez gérer vos clés API depuis votre tableau de bord.
Types de clés Token
Clé publique sandbox
Utilisée côté client, peut être exposée
Clé secrète production
Utilisée côté serveur uniquement, à garder confidentielle
Authentification des requêtes API
Incluez votre clé secrète dans le header Authorization :
curl https://api.talypay-me.com/v1/payments \
-H "Authorization: Bearer tk_live_your_secret_key" \
-H "Content-Type: application/json"
Important : Ne partagez jamais votre clé secrète et ne l'exposez jamais côté client.
Environnements
TalyPay propose deux environnements pour faciliter le développement et les tests.
Sandbox (Test)
Environnement de test pour développer et tester sans risque.
URL: http://localhost
Clés: Préfixées par _test_
- Aucun frais réel
- Numéros de test MTN
- Données réinitialisables
Production (Live)
Environnement réel pour accepter de vrais paiements.
URL: https://api.talypay-me.com
Clés: Préfixées par _live_
- Paiements réels
- Frais applicables
- Support 24/7
Numéros de test (Sandbox)
| Opérateur | Numéro MTN | Statut |
|---|---|---|
| MTN Mobile Money | (ex) 229 01 90 41 52 61 |
Succès |
API Paiements
Créer un paiement
Initiez un nouveau paiement pour un client.
/v1/payments
Paramètres
| Paramètre Headers | Type | Requis | Description |
|---|---|---|---|
| Request-Environment | sandbox/production | Oui | Ex: sandbox pour les tests |
| Content-Type | application/json | Oui | Type de contenu |
| Authorization | Bearer <token> | Oui | tk_test_ / tk_live_ |
| Body | object | Oui | Données additionnelles (JSON) |
Exemple de réponse
Réponse
{
"response_code": 201,
"status": "created",
"message": "The payment has been init successfully. Please check its status",
"payment_ref": "c7dfi3j1-2i52-0289"
}
}
Vérifier le statut d'un paiement
/api/v1/check-payment-status
curl --location 'https://api.talypay-me.com/api/v1/check-payment-status' \
--header 'Request-Environment: production' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer tk_live_USFHpBGl9o3DoxYL0Mki4SmKINroIEqF8XMz7TyoMUGIuf2MAXUfntm71KsIu8dS' \
--data '{
"payment_mode" : "mtn_momo",
"country" : "Benin",
"payment_ref" : "c649b648-7314-94ed"
}'
Exemple de réponse
{
"response_code": 200,
"status": "successful",
"message": "Transaction proceed successfully."
}
Statuts possibles
En attente de confirmation
Requête incorrecte
Paiement réussi
Paiement échoué
API Disbursements
L'API Disbursement permet d'effectuer des remboursements et des transferts d'argent vers des comptes Mobile Money. Cette API supporte deux types d'opérations : Refund (remboursement d'un paiement existant) et Withdrawal/Transfer (transfert vers un bénéficiaire).
Important : Vérifiez toujours votre solde disponible avant d'initier un disbursement. Le solde est calculé comme suit : Paiements reçus - Demandes de retrait validées - Disbursements réussis
Initialiser un Disbursement
Créez un remboursement ou un transfert.
/api/v1/init-disbursement
En-têtes requis
| Header | Valeur | Description |
|---|---|---|
| Authorization | Bearer <token> | Votre token API (tk_live_ ou tk_test_) |
| Request-Environment | sandbox/production | Environnement de la requête |
| Content-Type | application/json | Type de contenu |
Type 1 : Remboursement (Refund)
Rembourser un paiement existant vers le compte du client d'origine.
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| payment_mode | string | Mode de paiement (mtn_momo) | |
| disbursement_type | string | Type : refund |
|
| payment_ref | string | Référence du paiement à rembourser | |
| amount | number | Montant en FCFA (min: 100) | |
| description | string | Description du remboursement |
Exemple de requête
curl --location 'https://www.talypay-me.com/api/v1/init-disbursement' \\
--header 'Authorization: Bearer tk_live_your_token' \\
--header 'Request-Environment: sandbox' \\
--header 'Content-Type: application/json' \\
--data '{
"payment_mode": "mtn_momo",
"disbursement_type": "refund",
"payment_ref": "7b90507a-627b-0497",
"amount": 100,
"description": "Remboursement pour produit défectueux"
}'
Réponse Success (201)
{
"status": "success",
"message": "Disbursement initiated successfully",
"disbursement_ref": "REFUND-1737202847-4567",
"data": {
"amount": 100,
"currency": "XOF",
"type": "refund",
"state": "pending"
}
}
Type 2 : Transfert (Withdrawal/Transfer)
Effectuer un transfert d'argent vers un nouveau bénéficiaire.
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| payment_mode | string | Mode de paiement (mtn_momo) | |
| disbursement_type | string | Type : withdrawal |
|
| country | string | Pays (benin, togo, etc.) | |
| customer_firstname | string | Prénom du bénéficiaire | |
| customer_name | string | Nom du bénéficiaire | |
| customer_tel | string | Numéro de téléphone (+229XXXXXXXX) | |
| customer_email | string | Non | Email du bénéficiaire |
| amount | number | Montant en FCFA (min: 100) | |
| disbursement_ref | string | Référence unique (min: 3 caractères) | |
| description | string | Description du transfert |
Exemple de requête
curl --location 'https://www.talypay-me.com/api/v1/init-disbursement' \\
--header 'Authorization: Bearer tk_live_your_token' \\
--header 'Request-Environment: sandbox' \\
--header 'Content-Type: application/json' \\
--data '{
"payment_mode": "mtn_momo",
"disbursement_type": "withdrawal",
"country": "benin",
"customer_firstname": "Jean",
"customer_name": "Dupont",
"customer_tel": "+22997123456",
"customer_email": "jean.dupont@example.com",
"amount": 5000,
"disbursement_ref": "TRANS-2024-001",
"description": "Paiement pour service rendu"
}'
Réponse Success (201)
{
"status": "success",
"message": "Disbursement initiated successfully",
"disbursement_ref": "TRANSFER-1737202847-8912",
"data": {
"amount": 5000,
"currency": "XOF",
"type": "withdrawal",
"state": "pending"
}
}
Vérifier le statut d'un Disbursement
/api/v1/check-disbursement-status
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| disbursement_ref | string | Référence du disbursement retournée lors de l'initialisation |
Exemple de requête
curl --location 'https://www.talypay-me.com/api/v1/check-disbursement-status' \\
--header 'Authorization: Bearer tk_live_your_token' \\
--header 'Request-Environment: sandbox' \\
--header 'Content-Type: application/json' \\
--data '{
"disbursement_ref": "REFUND-1737202847-4567"
}'
Réponse Success (200)
{
"status": "success",
"disbursement_ref": "REFUND-1737202847-4567",
"transaction_state": "successful",
"data": {
"amount": 100,
"currency": "XOF",
"type": "refund",
"customer_tel": "+22997123456",
"description": "Remboursement pour produit défectueux",
"initiated_at": "2024-01-18 10:30:45",
"completed_at": "2024-01-18 10:31:12"
}
}
Statuts possibles
En cours de traitement
Traitement réussi ✅
Échec du traitement
Rejeté par le système
Vérifier le solde disponible
Consultez votre solde disponible avant d'effectuer un disbursement.
/api/v1/get-available-balance
curl --location 'https://www.talypay-me.com/api/v1/get-available-balance' \\
--header 'Authorization: Bearer tk_live_your_token' \\
--header 'Request-Environment: sandbox' \\
--header 'Content-Type: application/json' \\
--data '{}'
Réponse Success (200)
{
"status": "success",
"available_balance": 15000,
"currency": "XOF",
"details": {
"total_received": 50000,
"total_withdrawals": 30000,
"total_disbursements": 5000
}
}
Calcul du solde
Solde disponible = Paiements reçus - Demandes de
retrait validées - Disbursements réussis
Codes d'erreur
| Code | Message | Description |
|---|---|---|
| 401 | no-auth-header | Header Authorization manquant |
| 401 | incorrect-token | Token API invalide |
| 400 | no-request-env | Header Request-Environment manquant |
| 400 | incorrect-request-env | Environnement invalide |
| 400 | incorrect-content-type | Content-Type doit être application/json |
| 400 | missing-payment-mode | Mode de paiement manquant |
| 400 | invalid-payment-mode | Mode de paiement non supporté |
| 400 | missing-disbursement-type | Type de disbursement manquant |
| 400 | invalid-disbursement-type | Type invalide (doit être refund ou withdrawal) |
| 400 | incorrect-param | Paramètres requis manquants |
| 400 | payment-not-found | Paiement introuvable (pour refund) |
| 400 | payment-already-refunded | Paiement déjà remboursé |
| 400 | used-disbursement-ref | Référence de disbursement déjà utilisée |
| 400 | insufficient-balance | Solde insuffisant |
| 400 | incorrect-country | Pays non supporté |
Bonnes pratiques
- Vérifiez toujours le solde disponible avant d'initier un transfert
- Utilisez des références uniques pour chaque disbursement
- Stockez les références de disbursement pour le suivi
- Vérifiez régulièrement le statut si le disbursement est en pending
- Testez toujours en sandbox avant de passer en production
- Gérez les webhooks pour les notifications de statut (à venir)
Webhooks (En cours de développement)
Les webhooks vous permettent de recevoir des notifications en temps réel sur les événements de votre compte.
Recommandation : Utilisez toujours les webhooks pour mettre à jour vos bases de données plutôt que de faire confiance uniquement aux redirections client.
Configuration
Configurez vos URLs de webhook dans votre tableau de bord :
- Accédez à Paramètres → Webhooks
- Cliquez sur "Ajouter un webhook"
- Entrez votre URL de endpoint
- Sélectionnez les événements à écouter
- Sauvegardez et récupérez votre secret de signature
Exemple de payload
{
En cours de développement
}
JavaScript Widget
Le widget TalyPay est la solution la plus simple pour intégrer les paiements sur votre site web. Il suffit d'inclure un script et d'ajouter une balise personnalisée pour créer un bouton de paiement complet.
Avantages du Widget
- Installation ultra-rapide (2 lignes de code)
- Interface de paiement personnalisable
- Responsive et adapté mobile
- Aucune gestion de formulaire nécessaire
Installation
1. Inclure le script TalyPay
Ajoutez cette ligne dans la section <head> ou avant la
balise </body> de
votre page HTML :
<script src="https://talypay-me.com/cdn-talypay/talypay.min.js"></script>
2. Ajouter le widget
Insérez le composant <talypay-widget> où vous
souhaitez afficher le bouton de paiement :
<talypay-widget
label="Faire un paiement"
amount="1000"
key="votre_cle_api_publique"
callback=""
sandbox="false"
color="#0044cc"
description="Paiement de la commande #12345"
api-url="https://talypay-me.com"
>
</talypay-widget>
Paramètres du Widget
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| label | string | Oui | Texte affiché sur le bouton de paiement |
| amount | number | Oui | Montant à payer en XOF |
| key | string | Oui | Votre clé API publique (commence par tk_live_ ou tk_test_) |
| description | string | Oui | Description du paiement |
| api-url | string | Oui | URL de l'API TalyPay : https://talypay-me.com |
| sandbox | boolean | Non | Mode test (true) ou production (false). Défaut : false |
| color | string | Non | Couleur personnalisée du bouton (format
hexadécimal). Ex: #0044cc
|
| callback | string | Non | URL de redirection après le paiement |
Exemple complet
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Paiement TalyPay</title>
<!-- Inclure le script TalyPay -->
<script src="https://talypay-me.com/cdn-talypay/talypay.min.js"></script>
</head>
<body>
<div class="container">
<h1>Faire un don</h1>
<p>Soutenez notre cause avec un don sécurisé</p>
<!-- Widget TalyPay -->
<talypay-widget
label="Faire un don de 1000 FCFA"
amount="1000"
key="G0mfRWqGTrKscbpnUiksFbpHj1gwmjuDNuhA1nhGMgstL3eaAGrVFBTlCbO1k1eFybpTK2Ixv9tQykQigroDKL2wMg8l5e9M1Oo9b57pPY6X9muUl4e"
callback="https://monsite.com/merci"
sandbox="false"
color="#0044cc"
description="Don pour SOS Enfants"
api-url="https://talypay-me.com"
>
</talypay-widget>
</div>
</body>
</html>
Environnements de test et production
Pour tester vos paiements, utilisez sandbox="true"
et une clé API de test (préfixée par tk_test_).
En production, utilisez sandbox="false"
et votre clé API de production (préfixée par tk_live_).
JavaScript SDK v1.1.0
Le SDK JavaScript TalyPay offre une API programmatique complète avec vérification automatique du statut, gestion des callbacks, et support des modes sandbox/production.
Fonctionnalités clés
- Vérification automatique du statut des paiements
- Mode Sandbox avec simulation (sans requêtes API)
- Callbacks personnalisables (onSuccess, onError, onPending)
- Validation complète des données
- Gestion optimisée des erreurs
Installation
Incluez le SDK dans votre page HTML :
<script src="https://www.talypay-me.com/js-sdk/talypay-sdk.js"></script>
Initialisation
1. Initialisation simple
// Initialisation basique
const talypay = new TalyPay('tk_live_votre_cle_api_publique');
2. Initialisation avec callbacks (Recommandé)
// Initialisation avec callbacks et options
const talypay = new TalyPay('tk_live_votre_cle_api', {
sandbox: false, // true pour test, false pour production
maxStatusCheckAttempts: 60, // Nombre max de vérifications (défaut: 60)
// Callback appelé quand le paiement est confirmé
onSuccess: (response) => {
console.log('✅ Paiement réussi!', response);
alert(`Paiement confirmé! Réf: ${response.payment_ref}`);
// Rediriger l'utilisateur, mettre à jour l'UI, etc.
},
// Callback appelé en cas d'erreur
onError: (error, details) => {
console.error('❌ Erreur:', error.message);
alert('Erreur: ' + error.message);
// Afficher un message d'erreur à l'utilisateur
},
// Callback appelé pendant la vérification
onPending: (data) => {
console.log(`⏳ Vérification ${data.attempt}/${data.max_attempts}`);
// Mettre à jour un indicateur de progression
}
});
Modes de fonctionnement
🧪 Mode Sandbox (Test)
• Utilisez une clé tk_test_xxx
• Simulation automatique après 5 secondes
• Aucune requête API de vérification
• Parfait pour tester sans Mobile Money
🚀 Mode Production
• Utilisez une clé tk_live_xxx
• Vérifications API réelles toutes les 3 secondes
• Maximum 60 tentatives (3 minutes)
• Connexion réelle aux opérateurs Mobile Money
Initier un paiement
// Initier un paiement avec vérification automatique
talypay.initPayment({
payment_mode: 'mtn_momo', // 'mtn_momo', 'moov_money', 'celtiis_money', 'card'
customer_name: 'AKOSSOU',
customer_firstname: 'Francinne', // Optionnel
customer_email: 'francinne@example.com',
customer_tel: '229019000000', // Format international
amount: 1000, // Montant en FCFA (minimum: 100)
currency: 'XOF', // Devise (défaut: XOF)
country: 'benin', // Pays (défaut: benin)
payment_ref: 'ORDER-' + Date.now(), // Référence unique (auto-généré si non fourni)
description: 'Paiement de la commande #12345',
callback_url: '', // URL de callback (optionnel)
metadata: {} // Métadonnées (optionnel)
}, true) // true = vérification automatique activée
.then(response => {
console.log('Paiement initié:', response);
// La vérification automatique se lance
// Les callbacks onSuccess/onError seront appelés automatiquement
})
.catch(error => {
console.error('Erreur:', error.message);
});
Statuts de paiement possibles
pending
En attente de confirmation
successful
Paiement réussi ✅
failed
Paiement échoué
not_enough_found
Solde insuffisant
Exemple complet avec formulaire
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Paiement TalyPay</title>
<script src="https://www.talypay-me.com/js-sdk/talypay-sdk.js"></script>
</head>
<body>
<h1>Paiement avec TalyPay</h1>
<div id="alert" class="alert hidden"></div>
<form id="payment-form">
<select id="payment_mode" required>
<option value="mtn_momo">MTN Mobile Money</option>
</select>
<input type="text" id="name" placeholder="Nom" required>
<input type="email" id="email" placeholder="Email" required>
<input type="tel" id="phone" placeholder="229019000000" required>
<input type="number" id="amount" placeholder="1000" min="100" required>
<button type="submit" id="submitBtn">Payer maintenant</button>
</form>
<script>
// Initialiser TalyPay avec callbacks
const talypay = new TalyPay('tk_live_votre_cle_api', {
sandbox: false,
onSuccess: (response) => {
alert(`✅ Paiement confirmé! Réf: ${response.payment_ref}`);
document.getElementById('payment-form').reset();
},
onError: (error) => {
alert('❌ ' + error.message);
},
onPending: (data) => {
console.log(`Vérification ${data.attempt}/${data.max_attempts}`);
}
});
// Gérer la soumission
document.getElementById('payment-form').addEventListener('submit', async (e) => {
e.preventDefault();
try {
await talypay.initPayment({
payment_mode: document.getElementById('payment_mode').value,
customer_name: document.getElementById('name').value,
customer_firstname: '',
customer_email: document.getElementById('email').value,
customer_tel: document.getElementById('phone').value,
amount: parseInt(document.getElementById('amount').value),
currency: 'XOF',
country: 'benin',
payment_ref: 'ORDER-' + Date.now(),
description: 'Paiement en ligne'
}, true);
} catch (error) {
alert('Erreur: ' + error.message);
}
});
</script>
</body>
</html>
Numéros de test (Mode Sandbox)
• 229019000000 → Paiement réussi
✅
• 229019000001 → Paiement échoué
❌
Bonnes pratiques
- Utilisez toujours les callbacks pour gérer les résultats
- Validez les données côté client ET serveur
- Utilisez le mode sandbox pour les tests
- Implémentez une gestion d'erreur appropriée
- Testez sur HTTPS uniquement en production
Plugin WordPress / WooCommerce
Installez TalyPay sur votre boutique WordPress/WooCommerce en quelques clics.
Installation
- Téléchargez le plugin depuis talypay-me.com/downloads
- Allez dans WordPress → Extensions → Ajouter
- Cliquez sur "Téléverser une extension"
- Sélectionnez le fichier ZIP et installez
- Activez le plugin
- Configurez vos clés API dans WooCommerce → Réglages → Paiements → TalyPay
Besoin d'aide ?
Notre équipe est là pour vous accompagner dans votre intégration