Utiliser l'en-tête X-App-Id
Pour utiliser une application, ajoutez son identifiant dans l'en-tête HTTP X-App-Id de chaque appel à l'API publique, en plus de votre jeton d'accès.
En-têtes HTTP
Accept: application/json
Content-Type: application/json
Authorization: Bearer {VOTRE_JETON}
X-App-Id: {IDENTIFIANT_DE_VOTRE_APPLICATION}
Exemple : création d'un checkout
curl --request POST \
"https://efn.efaina.com/api/public/v1/pay/create-checkout" \
--header "Authorization: Bearer VOTRE_TOKEN" \
--header "X-App-Id: 9f8c1e42-7b3a-4d51-9a20-6c0d5e7f1234" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"amount\": \"125000\",
\"comment\": \"Commande #1234\",
\"company\": \"MyCompany SARL\",
\"wallet_id\": \"VOTRE_WALLET_ID\",
\"return_urls\": { \"return_to_merchant_url\": \"https://mon-site.mg/merci\" }
}"
L'en-tête s'utilise de la même façon sur tous les endpoints publics : wallets, checkout, transactions, remboursements et retraits.
Ce que l'en-tête change
Quand l'en-tête est présent et valide :
- la liste blanche d'IP de l'application s'applique, en plus des contrôles du compte ;
- l'enregistrement créé (checkout, transaction, retrait, remboursement) est rattaché à l'application ;
- les évènements qui en découlent partent vers le webhook de cette application, y compris ceux émis plus tard — par exemple lorsque l'opérateur mobile confirme le paiement, longtemps après votre appel.
C'est ce troisième point qui compte le plus en pratique : le rattachement est enregistré, donc une notification tardive sait toujours vers quelle intégration revenir.
Sans l'en-tête
L'en-tête est facultatif. S'il est absent, l'appel se comporte exactement comme avant : liste blanche d'IP du compte, webhook du compte, aucun rattachement à une application. Vos intégrations existantes continuent donc de fonctionner sans modification.
Erreurs possibles
| Code | Message | Cause |
|---|---|---|
404 | Application introuvable. | L'identifiant n'existe pas, ou l'application n'appartient pas au compte associé à votre jeton. |
403 | Cette application est désactivée. | L'application existe mais a été désactivée depuis le tableau de bord. |
403 | Votre adresse IP (…) n'est pas autorisée à accéder à ce service. | L'application déclare une liste blanche d'IP et votre appel ne provient pas de l'une d'elles. |
Le corps de la réponse suit le format d'erreur habituel :
{
"message": "Application introuvable."
}
Un identifiant valide mais appartenant à un autre compte renvoie 404, et non 403 : nous ne confirmons jamais l'existence de l'application d'un tiers.