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.

1

Créez un compte

Inscrivez-vous sur TalyPay et vérifiez votre compte

2

Récupérez vos clés API

Accédez à votre tableau de bord pour obtenir vos clés

3

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

pk_test

Clé publique sandbox

Utilisée côté client, peut être exposée

tk_live

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.

POST /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

POST /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

pending

En attente de confirmation

Bad request

Requête incorrecte

successful

Paiement réussi

failed

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.

POST /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

POST /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

pending

En cours de traitement

successful

Traitement réussi ✅

failed

Échec du traitement

rejected

Rejeté par le système

Vérifier le solde disponible

Consultez votre solde disponible avant d'effectuer un disbursement.

POST /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 :

  1. Accédez à Paramètres → Webhooks
  2. Cliquez sur "Ajouter un webhook"
  3. Entrez votre URL de endpoint
  4. Sélectionnez les événements à écouter
  5. 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

  1. Téléchargez le plugin depuis talypay-me.com/downloads
  2. Allez dans WordPress → Extensions → Ajouter
  3. Cliquez sur "Téléverser une extension"
  4. Sélectionnez le fichier ZIP et installez
  5. Activez le plugin
  6. Configurez vos clés API dans WooCommerce → Réglages → Paiements → TalyPay

Téléchargement

Version actuelle : 2.1.0

Télécharger le plugin

Besoin d'aide ?

Notre équipe est là pour vous accompagner dans votre intégration