Documentation
Intégrez LeekPay sur votre site
Démarrage
Obtenez vos clés API
- Créez un compte sur leekpay.me
- Allez dans Dashboard → Clés API
- Cliquez sur Nouvelle clé API
- Copiez votre
pk_live_xxx(publique) etsk_live_xxx(secrète)
Trois méthodes d'intégration
Ne partagez jamais votre clé secrète. Utilisez-la uniquement côté serveur.
Widget HTML
Intégrez un bouton de paiement sur votre site en quelques lignes de code HTML. Aucune configuration serveur nécessaire.
Étape 1 : Ajouter le script et le bouton
<!-- Charger le script LeekPay -->
<script src="https://leekpay.fr/js/leekpay.js"></script>
<!-- Bouton de paiement -->
<button
data-leekpay-amount="5000"
data-leekpay-currency="XOF"
data-leekpay-key="pk_live_votre_cle_publique"
data-leekpay-description="Commande #123">
Payer 5 000 CFA
</button>Étape 2 : Gérer le résultat (optionnel)
Ajoutez des callbacks pour réagir après le paiement :
<script>
LeekPay.configure({
onSuccess: function(data) {
console.log('Paiement réussi !');
console.log('Montant:', data.amount, data.currency);
window.location.href = '/merci';
},
onCancel: function() {
console.log('Paiement annulé');
}
});
</script>| Attribut | Description |
|---|---|
data-leekpay-key | Votre clé publique pk_live_xxx (requis) |
data-leekpay-amount | Montant à payer (requis) |
data-leekpay-currency | Devise : XOF, EUR, USD (requis) |
data-leekpay-description | Description affichée au client |
data-leekpay-email | Email pré-rempli du client |
JavaScript
Lancez le paiement depuis votre code JavaScript :
<!-- 1. Charger le script -->
<script src="https://leekpay.fr/js/leekpay.js"></script>
<!-- 2. Bouton de paiement -->
<button onclick="payer()">Payer maintenant</button>
<script>
function payer() {
LeekPay.checkout({
amount: 5000,
currency: 'XOF',
apiKey: 'pk_live_votre_cle_publique',
description: 'Commande #123',
onSuccess: function(data) {
console.log('Paiement réussi:', data.amount, data.currency);
window.location.href = '/merci';
},
onCancel: function() {
console.log('Paiement annulé');
}
});
}
</script>Données reçues dans onSuccess
data.status • data.amount • data.currency • data.payment_id| Option | Description |
|---|---|
amount | Montant à payer (requis) |
currency | Devise : XOF, EUR, USD (requis) |
apiKey | Votre clé publique pk_live_xxx (requis) |
description | Description affichée au client |
customerEmail | Email pré-rempli du client |
onSuccess | Fonction appelée après paiement réussi |
onCancel | Fonction appelée si annulation |
API REST
Utilisez l'API REST pour créer des paiements depuis votre serveur. Authentifiez-vous avec votre clé secrète (sk_live_xxx).
Créer un checkout
POST /api/v1/checkoutAuthentification : Bearer Token (clé secrète)
# Requête
curl -X POST https://leekpay.fr/api/v1/checkout \
-H "Authorization: Bearer sk_live_votre_cle_secrete" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"currency": "XOF",
"description": "Commande #123",
"return_url": "https://votresite.com/merci",
"customer_email": "client@example.com"
}'# Réponse
{
"success": true,
"data": {
"payment_url": "https://leekpay.fr/pay/abc123",
"payment_id": "abc123",
"status": "pending",
"amount": 5000,
"currency": "XOF"
}
}Vérifier le statut
GET /api/v1/checkout/{payment_id}
curl https://leekpay.fr/api/v1/checkout/abc123 \
-H "Authorization: Bearer sk_live_votre_cle_secrete"| Paramètre | Type | Description |
|---|---|---|
amount | integer | Montant en centimes (requis) |
currency | string | XOF, EUR ou USD (requis) |
description | string | Description de la commande |
return_url | string | URL de redirection après paiement |
customer_email | string | Email du client |
Champs de la réponse
| Champ | Type | Description |
|---|---|---|
payment_url | string | URL de la page de paiement |
payment_id | string | Identifiant unique du paiement |
status | string | Statut du paiement (voir Statuts) |
amount | integer | Montant du paiement |
currency | string | Devise du paiement |
Webhooks
Recevez une notification sur votre serveur quand un paiement est effectué. Configurez l'URL de votre endpoint dans Dashboard → Clés API.
Format de la notification
LeekPay envoie une requête POST à votre URL avec les données du paiement :
# Requête envoyée par LeekPay à votre serveur
POST https://votresite.com/webhook
Content-Type: application/json
X-LeekPay-Signature: 5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a...
{
"event": "payment.success",
"transaction": {
"id": 123,
"amount": 5000,
"currency": "XOF",
"status": "completed",
"customer_email": "client@example.com",
"description": "Commande #123",
"created_at": "2024-01-15T10:30:00Z"
}
}Vérifier la signature (sécurité)
La signature X-LeekPay-Signature est envoyée dans les headers HTTP. Utilisez votre clé publique pour la vérifier.
<?php
// Exemple PHP : vérification de la signature webhook
// 1. Récupérer la signature envoyée par LeekPay
$signature = $_SERVER['HTTP_X_LEEKPAY_SIGNATURE'];
// 2. Récupérer le corps de la requête (payload JSON)
$payload = file_get_contents('php://input');
// 3. Calculer la signature attendue avec votre clé publique
$expected = hash_hmac('sha256', $payload, 'pk_live_votre_cle_publique');
// 4. Comparer les signatures de manière sécurisée
if (hash_equals($expected, $signature)) {
// Signature valide : traiter le paiement
$data = json_decode($payload, true);
$transactionId = $data['transaction']['id'];
$amount = $data['transaction']['amount'];
// Mettre à jour votre base de données...
http_response_code(200);
echo 'OK';
} else {
// Signature invalide : rejeter la requête
http_response_code(401);
echo 'Invalid signature';
}| Champ | Type | Description |
|---|---|---|
event | string | Type d'événement ("payment.success") |
transaction.id | integer | ID unique de la transaction |
transaction.amount | integer | Montant payé |
transaction.currency | string | Devise (XOF, EUR, USD) |
transaction.status | string | Statut du paiement |
transaction.customer_email | string | Email du client |
Devises
| Devise | Minimum |
|---|---|
| XOF (Franc CFA) | 100 CFA |
| EUR (Euro) | 1 € |
| USD (Dollar) | 1 $ |
Statuts de paiement
Les transactions passent par différents statuts au cours de leur cycle de vie.
| Statut | Description |
|---|---|
pending | Paiement en attente, le client n'a pas encore payé |
processing | Paiement en cours de traitement par le prestataire |
completed | Paiement réussi et validé |
failed | Paiement échoué (fonds insuffisants, erreur technique) |
cancelled | Paiement annulé par le client |
expired | Lien de paiement expiré (délai dépassé) |
Besoin d'aide ? Contactez support@leekpay.me
