Documentation Index Fetch the complete documentation index at: https://docs.oneclickdz.com/llms.txt
Use this file to discover all available pages before exploring further.
Sécurité
1. Protégez vos clés API
N’exposez jamais les clés API dans le code frontend ou les dépôts publics !
# Fichier .env (ajoutez à .gitignore)
ONECLICK_API_KEY = your_key_here
const apiKey = process . env . ONECLICK_API_KEY ;
2. Backend uniquement
Appelez toujours l’API Navio depuis votre backend, jamais depuis le frontend :
// ❌ INCORRECT - Frontend
fetch ( "https://api.oneclickdz.com/v3/ocpay/createLink" , {
headers: { "X-Access-Token" : "YOUR_KEY" }, // Exposé aux utilisateurs !
});
// ✅ CORRECT - Backend
// Le frontend appelle VOTRE API, votre backend appelle OneClick
fetch ( "/api/create-payment" , { method: "POST" });
3. Validez les entrées
function validateOrderData ( data ) {
if ( ! Number . isInteger ( data . amount )) {
throw new Error ( "Amount must be integer" );
}
if ( data . amount < 500 || data . amount > 500000 ) {
throw new Error ( "Amount must be between 500 and 500,000 DZD" );
}
if ( ! data . title || data . title . trim (). length === 0 ) {
throw new Error ( "Title is required" );
}
return data ;
}
4. Vérifiez avant de traiter
Vérifiez toujours le statut du paiement sur le backend avant de traiter les commandes !
async function fulfillOrder ( orderId ) {
const order = await db . orders . findOne ({ id: orderId });
// CRITICAL: Verify payment status
const response = await fetch (
`https://api.oneclickdz.com/v3/ocpay/checkPayment/ ${ order . paymentRef } ` ,
{
headers: { "X-Access-Token" : process . env . ONECLICK_API_KEY },
}
);
const data = await response . json ();
if ( data . data . status !== "CONFIRMED" ) {
throw new Error ( "Payment not confirmed" );
}
// Sûr de traiter
await processOrder ( order );
}
Gestion des erreurs
Gérer les erreurs API
async function createPaymentSafe ( orderId , amount , title ) {
try {
const response = await fetch (
"https://api.oneclickdz.com/v3/ocpay/createLink" ,
{
method: "POST" ,
headers: {
"Content-Type" : "application/json" ,
"X-Access-Token" : process . env . ONECLICK_API_KEY ,
},
body: JSON . stringify ({
productInfo: { title , amount },
}),
}
);
if ( ! response . ok ) {
if ( response . status === 403 ) {
throw new Error ( "Merchant not validated" );
}
throw new Error ( "API request failed" );
}
const data = await response . json ();
if ( ! data . success ) {
throw new Error ( data . error ?. message || "Unknown error" );
}
return data . data ;
} catch ( error ) {
console . error ( "Payment creation failed:" , error );
throw error ;
}
}
Tests
Utilisez le Sandbox
Testez avec les clés sandbox avant la production :
# Développement
ONECLICK_API_KEY = sk_sandbox_abc123...
# Production
ONECLICK_API_KEY = sk_live_xyz789...
Scénarios de test
Testez ces cas :
✅ Paiement réussi
✅ Paiement échoué
✅ Lien de paiement expiré (20 min)
✅ Client revient sans payer
✅ Erreurs API
Liste de contrôle pour la production
Avant de passer en ligne :
Sécurité
Fonctionnalité
Tests
Surveillance
Erreurs courantes
À éviter :
❌ Coder les clés API en dur
❌ Appeler l’API depuis le frontend
❌ Ne pas sauvegarder paymentRef
❌ Traiter sans vérification
❌ Aucune gestion des erreurs
❌ Vérifier trop fréquemment (respectez les limites de débit)
❌ Ne pas tester en sandbox d’abord
Bonnes pratiques de base de données
Ajoutez des index pour les performances :
-- Accélérer les requêtes de commandes en attente
CREATE INDEX idx_orders_pending
ON orders( status , payment_ref)
WHERE status = 'PENDING' ;
-- Accélérer les recherches par paymentRef
CREATE INDEX idx_payment_ref ON orders(payment_ref);
Journalisation
Journalisez les événements importants :
// Journaliser la création de paiement
console . log ( "[Payment] Created" , {
orderId ,
paymentRef ,
amount ,
timestamp: new Date (),
});
// Journaliser les changements de statut
console . log ( "[Payment] Status changed" , {
orderId ,
oldStatus: "PENDING" ,
newStatus: "PAID" ,
timestamp: new Date (),
});
Prochaines étapes
Référence API Documentation API complète
Contacter le support Obtenez l’aide de notre équipe
Tableau de bord Surveillez vos paiements
Guide de sécurité Pratiques de sécurité avancées
Vous êtes prêt ! 🎉
Vous disposez maintenant de tout le nécessaire pour accepter des paiements avec Navio. Commencez par le sandbox, testez soigneusement, puis passez en production !