Documentation API
Intégrez 2KAPay en quelques minutes avec nos SDKs et APIs REST. Acceptez Orange Money et Wave simplement.
Le Concept 2KAPay
Sécurisé
Tous les flux sont cryptés et validés par signature numérique.
Rapide
Une seule intégration pour tous les opérateurs du Mali.
2KAPay est une passerelle de paiement (Gateway) qui simplifie l'encaissement via Mobile Money. Vous n'avez plus besoin de vous intégrer individuellement avec chaque opérateur.
Authentification
Toutes les requêtes vers l'API 2KAPay doivent être authentifiées à l'aide de votre Secret Token. Ce jeton doit être passé dans l'en-tête HTTP Authorization.
Widget (Checkout)
Le moyen le plus simple d'accepter des paiements. Intégrez notre bibliothèque JavaScript et affichez une fenêtre de paiement élégante sans quitter votre site.
<!-- Script 2KAPay -->
<script src="https://api.2kapay.com/v1/checkout.js"></script>
<button id="payButton">Payer 5000 FCFA</button>
<script>
const kapay = new Kapay('pk_test_votre_clé_publique');
document.getElementById('payButton').addEventListener('click', () => {
kapay.openCheckout({
amount: 5000,
description: "Achat Laptop Yoga 7",
customer_name: "Jean Dupont",
callback_url: "https://votre-site.com/success.php"
});
});
</script>
API Directe (Backend)
Pour un contrôle total sur l'expérience utilisateur, utilisez notre API REST pour initier des demandes de paiement directement depuis votre serveur.
/v1/payment/initiate
$ch = curl_init('https://api.2kapay.com/v1/payment/initiate');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $secret_token,
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'amount' => 5000,
'phone' => '72984753',
'method' => 'Orange',
'reference' => 'ORDER-123'
]));
$response = curl_exec($ch);
$data = json_decode($response, true);import 'package:http/http.dart' as http;
import 'dart:convert';
Future<void> pay() async {
var url = Uri.parse('https://api.2kapay.com/v1/payment/initiate');
var response = await http.post(url,
headers: {
'Authorization': 'Bearer $secretToken',
'Content-Type': 'application/json',
},
body: jsonEncode({
'amount': 5000,
'phone': '72984753',
'method': 'Orange',
}),
);
print('Statut: ${response.statusCode}');
}const response = await fetch('https://api.2kapay.com/v1/payment/initiate', {
method: 'POST',
headers: {
'Authorization': `Bearer ${secretToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
amount: 5000,
phone: '72984753',
method: 'Orange'
})
});
const result = await response.json();import requests
url = "https://api.2kapay.com/v1/payment/initiate"
headers = {
"Authorization": f"Bearer {secret_token}",
"Content-Type": "application/json"
}
payload = {
"amount": 5000,
"phone": "72984753",
"method": "Orange"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())// Utilisation de java.net.http.HttpClient
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.2kapay.com/v1/payment/initiate"))
.header("Authorization", "Bearer " + secretToken)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(jsonBody))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());Webhooks
Recevez des notifications automatiques sur votre serveur dès qu'une transaction change d'état (Succès, Échec). Cela est crucial pour délivrer le service à votre client sans action manuelle.
Structure du JSON envoyé :
{
"reference": "2KA-REF-XYZ",
"status": "success",
"amount": 10000,
"currency": "XOF",
"customer_phone": "72984753",
"method": "Wave",
"signature": "sha256_hash_pour_validation"
}