Open source payment gateway for West Africa — Wave, Orange Money, Stripe
# Gaynde Gateway
Payment gateway open source pour l'Afrique de l'Ouest. Supporte **Wave**, **Orange Money** et **Stripe**.
Zero dependency. PHP 8.1+. SQLite ou MySQL. Prêt en 5 minutes.
```
POST /v1/checkout → Créer un paiement
GET /v1/transactions → Suivre une transaction
POST /v1/payouts → Envoyer de l'argent
POST /webhooks/:provider → Recevoir les confirmations
```
---
## Installation du serveur
```bash
git clone
github.com
cd gaynde-gateway
cp .env.example .env # Remplir vos clés API
composer dump-autoload
php bin/setup # Crée la DB + premier marchand
php -S localhost:8888 public/index.php
```
Le setup affiche vos clés marchand :
```
┌─────────────────────────────────────────────────────────┐
│ Merchant ID: mch_xxxxxxxxxxxxxxxx │
│ API Key: gd_live_xxxxxxxxxxxxxxxxxxxx │
│ Secret Key: gd_secret_xxxxxxxxxxxxxxxxxx │
│ Webhook Secret: gd_whsec_xxxxxxxxxxxxxxxxxxx │
└─────────────────────────────────────────────────────────┘
```
---
## API Reference
### Authentification
Toutes les requêtes (sauf `/webhooks/*`) nécessitent un header :
```
Authorization: Bearer gd_live_xxxxxxxxxxxxxxxxxxxx
```
### POST /v1/checkout
Crée une session de paiement.
```json
{
"provider": "wave",
"amount": 5000,
"currency": "XOF",
"description": "Commande #1234",
"customer_phone": "771234567",
"success_url": "
monsite.com",
"cancel_url": "
monsite.com",
"metadata": { "order_id": "1234" }
}
```
Réponse :
```json
{
"error": false,
"transaction": {
"id": "tx_a1b2c3d4e5f6...",
"status": "processing",
"checkout_url": "
pay.wave.com...",
"provider": "wave",
"amount": 5000,
"currency": "XOF"
}
}
```
Providers disponibles : `wave`, `orange_money`, `stripe`
### GET /v1/transactions/:id
```json
{
"error": false,
"transaction": {
"id": "tx_a1b2c3...",
"status": "succeeded",
"amount": 5000
}
}
```
### POST /v1/ …