Създаване на поръчка
Подайте нова поръчка с избор на продукт, данни за плащане и информация за клиента.
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
| Field | Type | Required | Описание |
|---|
productId | UUID | Yes | ID на продукта от каталога |
productTypeId | integer | Yes | Тип на продукта: 1 = VIGNETTE, 2 = ESIM, 3 = INSURANCE, 4 = FINE_PAYMENT |
quantity | integer | Yes | Брой единици |
vehiclePlate | string | Conditional | Регистрационен номер на превозното средство (задължителен за VIGNETTE) |
vehicleCountryIsocode | string | Conditional | Държава на регистрация на превозното средство (задължителна за VIGNETTE) |
vehicleCategoryId | UUID | Conditional | Категория на превозното средство (задължителна за VIGNETTE) |
startAt | ISO 8601 | Conditional | Начална дата на валидност (задължителна за VIGNETTE) |
endAt | ISO 8601 | Conditional | Крайна дата на валидност (задължителна за VIGNETTE) |
driverFirstname | string | No | Собствено име на водача |
driverLastname | string | No | Фамилно име на водача |
Payment DTO
| Field | Type | Required | Описание |
|---|
type | string | Yes | Един от: CARD, GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT, BANCONTACT |
paymentMethodId | string | Conditional | Stripe токен за метод на плащане (задължителен за CARD) |
returnUrl | string | Conditional | HTTPS URL адрес за обратно пренасочване от 3DS (задължителен за CARD) |
Маршрутизиране на плащания
- CARD плащанията се маршрутизират чрез NestPay и може да изискват 3D Secure верификация.
- GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT и BANCONTACT се маршрутизират чрез Stripe.
Customer DTO
| Field | Type | Required | Описание |
|---|
email | string | Yes | Имейл адрес на клиента |
firstName | string | Yes | Собствено име на клиента |
lastName | string | Yes | Фамилно име на клиента |
phone | string | No | Телефонен номер на клиента (препоръчва се формат E.164) |
Address DTO
| Field | Type | Required | Описание |
|---|
countryIsocode | string | Yes | ISO код на държавата |
city | string | Yes | Име на града |
addressLine | string | Yes | Улица и адрес |
postalCode | string | No | Пощенски код |
taxNumber | string | No | Данъчен идентификационен номер |
companyName | string | No | Име на компанията (за бизнес клиенти) |
Допълнителни полета
| Field | Type | Required | Описание |
|---|
idempotencyKey | string | No | Уникален ключ за предотвратяване на дублирани поръчки. Същият ключ със същото съдържание връща оригиналната поръчка (препоръчително). |
externalReference | string | No | Вашата вътрешна референция на поръчката за проследяване |
callbackUrl | string | No | URL адрес за получаване на актуализации на статуса на поръчката |
Отговор
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"
}