Intégration API
Créez des flux de paiement personnalisés et des intégrations backend.
Aperçu
Bien que le widget soit le moyen le plus simple d'accepter des paiements, l'API Fivo vous donne un contrôle total pour les intégrations personnalisées. Utilisez l'API pour :
- Créer des expériences de paiement personnalisées
- Interroger l'historique des paiements de manière programmatique
- Intégrer avec vos systèmes backend existants
- Créer des paiements depuis du code côté serveur
Sessions de paiement
Les Sessions de paiement sont le moyen recommandé pour accepter des paiements depuis une intégration côté serveur. Votre serveur crée une session, redirige le client vers une page de paiement hébergée par Fivo, et vérifie le paiement lorsque le client revient.
Quand utiliser quoi
Widget intégré
Produits fixes, dons, sites statiques
Backend: Non
Widget + data-amount-from
Paniers d'achat, totaux dynamiques
Backend: Non
Lien direct
E-mails, réseaux sociaux, codes QR
Backend: Non
Sessions de paiement
E-commerce, SaaS, traitement de commandes
Backend: Oui (API key)
| Méthode | Idéal pour | Backend requis ? |
|---|---|---|
| Widget intégré | Produits fixes, dons, sites statiques | Non |
Widget + data-amount-from | Paniers d'achat, totaux dynamiques | Non |
| Lien direct | E-mails, réseaux sociaux, codes QR | Non |
| Sessions de paiement | E-commerce, SaaS, traitement de commandes | Oui (API key) |
Exemple complet (Node.js / Express)
const express = require('express');
const app = express();
const FIVO_API = 'https://api.fivo.finance';
const FIVO_API_KEY = process.env.FIVO_API_KEY;
// 1. Customer clicks "Pay": create a session and redirect
app.post('/checkout', async (req, res) => {
const response = await fetch(FIVO_API + '/checkout/sessions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': FIVO_API_KEY,
},
body: JSON.stringify({
amount: req.body.amount,
currency: 'USDC',
// Fivo appends ?session_id=cs_live_... automatically
return_url: 'https://yoursite.com/success',
cancel_url: 'https://yoursite.com/cancel',
metadata: { order_id: req.body.orderId },
}),
});
const { data } = await response.json();
res.redirect(303, data.url);
});
// 2. Customer returns after payment: verify and fulfill
app.get('/success', async (req, res) => {
const response = await fetch(
FIVO_API + '/checkout/sessions/' + req.query.session_id,
{ headers: { 'X-API-Key': FIVO_API_KEY } }
);
const { data } = await response.json();
if (data.status === 'complete' && data.payment) {
// Fulfill the order
res.send('Payment confirmed! TX: ' + data.payment.tx_hash);
} else {
res.send('Payment pending. Status: ' + data.status);
}
});
app.listen(3000);Exemple cURL
curl -X POST https://api.fivo.finance/checkout/sessions \
-H "Content-Type: application/json" \
-H "X-API-Key: fivo_live_abc123..." \
-d '{
"amount": "49.99",
"currency": "USDC",
"return_url": "https://yoursite.com/success",
"metadata": { "order_id": "order_123" }
}'Référence complète
URL de base
https://api.fivo.financeAPI de production
Authentification
L'API Fivo utilise deux méthodes d'authentification :
Tokens JWT
Pour le tableau de bord et les sessions utilisateur. Obtenus après connexion. Expirent après 15 minutes.
Authorization: Bearer <token>API Keys
Pour les intégrations serveur à serveur. Créées dans le tableau de bord. N'expirent pas mais peuvent être révoquées.
X-API-Key: <api_key>Créer une API Key
- Connectez-vous à votre Tableau de bord Fivo
- Accédez à API Keys
- Cliquez sur Créer une nouvelle clé
- Donnez un nom descriptif à votre clé (ex. « Serveur de production »)
- Copiez la clé immédiatement. Elle ne sera plus affichée !
Gardez vos clés secrètes
Exemple : vérifier le statut d'un paiement
Après qu'un client a payé via le widget, vous pouvez vérifier le statut du paiement :
// Using fetch (Node.js/Browser): public endpoint, no auth required
const response = await fetch(
`https://api.fivo.finance/payments/abc123-payment-id/status`
);
const data = await response.json();
console.log(data);
// Response (minimal data for security):
{
"success": true,
"data": {
"id": "abc123-payment-id",
"status": "completed",
"is_cross_chain": false,
"cctp_attestation_status": null,
"updated_at": "2025-01-15T10:30:00Z"
}
}Exemple : lister vos paiements
Interrogez votre historique de paiements avec des filtres. Nécessite une authentification.
// Using fetch with JWT authentication (from dashboard login)
const response = await fetch(
`https://api.fivo.finance/payments?status=completed&limit=10`,
{
headers: {
'Authorization': 'Bearer YOUR_JWT_TOKEN'
}
}
);
const data = await response.json();
console.log(data);
// Response:
{
"success": true,
"data": {
"payments": [
{
"id": "payment-1",
"amount": "49.99",
"currency": "USDC",
"status": "completed",
"txHash": "0x123...",
"sourceChain": "MATIC",
"customerEmail": "customer@example.com",
"reference": "ORD-2024-001",
"createdAt": "2025-01-15T10:30:00Z"
},
// ... more payments
],
"total": 150,
"limit": 10,
"offset": 0
}
}Exemples cURL
Pour des tests rapides, vous pouvez utiliser cURL depuis la ligne de commande :
# Get payment status (public endpoint)
curl https://api.fivo.finance/payments/PAYMENT_ID/status
# List your payments (requires JWT from login)
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
"https://api.fivo.finance/payments?status=completed&limit=10"
# Get merchant wallet info (public endpoint)
# MERCHANT_ID format: fivo_live_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
curl https://api.fivo.finance/merchants/MERCHANT_ID/walletSDKs et bibliothèques
Les SDKs officiels arrivent bientôt. En attendant, vous pouvez utiliser les bibliothèques HTTP standard de n'importe quel langage pour interagir avec l'API.
SDK Node.js
Bientôt disponible
SDK Python
Bientôt disponible
SDK PHP
Bientôt disponible
Limites de débit
L'API dispose de limites de débit pour garantir un usage équitable et la stabilité du système :
Points d'accès API Key
200 requêtes par minute
Per: API Key
API générale
100 requêtes par minute
Per: IP
Création de paiement (widget)
20 requêtes par minute
Per: IP
Connexion
5 requêtes par 5 minutes
Per: IP + e-mail
Inscription
3 requêtes par 15 minutes
Per: IP
Réinitialisation du mot de passe
3 requêtes par 15 minutes
Per: IP + e-mail
Vérification 2FA
5 requêtes par 5 minutes
Per: IP
Retraits
10 requêtes par 10 minutes
Per: IP
Formulaire de contact
3 requêtes par 15 minutes
Per: IP
| Point d'accès | Limite | Fenêtre | Par |
|---|---|---|---|
| Points d'accès API Key | 200 requêtes | par minute | API Key |
| API générale | 100 requêtes | par minute | IP |
| Création de paiement (widget) | 20 requêtes | par minute | IP |
| Connexion | 5 requêtes | par 5 minutes | IP + e-mail |
| Inscription | 3 requêtes | par 15 minutes | IP |
| Réinitialisation du mot de passe | 3 requêtes | par 15 minutes | IP + e-mail |
| Vérification 2FA | 5 requêtes | par 5 minutes | IP |
| Retraits | 10 requêtes | par 10 minutes | IP |
| Formulaire de contact | 3 requêtes | par 15 minutes | IP |
Lorsque vous dépassez une limite de débit, vous recevrez une réponse avec un en-tête indiquant quand vous pouvez réessayer.429 Too Many RequestsRetry-After
Référence API complète
Consultez la liste complète des points d'accès, paramètres et formats de réponse.
Voir la référence API