feexpay-sdk
v1.0.9
Published
Official Node.js SDK for Feexpay Payment Gateway
Maintainers
Readme
🌐 Feexpay SDK - Intégration Node.js (Express)
Ce projet montre comment intégrer le SDK Feexpay dans une application Node.js avec Express, afin de créer un ordre de paiement et vérifier automatiquement son statut.
⚙️ Prérequis
- Node.js installé
- Compte marchand Feexpay (avec shop id et token)
- SDK Feexpay installé via npm :
npm install feexpay-sdk🛠️ Installation
npm install feexpay-sdk📝 Utilisation
⚠️ Ne jamais exposer vos clés dans le code. Utilisez des variables d'environnement avec un fichier .env.
.env
FEEXPAY_SECRET_KEY=fp_XXXXXXXXXXXXXXXXXXXXXXXXXXrequire('dotenv').config();
const express = require('express');
const bodyParser = require('body-parser');
const { Feexpay } = require('feexpay-sdk');
const app = express();
app.use(bodyParser.json());
// Initialisation du SDK avec vos clés Feexpay
const feexpay = new Feexpay(
process.env.FEEXPAY_API_KEY,
{
mode: 'LIVE', // 'LIVE' ou 'TEST'
timeout: 30000, // Timeout des requêtes (en ms)
maxRetries: 3 // Nombre de tentatives en cas d’échec
}
);
//Exemple de Route de création de paiement
//Crer un transaction
app.post('/api/payment/transaction', async (req:any, res:any) => {
try {
const payment = await feexpay.payment.createTransaction({
amount: req.body.amount, //obligatoire
shop: req.body.shop, //obligatoire
callback_info: req.body.callback_info, //optionnel
phoneNumber: req.body.phoneNumber, //obligatoire
motif: req.body.motif, //optionnel
network: req.body.network, //obligatoire
email : req.body.email,//optionnel
first_name : req.body.first_name,//optionnel
last_name : req.body.last_name//optionnel
});
return res.json(payment);
} catch (error:any) {
res.status(400).json({
success: false,
error: {
message: error.message,
code: error.code || 'PAYMENT_FAILED'
}
});
}
});
//Créer un paiement avec vérification automatique
app.post('/api/payments', async (req:any, res:any) => {
try {
const finalStatus = await feexpay.payment.createGlobalTransaction({
amount: req.body.amount, //obligatoire
shop: req.body.shop, //obligatoire
callback_info: req.body.callback_info, //optionnel
phoneNumber: req.body.phoneNumber, //obligatoire
motif: req.body.motif, //optionnel
network: req.body.network, //obligatoire
email : req.body.email,//optionnel
first_name : req.body.first_name,//optionnel
last_name : req.body.last_name//optionnel
});
return res.json(finalStatus);
} catch (error:any) {
res.status(400).json({
success: false,
error: {
message: error.message,
code: error.code || 'PAYMENT_FAILED'
}
});
}
});
// Exemple de Route de vérification de paiement
// Vérifier un transaction
app.get('/api/payments/:transactionId/verify', async (req:any, res:any) => {
try {
const status = await feexpay.payment.verifyTransaction(req.params.transactionId);
res.json(status);
} catch (error) {
res.status(400).json({ error: error });
}
});
// Démarrage du serveur (optionnel)
app.listen(3000, () => {
console.log('Serveur démarré sur http://localhost:3000');
});
## 📦 Exemple de requête
### Utilisez Postman ou curl pour tester :
```bash
curl -X POST http://localhost:3000/create-order \
-H "Content-Type: application/json" \
-d '{
"amount": 1000,
"shop": "ID_DU_SHOP",
"callback_info": "https://votre-callback.com",
"phoneNumber": "229XXXXXXXX",
"motif": "Paiement test",
"network": "mtn"
}'##🛡️ Bonnes pratiques ###✅ Stockez les clés dans un fichier .env ###❌ Ne jamais committer vos clés secrètes dans Git ###🛑 Ajoutez .env à votre .gitignore :
.env📝 Documentation
📚 License
📝 Auteurs
- Abdias ADINSI [email protected]
