Bienvenue dans la documentation de l'API Genipay. Cette API vous permet d'intégrer facilement les paiements dans votre application ou site web. Vous pouvez gérer les transactions, les clients et recevoir des notifications en temps réel via des webhooks.
L'API Genipay est actuellement en version v1. Toutes les requêtes
doivent être adressées à https://api.genipay.com/v1/
https://api.genipay.com/v1/
L'API Genipay utilise des clés API pour authentifier les requêtes. Vous pouvez consulter et gérer vos clés API dans votre tableau de bord Genipay.
Toutes les requêtes API doivent être effectuées via HTTPS et inclure votre clé API dans l'en-tête
Authorization.
curl -X GET "https://api.genipay.com/v1/transactions" \
-H "Authorization: Bearer votre_clé_api"
Attention : Gardez votre clé API secrète ! Ne la partagez jamais dans des dépôts publics ou avec des tiers non autorisés.
L'API Genipay utilise des codes d'état HTTP conventionnels pour indiquer le succès ou l'échec d'une requête API. En général, les codes 2xx indiquent un succès, les codes 4xx indiquent une erreur due à l'information fournie (par exemple, un paramètre requis manquant), et les codes 5xx indiquent une erreur avec les serveurs Genipay.
| Code | Description |
|---|---|
| 400 | Requête incorrecte - Les paramètres fournis sont invalides |
| 401 | Non autorisé - Clé API invalide |
| 403 | Interdit - Vous n'avez pas les droits pour accéder à cette ressource |
| 404 | Non trouvé - La ressource demandée n'existe pas |
| 429 | Trop de requêtes - Vous avez dépassé la limite de taux |
| 500 | Erreur serveur - Quelque chose s'est mal passé de notre côté |
{
"error": {
"code": "invalid_request",
"message": "Le paramètre 'amount' est requis",
"status": 400,
"details": {
"field": "amount",
"reason": "required"
}
}
}
Récupère la liste des transactions. Les résultats sont paginés et triés par date de création, avec les plus récentes en premier.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| limit | integer | Non | Nombre de transactions à retourner (défaut: 10, max: 100) |
| offset | integer | Non | Nombre de transactions à sauter (défaut: 0) |
| customer_id | string | Non | Filtrer par ID client |
| status | string | Non | Filtrer par statut (completed, pending, failed) |
curl -X GET "https://api.genipay.com/v1/transactions?limit=5&status=completed" \
-H "Authorization: Bearer votre_clé_api"
{
"data": [
{
"id": "tx_123456789",
"amount": 24500,
"currency": "EUR",
"status": "completed",
"customer_id": "cus_987654321",
"description": "Abonnement Premium",
"created_at": "2023-04-15T10:30:00Z"
},
{
"id": "tx_123456788",
"amount": 8950,
"currency": "EUR",
"status": "completed",
"customer_id": "cus_987654322",
"description": "Achat produit",
"created_at": "2023-04-14T15:45:00Z"
}
],
"has_more": true,
"total_count": 42
}
Récupère les détails d'une transaction spécifique.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| id | string | Oui | ID unique de la transaction |
curl -X GET "https://api.genipay.com/v1/transactions/tx_123456789" \
-H "Authorization: Bearer votre_clé_api"
{
"id": "tx_123456789",
"amount": 24500,
"currency": "EUR",
"status": "completed",
"customer_id": "cus_987654321",
"customer_email": "jean.dupont@example.com",
"description": "Abonnement Premium",
"payment_method": {
"type": "card",
"last4": "4242",
"brand": "visa",
"exp_month": 12,
"exp_year": 2025
},
"metadata": {
"order_id": "ORD-12345"
},
"created_at": "2023-04-15T10:30:00Z",
"updated_at": "2023-04-15T10:31:05Z"
}
Crée une nouvelle transaction.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| amount | integer | Oui | Montant en centimes (ex: 2000 pour 20,00 €) |
| currency | string | Oui | Code devise à 3 lettres (ISO 4217) |
| customer_id | string | Non | ID du client existant |
| description | string | Non | Description de la transaction |
| metadata | object | Non | Métadonnées personnalisées (max 20 paires clé-valeur) |
curl -X POST "https://api.genipay.com/v1/transactions" \
-H "Authorization: Bearer votre_clé_api" \
-H "Content-Type: application/json" \
-d '{
"amount": 2000,
"currency": "EUR",
"customer_id": "cus_987654321",
"description": "Achat produit XYZ",
"metadata": {
"order_id": "ORD-12345"
}
}'
{
"id": "tx_123456790",
"amount": 2000,
"currency": "EUR",
"status": "pending",
"customer_id": "cus_987654321",
"description": "Achat produit XYZ",
"payment_url": "https://checkout.genipay.com/pay/tx_123456790",
"metadata": {
"order_id": "ORD-12345"
},
"created_at": "2023-04-16T14:22:00Z"
}
Met à jour une transaction existante. Seuls certains champs peuvent être modifiés.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| id | string | Oui | ID unique de la transaction |
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| description | string | Non | Description de la transaction |
| metadata | object | Non | Métadonnées personnalisées (max 20 paires clé-valeur) |
curl -X PUT "https://api.genipay.com/v1/transactions/tx_123456790" \
-H "Authorization: Bearer votre_clé_api" \
-H "Content-Type: application/json" \
-d '{
"description": "Achat produit XYZ - Version Premium",
"metadata": {
"order_id": "ORD-12345",
"product_id": "PROD-789"
}
}'
{
"id": "tx_123456790",
"amount": 2000,
"currency": "EUR",
"status": "pending",
"customer_id": "cus_987654321",
"description": "Achat produit XYZ - Version Premium",
"payment_url": "https://checkout.genipay.com/pay/tx_123456790",
"metadata": {
"order_id": "ORD-12345",
"product_id": "PROD-789"
},
"created_at": "2023-04-16T14:22:00Z",
"updated_at": "2023-04-16T14:25:30Z"
}
Annule une transaction en attente. Les transactions déjà complétées ne peuvent pas être annulées.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| id | string | Oui | ID unique de la transaction |
curl -X DELETE "https://api.genipay.com/v1/transactions/tx_123456790" \
-H "Authorization: Bearer votre_clé_api"
{
"id": "tx_123456790",
"status": "canceled",
"canceled_at": "2023-04-16T15:10:00Z"
}
Récupère la liste des clients. Les résultats sont paginés et triés par date de création, avec les plus récents en premier.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| limit | integer | Non | Nombre de clients à retourner (défaut: 10, max: 100) |
| offset | integer | Non | Nombre de clients à sauter (défaut: 0) |
| string | Non | Filtrer par email |
curl -X GET "https://api.genipay.com/v1/customers?limit=5" \
-H "Authorization: Bearer votre_clé_api"
{
"data": [
{
"id": "cus_987654321",
"email": "jean.dupont@example.com",
"name": "Jean Dupont",
"created_at": "2023-03-15T10:30:00Z"
},
{
"id": "cus_987654322",
"email": "marie.martin@example.com",
"name": "Marie Martin",
"created_at": "2023-03-14T15:45:00Z"
}
],
"has_more": true,
"total_count": 28
}
Récupère les détails d'un client spécifique.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| id | string | Oui | ID unique du client |
curl -X GET "https://api.genipay.com/v1/customers/cus_987654321" \
-H "Authorization: Bearer votre_clé_api"
{
"id": "cus_987654321",
"email": "jean.dupont@example.com",
"name": "Jean Dupont",
"phone": "+33612345678",
"address": {
"line1": "123 Rue de Paris",
"city": "Paris",
"postal_code": "75001",
"country": "FR"
},
"metadata": {
"user_id": "USER-12345"
},
"created_at": "2023-03-15T10:30:00Z",
"updated_at": "2023-03-15T10:30:00Z"
}
Crée un nouveau client.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| string | Oui | Adresse email du client | |
| name | string | Non | Nom complet du client |
| phone | string | Non | Numéro de téléphone du client |
| address | object | Non | Adresse du client |
| metadata | object | Non | Métadonnées personnalisées |
curl -X POST "https://api.genipay.com/v1/customers" \
-H "Authorization: Bearer votre_clé_api" \
-H "Content-Type: application/json" \
-d '{
"email": "nouveau.client@example.com",
"name": "Nouveau Client",
"phone": "+33612345678",
"address": {
"line1": "123 Rue de Paris",
"city": "Paris",
"postal_code": "75001",
"country": "FR"
},
"metadata": {
"user_id": "USER-67890"
}
}'
{
"id": "cus_987654323",
"email": "nouveau.client@example.com",
"name": "Nouveau Client",
"phone": "+33612345678",
"address": {
"line1": "123 Rue de Paris",
"city": "Paris",
"postal_code": "75001",
"country": "FR"
},
"metadata": {
"user_id": "USER-67890"
},
"created_at": "2023-04-16T16:45:00Z",
"updated_at": "2023-04-16T16:45:00Z"
}
Les webhooks vous permettent de recevoir des notifications en temps réel lorsque des événements se produisent dans votre compte Genipay. Vous pouvez configurer des URL de webhook dans votre tableau de bord Genipay.
Pour configurer un webhook, vous devez fournir une URL HTTPS qui sera appelée lorsqu'un événement se produit. Genipay enverra une requête POST à cette URL avec les détails de l'événement.
Pour sécuriser vos webhooks, Genipay inclut une signature dans l'en-tête X-Genipay-Signature de chaque
requête.
Vous devez vérifier cette signature pour vous assurer que la requête provient bien de
Genipay.
{
"id": "evt_123456789",
"type": "transaction.completed",
"created": 1681654800,
"data": {
"object": {
"id": "tx_123456789",
"amount": 24500,
"currency": "EUR",
"status": "completed",
"customer_id": "cus_987654321",
"description": "Abonnement Premium",
"created_at": "2023-04-16T14:00:00Z"
}
}
}
Voici la liste des événements que vous pouvez recevoir via webhooks.
| Événement | Description |
|---|---|
| transaction.created | Une nouvelle transaction a été créée |
| transaction.pending | Une transaction est en attente de paiement |
| transaction.completed | Une transaction a été complétée avec succès |
| transaction.failed | Une transaction a échoué |
| transaction.canceled | Une transaction a été annulée |
| customer.created | Un nouveau client a été créé |
| customer.updated | Les informations d'un client ont été mises à jour |