Authentification
PayRouter utilise l'authentification par jeton. Chaque requête authentifiée envoie un
jeton dans l'en-tête Authorization avec le schéma Bearer :
Authorization: Bearer <your-token>
Seuls l'inscription, la vérification d'e-mail, la réinitialisation de mot de passe et les webhooks des fournisseurs sont non authentifiés. Tout le reste requiert un jeton valide.
Prerequisites
Pour suivre cette page, vous avez besoin d'une adresse e-mail que vous contrôlez. Pour générer un jeton API (étape 3), vous devez déjà disposer d'un profil marchand complété.
1. S'inscrire & vérifier votre e-mail
Créez un compte, puis confirmez l'OTP à 6 chiffres qui vous est envoyé par e-mail.
# Step 1 — sign up
curl -X POST https://payrouter.io/api/auth/signup/ \
-H "Content-Type: application/json" \
-d '{
"email": "you@example.com",
"password": "S0me-Str0ng-Pass",
"password2": "S0me-Str0ng-Pass",
"first_name": "Jane",
"last_name": "Doe"
}'
# Step 2 — confirm the OTP sent to your inbox
curl -X POST https://payrouter.io/api/auth/verify-email/ \
-H "Content-Type: application/json" \
-d '{ "email": "you@example.com", "otp": "123456" }'
Champs de la requête d'inscription
| Champ | Type | Requis | Description |
|---|---|---|---|
email | string | ✔ | Identité de connexion ; doit être unique. |
password | string | ✔ | Doit respecter la politique de mot de passe de la plateforme. |
password2 | string | ✔ | Doit correspondre à password. |
first_name | string | — | Nom d'affichage optionnel. |
last_name | string | — | Nom d'affichage optionnel. |
phone | string | — | Numéro de téléphone E.164 optionnel. |
L'inscription renvoie un temp_key et envoie l'OTP par e-mail. Verify-email le confirme et
renvoie votre premier jeton ainsi que votre profil utilisateur. Si l'OTP a expiré, demandez-en un
nouveau avec POST /api/auth/resend-otp/ ({ "email": "…" }).
Complétez ensuite votre profil marchand
Un nouveau compte ne peut pas effectuer de transactions tant que vous n'avez pas soumis votre profil
d'entreprise (nom, e-mail, téléphone, pays). Vous serez guidé vers /complete-profile
juste après la vérification. Cela provisionne aussi automatiquement vos comptes de service et vos
portefeuilles. Voir Démarrer.
2. Se connecter (jeton de session)
Échangez e-mail + mot de passe contre un jeton :
curl -X POST https://payrouter.io/api/auth/token/ \
-H "Content-Type: application/json" \
-d '{ "email": "you@example.com", "password": "S0me-Str0ng-Pass" }'
{
"access": "9a8b7c6d5e…",
"token": "9a8b7c6d5e…",
"user": {
"id": "0b1f…",
"email": "you@example.com",
"type": "merchant",
"account_type": "sandbox",
"profile_completed": true,
"has_wallet": true,
"is_staff": false
}
}
access et token sont la même valeur — utilisez l'un ou l'autre comme jeton Bearer.
Récupérez l'utilisateur courant à tout moment avec GET /api/auth/me/, et mettez à jour votre propre
profil (phone, first_name, last_name) avec PATCH /api/auth/me/.
Sandbox vs production
Les nouveaux comptes démarrent en account_type: "sandbox". Un administrateur vous promeut en
"prod" une fois votre intégration validée. Conditionnez les flux réservés à la production sur
account_type === "prod". Voir Passage en production.
3. Clés API (jetons à longue durée de vie) {#api-keys}
Pour les intégrations serveur à serveur, générez un jeton API dédié qui ne dépend pas d'une connexion interactive. Dans le tableau de bord : Profil → Clés API → Générer un nouveau jeton (vous devez ressaisir votre mot de passe pour confirmer). Via l'API :
curl -X POST https://payrouter.io/api/auth/login-tokens/ \
-H "Authorization: Bearer $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "password": "S0me-Str0ng-Pass" }'
{
"token": "f8849564a1b2c3…",
"token_key": "f8849564",
"expiry": "2026-09-25T19:00:25Z"
}
| Champ | Description |
|---|---|
token | Le secret complet. Affiché une seule fois — stockez-le dès maintenant dans votre gestionnaire de secrets. |
token_key | Un préfixe non secret utilisé pour identifier/révoquer le jeton. |
expiry | Horodatage d'expiration. Les jetons API sont valides 90 jours. |
- Lister vos jetons :
GET /api/auth/login-tokens/ - Révoquer l'un d'eux :
DELETE /api/auth/login-tokens/<token_key>/
Traitez les jetons comme des mots de passe
Ne validez jamais de jetons dans le contrôle de version, ne les intégrez pas dans des clients mobiles/web, et ne les journalisez pas. Utilisez des variables d'environnement ou un gestionnaire de secrets, et révoquez immédiatement si un jeton est exposé. Voir Bonnes pratiques de sécurité.
Se déconnecter
Révoquez le jeton de la requête courante :
POST /api/auth/logout/
Authorization: Bearer <token>