Documentation Complète API Marchands

Intégrez les paiements Mobile Money avec nos SDKs officiels

3 SDKs Officiels
HMAC-SHA512
Webhooks temps réel
Multi-pays

Démarrage Rapide

Choisissez votre langage et intégrez HunterTech Pay en moins de 10 minutes

1️⃣

Obtenez vos clés API

Créez un compte marchand et générez vos clés dans le dashboard

2️⃣

Installez le SDK

Disponible pour Python, Node.js, et PHP

3️⃣

Effectuez un paiement

Quelques lignes de code suffisent !

Flux d'intégration HunterTech Pay

Cycle complet d'une transaction de paiement Mobile Money

DashboardMarchand

📋 Étape 1

  • • Créer compte
  • • Générer API Key
  • • Obtenir Secret Key
  • • Configurer webhook

⏱️ ~5 minutes

SDKClient Library

💻 Étape 2

  • • Installer SDK
  • • Configurer clés
  • • Créer instance
  • • Appeler méthode

⏱️ ~10 minutes

API RESTHunterTech

🔐 Étape 3

  • • Vérifier signature
  • • Valider données
  • • Créer transaction
  • • Routage opérateur

⏱️ ~200ms

Redirection

Mobile MoneyOpérateur Télécom

📱 Étape 4 - Traitement Opérateur

  • • Vérifier solde
  • • Demander PIN
  • • Débiter compte
  • • Authentifier
  • • Valider montant
  • • Confirmer OTP

⏱️ 5-60 secondes

SuccessPendingFailed

Réponse Async

WebhookNotification

🔔 Étape 5

  • • Recevoir callback
  • • Vérifier signature
  • • Mettre à jour DB
  • • Notifier client

⏱️ Temps réel

Types de flux

Requête synchrone
Réponse asynchrone

Sécurité

HMAC-SHA512 sur toutes les requêtes
Vérification signature webhook
TLS 1.3 sur tous les endpoints

Temps de réponse

API HunterTech:~200ms
Mobile Money:5-60s
Webhook:Temps réel

SDKs Officiels

Bibliothèques maintenues officiellement pour une intégration rapide et sécurisée

🐍
v1.0.0

Python SDK

SDK officiel pour Python 3.8+

pip install huntertechpay
Type hints
Async support
Pydantic models
Voir sur GitHub
📦
v1.0.0

Node.js SDK

SDK officiel pour Node.js 16+ et TypeScript

npm install @huntertechpay/node-sdk
TypeScript
Promises/Async
Zero dependencies
Voir sur GitHub
🐘
v1.0.0

PHP SDK

SDK officiel pour PHP 8.0+

composer require huntertechpay/php-sdk
PSR-4
Type declarations
No dependencies
Voir sur GitHub

Architecture Commune des SDKs

Structure modulaire partagée par Python, Node.js et PHP

Votre Application

Code métier

🐍
Python SDK

HunterTechPay()

Classe principale

deposit()
withdraw()
check_status()
get_providers()
📦
Node.js SDK

HunterTechPay

Classe TypeScript

deposit()
withdraw()
checkStatus()
getProviders()
🐘
PHP SDK

HunterTechPay

Classe PHP

deposit()
withdraw()
checkStatus()
getProviders()

Modules Communs

Architecture partagée

HTTP Client
  • • GET/POST
  • • Headers
  • • Timeout
HMAC Auth
  • • SHA512
  • • Signature
  • • Timestamp
Builder
  • • Validation
  • • Serialize
  • • Format
Parser
  • • JSON
  • • Errors
  • • Models

API HunterTech Pay

https://api.huntertechpay.com/v1

Avantages

  • ✓ Interface unifiée
  • ✓ Gestion automatique HMAC
  • ✓ Retry & timeout
  • ✓ Type-safe (TS/Pydantic)

Dépendances

  • 🐍 requests, pydantic
  • 📦 crypto-js (optionnel)
  • 🐘 Aucune (built-in)

Installation

  • pip install
  • npm install
  • composer require

Exemples de Code

Exemples complets pour chaque SDK officiel

📥 Installation: pip install huntertechpay

from huntertechpay import HunterTechPay

# Initialize client
hunter = HunterTechPay(
    api_key='htp_live_your_api_key',
    secret_key='sk_live_your_secret_key',
    base_url='https://api.huntertechpay.com'
)

# Get available providers
providers = hunter.get_providers('CM')  # Cameroon
for provider in providers.providers:
    print(f"{provider.name}: {provider.cashin_service_code}")

# Deposit (CASHIN) - From mobile money to wallet
deposit = hunter.deposit(
    amount=10000.0,  # 10,000 XAF
    currency='XAF',
    country='CM',
    phone='+237699123456',
    service_code='HT_PAIEMENTMARCHAND_MTN_CM',
    partner_id='ORDER-12345',
    description='Payment for order #12345'
)

print(f"Transaction ID: {deposit.transaction_id}")
print(f"Status: {deposit.status}")

# Check transaction status
status = hunter.check_status('ORDER-12345', 'partner_id')
print(f"Current status: {status.status}")

Webhooks & Notifications

Recevez des notifications en temps réel sur le statut de vos transactions

Événements webhook

transaction.pending

Transaction initiée

transaction.processing

En cours de traitement

transaction.success

Transaction réussie

transaction.failed

Transaction échouée

Exemple de handler webhook

Node.js Express

// Node.js Express Webhook Handler
const crypto = require('crypto');

app.post('/webhook/huntertechpay', (req, res) => {
  // Get signature from header
  const signature = req.headers['x-hunter-signature'];
  const timestamp = req.headers['x-hunter-timestamp'];

  // Verify signature
  const payload = JSON.stringify(req.body);
  const message = `${timestamp}.${payload}`;

  const expectedSignature = crypto
    .createHmac('sha512', SECRET_KEY)
    .update(message)
    .digest('hex');

  if (signature !== expectedSignature) {
    return res.status(401).json({ error: 'Invalid signature' });
  }

  // Process webhook
  const { event, transaction_id, partner_id, status } = req.body;

  if (event === 'transaction.success') {
    // Update your database
    await updateOrderStatus(partner_id, 'paid');
  }

  res.status(200).json({ success: true });
});

Flux de Notification Webhook

Communication asynchrone en temps réel entre HunterTech Pay et votre serveur

1

Événement Transaction

Transaction complétée sur Mobile Money (Success/Failed/Pending)

✓ Success
✗ Failed
⏳ Pending

Trigger

2

HunterTech Pay - Préparation

Création du payload webhook avec signature HMAC-SHA512

Payload JSON: { event, transaction_id, status, ... }
Timestamp: Unix epoch
Signature: HMAC-SHA512(timestamp.payload, secret_key)

POST Request

3

Votre Serveur - Réception

Endpoint webhook reçoit la requête POST

📥 Headers reçus:

X-Hunter-Signature: abc123...
X-Hunter-Timestamp: 1234567890
Content-Type: application/json

Vérification

4

Validation Sécurité

Vérification de l'authenticité du webhook

1
Extraire signature et timestamp des headers
2
Recalculer: HMAC-SHA512(timestamp.body, secret_key)
3
Comparer signatures → Rejeter si différentes

Traitement

5

Traitement Métier

Mise à jour de votre base de données et logique métier

📊 Actions:

  • • Mettre à jour statut
  • • Créditer compte
  • • Logger transaction

📧 Notifications:

  • • Email client
  • • SMS confirmation
  • • Push notification

Réponse

6

HTTP 200 OK

Confirmation de réception à HunterTech Pay

Status: 200 OK
Body: { "success": true }
Webhook ACK

⚠️ Points d'attention

  • • Répondre rapidement (<5s) pour éviter les retries
  • • Traiter de manière idempotente (même webhook 2x = même résultat)
  • • Logger tous les webhooks pour debug
  • • Toujours vérifier la signature avant traitement

🔄 Politique de retry

  • • Tentative 1: Immédiat
  • • Tentative 2: +5 minutes
  • • Tentative 3: +30 minutes
  • • Tentative 4: +2 heures
  • • Abandonnée après 24h

Authentification HMAC-SHA512

Toutes les requêtes API doivent être signées pour garantir la sécurité

🔒 Bonne nouvelle: Si vous utilisez nos SDKs officiels, l'authentification HMAC-SHA512 est gérée automatiquement ! Vous n'avez pas à vous soucier de la génération des signatures.

Process de signature (pour implémentation manuelle)

  1. Générer un timestamp UNIX (en secondes): Math.floor(Date.now() / 1000)
  2. Construire le message: {timestamp}.{json_body}
  3. Calculer la signature HMAC-SHA512 avec votre Secret Key
  4. Ajouter les headers à votre requête:
X-API-Key: votre_api_key
X-Hunter-Timestamp: {timestamp}
X-Hunter-Signature: {hmac_signature}
Content-Type: application/json

Processus d'authentification HMAC-SHA512

1

Client - Préparation de la requête

Construction du payload et génération du timestamp

1
Créer le payload JSON
{ "amount": 50000, "provider": "mtn", "phone": "+237670000000" }
2
Générer le timestamp UNIX
timestamp = Math.floor(
  Date.now() / 1000
)
// Ex: 1711234567
Calcul de signature
2

Client - Génération de la signature HMAC

Calcul de la signature avec votre Secret Key

1
Construire le message à signer
message = timestamp + "." + JSON.stringify(payload)
// Ex: 1711234567.{"amount":50000,"provider":"mtn",...}
2
Calculer la signature HMAC-SHA512
signature = HMAC_SHA512(message, secret_key)
// Résultat: chaîne hexadécimale de 128 caractères
3
Ajouter les headers HTTP
X-API-Key: htp_live_your_api_key
X-Hunter-Timestamp: 1711234567
X-Hunter-Signature: a4f2d8e9c1b3...
Envoi de la requête
3

Serveur API - Réception de la requête

Le serveur reçoit la requête avec les headers de sécurité

Headers reçus
X-API-Key
X-Hunter-Timestamp
X-Hunter-Signature
Body reçu
{ "amount": 50000, "provider": "mtn", "phone": "+237670000000" }
Vérification de sécurité
4

Serveur API - Vérification de la signature

Validation de l'authenticité de la requête

1
Extraire les données
timestamp = headers["X-Hunter-Timestamp"]
signature_reçue = headers["X-Hunter-Signature"]
body = request.body
2
Recalculer la signature
message = timestamp + "." + body
signature_calculée = HMAC_SHA512(message, secret_key)
3
Comparer les signatures
if (signature_reçue === signature_calculée) {
  // ✓ Signature valide → Continuer
} else {
  // ✗ Signature invalide → Rejeter (401)
}
4
Vérifier le timestamp (protection contre replay attack)
temps_écoulé = current_time - timestamp
if (temps_écoulé > 300) { // 5 minutes
  // ✗ Requête trop ancienne → Rejeter
}
Décision

Signature Valide

Requête authentifiée

Actions
Traiter la requête
Créer la transaction
Appeler Mobile Money
Retourner HTTP 200 + données

Signature Invalide

Requête rejetée

Raisons possibles
Signature incorrecte
Secret Key invalide
Timestamp expiré (>5min)
Retourner HTTP 401 Unauthorized
Avantages de HMAC-SHA512
  • • Authentification forte des requêtes
  • • Protection contre les attaques Man-in-the-Middle
  • • Impossible de forger une signature sans la Secret Key
  • • Détection de modification du payload
  • • Protection contre les replay attacks (timestamp)
Bonnes pratiques
  • • Ne jamais partager votre Secret Key
  • • Utiliser HTTPS pour toutes les requêtes
  • • Stocker la Secret Key dans les variables d'environnement
  • • Vérifier le timestamp pour limiter la validité
  • • Logger les tentatives d'authentification échouées

Environnement de Test

Testez votre intégration sans effectuer de vraies transactions

URLs de test

Production
https://api.huntertechpay.com
Sandbox (Test)
https://sandbox-api.huntertechpay.com

Numéros de test

NuméroComportement
+237600000001
Succès immédiat
+237600000002
Échec (fonds insuffisants)
+237600000003
Timeout
+237600000004
Succès après 30s

Référence API Complète

Documentation détaillée de tous les endpoints REST avec exemples de requêtes et réponses

Code Source des SDKs

Explorez le code source, contribuez, ou signalez des bugs sur GitHub