Vignetim

Създаване на поръчка

Подайте нова поръчка с избор на продукт, данни за плащане и информация за клиента.

POST /orders

Тяло на заявката

{
	"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"
}

Products DTO

FieldTypeRequiredОписание
productIdUUIDYesID на продукта от каталога
productTypeIdintegerYesТип на продукта: 1 = VIGNETTE, 2 = ESIM, 3 = INSURANCE, 4 = FINE_PAYMENT
quantityintegerYesБрой единици
vehiclePlatestringConditionalРегистрационен номер на превозното средство (задължителен за VIGNETTE)
vehicleCountryIsocodestringConditionalДържава на регистрация на превозното средство (задължителна за VIGNETTE)
vehicleCategoryIdUUIDConditionalКатегория на превозното средство (задължителна за VIGNETTE)
startAtISO 8601ConditionalНачална дата на валидност (задължителна за VIGNETTE)
endAtISO 8601ConditionalКрайна дата на валидност (задължителна за VIGNETTE)
driverFirstnamestringNoСобствено име на водача
driverLastnamestringNoФамилно име на водача

Payment DTO

FieldTypeRequiredОписание
typestringYesЕдин от: CARD, GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT, BANCONTACT
paymentMethodIdstringConditionalStripe токен за метод на плащане (задължителен за CARD)
returnUrlstringConditionalHTTPS URL адрес за обратно пренасочване от 3DS (задължителен за CARD)

Маршрутизиране на плащания

  • CARD плащанията се маршрутизират чрез NestPay и може да изискват 3D Secure верификация.
  • GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT и BANCONTACT се маршрутизират чрез Stripe.

Customer DTO

FieldTypeRequiredОписание
emailstringYesИмейл адрес на клиента
firstNamestringYesСобствено име на клиента
lastNamestringYesФамилно име на клиента
phonestringNoТелефонен номер на клиента (препоръчва се формат E.164)

Address DTO

FieldTypeRequiredОписание
countryIsocodestringYesISO код на държавата
citystringYesИме на града
addressLinestringYesУлица и адрес
postalCodestringNoПощенски код
taxNumberstringNoДанъчен идентификационен номер
companyNamestringNoИме на компанията (за бизнес клиенти)

Допълнителни полета

FieldTypeRequiredОписание
idempotencyKeystringNoУникален ключ за предотвратяване на дублирани поръчки. Същият ключ със същото съдържание връща оригиналната поръчка (препоръчително).
externalReferencestringNoВашата вътрешна референция на поръчката за проследяване
callbackUrlstringNoURL адрес за получаване на актуализации на статуса на поръчката

Отговор

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 -- Присъства, когато е необходима 3D Secure верификация (CARD плащания). Пренасочете клиента към този URL адрес.
  • clientSecret -- Присъства за плащания, маршрутизирани чрез Stripe. Използвайте го със Stripe.js, за да потвърдите плащането от страна на клиента.

409 Conflict (Идемпотентен)

Ако същият idempotencyKey е изпратен със същото съдържание, оригиналната поръчка се връща със статус код 409. Безопасно е да опитате отново.

{
	"statusCode": 409,
	"message": "Order already exists for this idempotency key",
	"error": "Conflict"
}