Méthode OAuth — créer un paiement
Méthode OAuth · étape 2 sur 2. Vous devez d'abord avoir obtenu un jeton — voir Authentification.
POST /partners/payments
Crée un paiement et renvoie la page de paiement hébergée (paymentUrl). Requiert le scope payments:create.
| En-tête | Requis | Valeur |
|---|---|---|
Authorization | Oui | Bearer <access_token> |
Content-Type | Oui | application/json |
Corps de la requête
| Champ | Type | Requis | Règles |
|---|---|---|---|
amount | Double | Oui | Non nul, positif |
currency | String | Oui | Longueur 3, doit valoir EUR (forcé à EUR par le service) |
externalReference | String | Oui | Non vide, max 150 |
description | String | Oui | Max 140, caractères de libellé SEPA autorisés |
callbackUri | String | Oui | URL absolue HTTPS, max 1000 ; ni localhost ni IP privée |
webhookUri | String | Oui | URL absolue HTTPS, max 1000 ; ni localhost ni IP privée |
payee.iban | String | Oui | IBAN valide (normalisé, MOD97), max 34 |
payee.fullName | String | Oui | Non vide, max 150 |
customer.name | String | Non | Max 150 |
customer.email | String | Non | E-mail valide, max 150 |
customer.phone | String | Non | Max 30 |
metadata | Map<String,Object> | Non | Sérialisé en JSON ; metadata.stateId peut alimenter stateId |
stateId | String | Non | Max 150 ; prioritaire sur metadata.stateId |
paymentType | String | Non | Max 30 |
Exemple de requête
POST /partners/payments
Authorization: Bearer <access_token>
Content-Type: application/json
{
"amount": 150.00,
"currency": "EUR",
"externalReference": "ORDER-123",
"description": "Paiement de la commande ORDER-123",
"callbackUri": "https://partner.example.com/callback",
"webhookUri": "https://partner.example.com/api/payment/webhook",
"customer": {
"name": "Nom Client",
"email": "[email protected]",
"phone": "+212600000000"
},
"payee": {
"iban": "FR7630003011300040000000000",
"fullName": "Atelier Marquet SAS"
},
"metadata": {
"stateId": "STATE-001"
},
"paymentType": "INST"
}
Réponse
201 Created :
{
"paymentRequestId": "6f1a2b3c4d5e67890123456789abcdef",
"externalReference": "ORDER-123",
"status": "CREATED",
"paymentUrl": "https://gateway.lodinpay.com/pay?id=ORDER-ID-123&type=PARTNER&canal=WEB",
"expiresAt": "2026-06-10T12:30:00Z"
}
| Champ | Description |
|---|---|
paymentRequestId | Identifiant du paiement (32 caractères hexadécimaux). |
externalReference | Votre référence, telle que transmise. |
status | CREATED à la création. Voir le cycle de vie. |
paymentUrl | Page de paiement hébergée à présenter au client. |
expiresAt | Expiration du lien (par défaut 30 minutes après la création). |
Après la création
Présentez la paymentUrl au client. Une fois le parcours bancaire terminé, son navigateur est redirigé vers votre callbackUri avec paymentRequestId (et stateId s'il a été fourni). Le statut réel se lit côté serveur — voir Statut & redirection.
Le navigateur ne fait pas autorité
Ne considérez jamais le retour navigateur comme la confirmation d'un paiement. Lisez le statut via l'API.
Validation
Les principales causes de rejet (400) : devise différente de EUR, IBAN invalide, callbackUri/webhookUri non HTTPS ou absolue, description trop longue ou caractères non SEPA. Voir Erreurs.