Creer une commande (Create Order)
Soumettez une nouvelle commande avec la selection de produits, les details de paiement et les informations du client.
POST /orders
Corps de la requete
{
"products": [
{
"productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"productTypeId": 1,
"quantity": 1,
"vehiclePlate": "AB123CD",
"vehicleCountryIsocode": "AT",
"vehicleCategoryId": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
"startAt": "2026-04-01T00:00:00.000Z",
"endAt": "2026-04-10T23:59:59.000Z",
"driverFirstname": "John",
"driverLastname": "Doe"
}
],
"payment": {
"type": "CARD",
"paymentMethodId": "pm_1234567890abcdef",
"returnUrl": "https://yourapp.com/payment/callback"
},
"customer": {
"email": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"phone": "+43123456789"
},
"address": {
"countryIsocode": "AT",
"city": "Vienna",
"addressLine": "Mariahilfer Strasse 1",
"postalCode": "1060",
"taxNumber": "ATU12345678",
"companyName": "Doe GmbH"
},
"idempotencyKey": "unique-order-key-12345",
"externalReference": "YOUR-ORDER-REF-001",
"callbackUrl": "https://yourapp.com/webhooks/vignetim"
}
DTO Produits
| Champ | Type | Requis | Description |
|---|
productId | UUID | Oui | L'ID du produit dans le catalogue |
productTypeId | integer | Oui | Type de produit : 1 = VIGNETTE, 2 = ESIM, 3 = INSURANCE, 4 = FINE_PAYMENT |
quantity | integer | Oui | Nombre d'unites |
vehiclePlate | string | Conditionnel | Plaque d'immatriculation du vehicule (requis pour VIGNETTE) |
vehicleCountryIsocode | string | Conditionnel | Pays d'immatriculation du vehicule (requis pour VIGNETTE) |
vehicleCategoryId | UUID | Conditionnel | Categorie de vehicule (requis pour VIGNETTE) |
startAt | ISO 8601 | Conditionnel | Date de debut de validite (requis pour VIGNETTE) |
endAt | ISO 8601 | Conditionnel | Date de fin de validite (requis pour VIGNETTE) |
driverFirstname | string | Non | Prenom du conducteur |
driverLastname | string | Non | Nom du conducteur |
DTO Paiement
| Champ | Type | Requis | Description |
|---|
type | string | Oui | Un parmi : CARD, GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT, BANCONTACT |
paymentMethodId | string | Conditionnel | Jeton de methode de paiement Stripe (requis pour CARD) |
returnUrl | string | Conditionnel | URL HTTPS pour le rappel de redirection 3DS (requis pour CARD) |
Routage des paiements
- Les paiements par CARD sont achemines via NestPay et peuvent necessiter une verification 3D Secure.
- GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT et BANCONTACT sont achemines via Stripe.
DTO Client
| Champ | Type | Requis | Description |
|---|
email | string | Oui | Adresse e-mail du client |
firstName | string | Oui | Prenom du client |
lastName | string | Oui | Nom du client |
phone | string | Non | Numero de telephone du client (format E.164 recommande) |
DTO Adresse
| Champ | Type | Requis | Description |
|---|
countryIsocode | string | Oui | Code ISO du pays |
city | string | Oui | Nom de la ville |
addressLine | string | Oui | Adresse postale |
postalCode | string | Non | Code postal |
taxNumber | string | Non | Numero d'identification fiscale |
companyName | string | Non | Nom de l'entreprise (pour les clients professionnels) |
Champs supplementaires
| Champ | Type | Requis | Description |
|---|
idempotencyKey | string | Non | Cle unique pour eviter les commandes en doublon. La meme cle avec la meme charge utile retourne la commande originale (recommande). |
externalReference | string | Non | Votre reference de commande interne pour le suivi |
callbackUrl | string | Non | URL pour recevoir les mises a jour de statut de commande |
Reponse
201 Created
{
"id": "ord-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "PENDING",
"redirectUrl": "https://pay.vignetim.com/3ds/verify/abc123",
"clientSecret": "pi_1234567890_secret_abcdef",
"products": [
{
"productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"productTypeId": 1,
"quantity": 1,
"status": "PENDING"
}
],
"total": {
"amount": 11.5,
"currency": "EUR"
},
"externalReference": "YOUR-ORDER-REF-001",
"createdAt": "2026-03-20T14:30:00.000Z"
}
- redirectUrl -- Present lorsque la verification 3D Secure est requise (paiements CARD). Redirigez le client vers cette URL.
- clientSecret -- Present pour les paiements achemines via Stripe. Utilisez-le avec Stripe.js pour confirmer le paiement cote client.
409 Conflict (Idempotent)
Si la meme idempotencyKey est envoyee avec la meme charge utile, la commande originale est retournee avec un code de statut 409. Il est possible de reessayer en toute securite.
{
"statusCode": 409,
"message": "Order already exists for this idempotency key",
"error": "Conflict"
}