Aller au contenu

Intégrer PayTech

La demande de paiement et les notifications IPN de PayTech, la vérification de l'IPN et la checklist de production.

PayTech est un agrégateur sénégalais : Orange Money, Wave, Free Money, Wizall, E-money et cartes. Une seule intégration couvre plusieurs moyens de paiement. Fiche du fournisseur : PayTech dans l'annuaire.

Le parcours PayTech

Source : documentation PayTech, vérifiée le 28 septembre 2026.

  1. Votre serveur appelle POST https://paytech.sn/api/payment/request-payment avec les en-têtes API_KEY et API_SECRET. Champs obligatoires : item_name, item_price, ref_command (unique), command_name. Champs utiles : currency (XOF par défaut), env (test ou prod, prod par défaut), ipn_url (HTTPS), success_url, cancel_url, custom_field, target_payment.

  2. PayTech répond avec success: 1, un token et une redirect_url. Redirigez le client vers cette adresse.

  3. Le client choisit son moyen de paiement et paie.

  4. PayTech envoie une notification IPN à ipn_url. Le champ type_event vaut sale_complete, sale_canceled, refund_complete, transfer_success ou transfer_failed.

Mode test de PayTech

Avec env: "test", PayTech débite un montant aléatoire entre 100 et 150 FCFA, quel que soit le montant demandé.

Tester l'IPN

Pour tester la vérification de l'IPN, utilisez env: "test" chez PayTech, ou construisez vous-même une IPN de test avec votre API_KEY et votre API_SECRET. Correspondance de statuts proposée, pour votre fonction de traduction :

PayTech (type_event)État de votre application
aucune notification encoreen attente
sale_completepayée
sale_canceledéchouée ou annulée
refund_completeremboursée

transfer_success et transfer_failed concernent les transferts sortants.

Vérifier les notifications

IPN PayTech

PayTech recommande de vérifier hmac_compute : HMAC-SHA256, avec votre API_SECRET comme clé, du message <montant>|<ref_command>|<API_KEY>. Le montant est final_item_price, ou item_price s'il est absent. L'autre méthode compare api_key_sha256 et api_secret_sha256 au SHA-256 de vos clés. Source : documentation PayTech, vérifiée le 28 septembre 2026.

JavaScript
import { createHmac, timingSafeEqual } from 'node:crypto';

// ipn : les champs reçus sur ipn_url (corps décodé).
export function verifierIpnPaytech(ipn, apiKey, apiSecret) {
	const montant = ipn.final_item_price || ipn.item_price;
	const attendu = createHmac('sha256', apiSecret).update(`${montant}|${ipn.ref_command}|${apiKey}`).digest('hex');
	const recu = String(ipn.hmac_compute ?? '');
	return recu.length === attendu.length && timingSafeEqual(Buffer.from(recu), Buffer.from(attendu));
}

Checklist de production

Source des pièces : fiche annuaire, vérifiée le 28 septembre 2026.

  • Compte PayTech validé manuellement. Pièces : NINEA, pièce d'identité, registre de commerce, statuts, justificatif de domicile.
  • Entreprise immatriculée : RCCM et NINEA (démarche).
  • Déclaration à la CDP faite et récépissé reçu (démarche).
  • Tarifs vérifiés sur le site de PayTech.
  • env passé à prod, ipn_url en HTTPS.
  • Clés API_KEY et API_SECRET stockées hors du code, jamais côté client.
  • ref_command unique par commande, IPN traitée de façon idempotente.
  • SDK officiels disponibles en PHP et Android, si votre stack s'y prête.

Et ensuite ?