Developer Portal Authentification

Authentification

Toutes les requêtes vers l'API EnvoiFacile sont authentifiées via une clé API transmise dans les headers HTTP.

Clé API

Votre clé API est générée depuis le dashboard administrateur ou via la commande artisan. Elle prend la forme :

text Format de la clé
ef_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ef_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PréfixeEnvironnementUsage
ef_live_ProductionTransactions réelles
ef_test_SandboxTests sans fonds réels

Headers requis

Chaque requête doit inclure le header X-API-KEY :

bash Exemple de requête authentifiée
curl -X POST https://envoifacile.com/api/v1/merchant/payin \
  -H "X-API-KEY: ef_live_xxxxxxxxxxxxxxxxxx" \
  -H "Idempotency-Key: unique-request-id-001" \
  -H "Content-Type: application/json" \
  -d '{ ... }'
HeaderRequisDescription
X-API-KEY Requis Votre clé API secrète
Idempotency-Key Requis Identifiant unique de la requête (max 64 chars). Voir Idempotency.
Content-Type Requis Doit être application/json

Scopes (permissions)

Chaque clé API peut avoir des scopes limités pour restreindre les opérations autorisées :

ScopePermissions
payinInitier des collectes de fonds
payoutInitier des envois de fonds
statusConsulter le statut des transactions
payin,payoutAccès complet payin + payout

Principe du moindre privilège

Créez des clés distinctes par application et accordez uniquement les scopes nécessaires. Une clé front-end ne devrait avoir que le scope payin.

Rotation de clé

En cas de compromission, générez immédiatement une nouvelle clé et désactivez l'ancienne via le dashboard ou la commande :

bash Génération d'une nouvelle clé
php artisan merchant:generate-key \
  --user=1 \
  --name="Nouvelle clé Prod" \
  --env=live \
  --scopes=payin,payout

Erreurs d'authentification

HTTPCodeCause
401UNAUTHORIZEDHeader X-API-KEY manquant ou clé invalide
403FORBIDDEN_SCOPELa clé n'a pas le scope requis pour cette action
403IP_NOT_ALLOWEDL'IP source n'est pas dans la liste blanche
403KEY_EXPIREDLa clé API a expiré
json Réponse 401
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing API key."
  }
}