Aller au contenu

Développeurs

Le paiement Mobile Money, depuis votre code

Une API REST, des webhooks signés, des SDK et un mode test avec des numéros Mobile Money de test. Voici un paiement, de la requête au webhook.

curl https://api.notchpay.co/payments \
  -H "Authorization: $NOTCHPAY_PUBLIC_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 25000,
    "currency": "XAF",
    "customer": { "email": "client@example.com" },
    "reference": "order_1042",
    "callback": "https://example.com/orders/1042"
  }'

Pensée pour une production sans surprise.

Des conventions claires, des erreurs explicites et des outils de test fidèles à la production, pour un lancement sans histoire.

REST et JSON
Des endpoints orientés ressources pour les paiements, transferts, clients, bénéficiaires et webhooks, avec des réponses JSON cohérentes.
Mode test
Des clés et des numéros Mobile Money de test pour simuler des paiements réussis, échoués, expirés ou annulés.
Clés API séparées
Une clé publique pour créer des paiements, une clé privée pour déplacer des fonds et une clé de hachage distincte pour les webhooks.
Présélection de l’opérateur
Utilisez locked_channel pour envoyer vos clients directement vers MTN MoMo ou Orange Money quand vous savez déjà comment ils paient.

Vérifiez que chaque webhook vient bien de nous.

Notch Pay signe chaque webhook en HMAC SHA-256 avec la clé de hachage de votre endpoint. Comparez la signature à l’en-tête x-notch-signature pour vous assurer que l’événement vient bien de nous.

import crypto from 'node:crypto'
import express from 'express'

const app = express()

app.post('/webhooks/notchpay', express.raw({ type: 'application/json' }), (req, res) => {
  const expected = crypto
    .createHmac('sha256', process.env.NOTCHPAY_HASH_KEY)
    .update(req.body)
    .digest('hex')
  const received = req.get('x-notch-signature') ?? ''

  const valid = received.length === expected.length
    && crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected))
  if (!valid) return res.sendStatus(403)

  const event = JSON.parse(req.body)
  // Handle the event, then acknowledge it
  res.sendStatus(200)
})

Obtenez vos clés de test en quelques minutes.

Créez votre compte et faites votre premier paiement de test avec vos clés de test.

  • Des clés de test dès l’inscription
  • La vérification des documents de votre entreprise
  • Des paiements réels, crédités sur votre solde