Vignetim

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

ChampTypeRequisDescription
productIdUUIDOuiL'ID du produit dans le catalogue
productTypeIdintegerOuiType de produit : 1 = VIGNETTE, 2 = ESIM, 3 = INSURANCE, 4 = FINE_PAYMENT
quantityintegerOuiNombre d'unites
vehiclePlatestringConditionnelPlaque d'immatriculation du vehicule (requis pour VIGNETTE)
vehicleCountryIsocodestringConditionnelPays d'immatriculation du vehicule (requis pour VIGNETTE)
vehicleCategoryIdUUIDConditionnelCategorie de vehicule (requis pour VIGNETTE)
startAtISO 8601ConditionnelDate de debut de validite (requis pour VIGNETTE)
endAtISO 8601ConditionnelDate de fin de validite (requis pour VIGNETTE)
driverFirstnamestringNonPrenom du conducteur
driverLastnamestringNonNom du conducteur

DTO Paiement

ChampTypeRequisDescription
typestringOuiUn parmi : CARD, GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT, BANCONTACT
paymentMethodIdstringConditionnelJeton de methode de paiement Stripe (requis pour CARD)
returnUrlstringConditionnelURL 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

ChampTypeRequisDescription
emailstringOuiAdresse e-mail du client
firstNamestringOuiPrenom du client
lastNamestringOuiNom du client
phonestringNonNumero de telephone du client (format E.164 recommande)

DTO Adresse

ChampTypeRequisDescription
countryIsocodestringOuiCode ISO du pays
citystringOuiNom de la ville
addressLinestringOuiAdresse postale
postalCodestringNonCode postal
taxNumberstringNonNumero d'identification fiscale
companyNamestringNonNom de l'entreprise (pour les clients professionnels)

Champs supplementaires

ChampTypeRequisDescription
idempotencyKeystringNonCle unique pour eviter les commandes en doublon. La meme cle avec la meme charge utile retourne la commande originale (recommande).
externalReferencestringNonVotre reference de commande interne pour le suivi
callbackUrlstringNonURL 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"
}