Jèko
Service Providers

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_keys

Requê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 :

EndpointComportement
Retourne uniquement votre magasin dédié
403 si storeId n'est pas votre magasin
, /payment_links, /transfersstoreId 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_subscriptionsRattaché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.

On this page