Clés et magasin dédié
Créer la clé plateforme d'un marchand et comprendre le magasin qui lui est réservé
La clé créée ici est la clé plateforme. C'est elle qui encaisse, transfère et gère l'escrow. La clé de votre entreprise Service Provider ne peut pas appeler ces endpoints.
Le marchand doit déjà être intégré ou rattaché.
Créer la clé API
POST /partner_api/service_providers/business_api_keysRequête :
{
"merchantBusinessId": "59ae202a-f583-4a15-970f-9e99bd1e0baa",
"name": "Clé API de production"
}Réponse (201) :
{
"id": "a3c81f3d-ee04-4ec5-8bd2-cd8af5dabcfc",
"name": "Clé API de production",
"businessId": "59ae202a-f583-4a15-970f-9e99bd1e0baa",
"key": "jeko_live_abc123def456ghi789jkl012mno345pqr678stu901vwx234yz"
}Le champ key n'est retourné qu'une seule fois. Stockez-le immédiatement : il est irrécupérable ensuite. Le champ id sert de X-API-KEY-ID pour l'authentification.
Vous ne pouvez créer des clés que pour les marchands auxquels vous êtes rattaché. Un merchantBusinessId qui ne l'est pas renvoie 403. Après un détachement, ces clés répondent 401.
async function createApiKey(merchantBusinessId, keyName) {
const response = await fetch('https://api.jeko.africa/partner_api/service_providers/business_api_keys', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-KEY': process.env.SERVICE_PROVIDER_API_KEY,
'X-API-KEY-ID': process.env.SERVICE_PROVIDER_API_KEY_ID,
},
body: JSON.stringify({ merchantBusinessId, name: keyName }),
});
if (!response.ok) {
const error = await response.json();
throw new Error(`Échec de la création de la clé API : ${JSON.stringify(error)}`);
}
const result = await response.json();
await saveApiKeySecurely(merchantBusinessId, result.key, result.id);
return result;
}Votre magasin dédié chez le marchand
Au rattachement, Jèko crée chez le marchand un magasin dédié à votre entreprise, portant votre nom. Les clés API que vous créez pour ce marchand sont limitées à ce magasin : elles ne voient ni le magasin propre du marchand, ni les magasins des autres Service Providers présents chez lui.
Concrètement, avec une clé plateforme :
| Endpoint | Comportement |
|---|---|
| Retourne uniquement votre magasin dédié | |
403 si storeId n'est pas votre magasin | |
, /payment_links, /transfers | storeId omis → votre magasin. storeId d'un autre magasin → 403 |
, /payment_links/{id}, /transfers/{id} | 404 si la ressource appartient à un autre magasin |
Filtré sur votre magasin. Un storeId étranger retourne une page vide, pas une erreur | |
| Uniquement les terminaux de votre magasin | |
business_webhook_subscriptions | Rattachés à votre magasin. Voir Webhooks marchand |
Vous n'avez rien à changer si vous n'envoyez pas de storeId : vos requêtes sont automatiquement dirigées vers votre magasin dédié. Le plus simple est d'omettre storeId dans vos appels.
Si votre intégration envoie un storeId récupéré autrement que via , elle recevra 403 (forbidden_action). Récupérez l'identifiant de votre magasin avec , ou retirez le champ storeId.
Cette séparation vous donne un solde, un historique de transactions et des terminaux propres à votre activité chez ce marchand. La réconciliation se fait magasin par magasin.
Les clés API créées par le marchand lui-même ne sont pas concernées : elles gardent accès à tous ses magasins, y compris le vôtre.
Ensuite : assigner un catalogue, configurer le webhook, puis encaisser.