Vytvoření objednávky (Create Order)
Odešlete novou objednávku s výběrem produktu, platebními údaji a informacemi o zákazníkovi.
POST /orders
Tělo požadavku
{
"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
| Pole | Typ | Povinné | Popis |
|---|
productId | UUID | Ano | ID produktu z katalogu |
productTypeId | integer | Ano | Typ produktu: 1 = VIGNETTE, 2 = ESIM, 3 = INSURANCE, 4 = FINE_PAYMENT |
quantity | integer | Ano | Počet kusů |
vehiclePlate | string | Podmíněně | Registrační značka vozidla (povinné pro VIGNETTE) |
vehicleCountryIsocode | string | Podmíněně | Země registrace vozidla (povinné pro VIGNETTE) |
vehicleCategoryId | UUID | Podmíněně | Kategorie vozidla (povinné pro VIGNETTE) |
startAt | ISO 8601 | Podmíněně | Datum začátku platnosti (povinné pro VIGNETTE) |
endAt | ISO 8601 | Podmíněně | Datum konce platnosti (povinné pro VIGNETTE) |
driverFirstname | string | Ne | Jméno řidiče |
driverLastname | string | Ne | Příjmení řidiče |
Payment DTO
| Pole | Typ | Povinné | Popis |
|---|
type | string | Ano | Jedna z hodnot: CARD, GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT, BANCONTACT |
paymentMethodId | string | Podmíněně | Token platební metody Stripe (povinné pro CARD) |
returnUrl | string | Podmíněně | HTTPS URL pro zpětné volání přesměrování 3DS (povinné pro CARD) |
Směrování plateb (Payment Routing)
- Platby CARD jsou směrovány přes NestPay a mohou vyžadovat ověření 3D Secure.
- GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT a BANCONTACT jsou směrovány přes Stripe.
Customer DTO
| Pole | Typ | Povinné | Popis |
|---|
email | string | Ano | E-mailová adresa zákazníka |
firstName | string | Ano | Jméno zákazníka |
lastName | string | Ano | Příjmení zákazníka |
phone | string | Ne | Telefonní číslo zákazníka (doporučen formát E.164) |
Address DTO
| Pole | Typ | Povinné | Popis |
|---|
countryIsocode | string | Ano | ISO kód země |
city | string | Ano | Název města |
addressLine | string | Ano | Ulice a číslo |
postalCode | string | Ne | PSČ |
taxNumber | string | Ne | DIČ |
companyName | string | Ne | Název společnosti (pro firemní zákazníky) |
Další pole
| Pole | Typ | Povinné | Popis |
|---|
idempotencyKey | string | Ne | Jedinečný klíč pro zabránění duplicitním objednávkám. Stejný klíč se stejným payloadem vrátí původní objednávku (doporučeno). |
externalReference | string | Ne | Vaše interní reference objednávky pro sledování |
callbackUrl | string | Ne | URL pro příjem aktualizací stavu objednávky |
Odpověď
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 -- Přítomno, když je vyžadováno ověření 3D Secure (platby CARD). Přesměrujte zákazníka na tuto URL.
- clientSecret -- Přítomno pro platby směrované přes Stripe. Použijte ho se Stripe.js pro potvrzení platby na straně klienta.
409 Conflict (Idempotentní)
Pokud je stejný idempotencyKey odeslán se stejným payloadem, vrátí se původní objednávka se stavovým kódem 409. Opakování je bezpečné.
{
"statusCode": 409,
"message": "Order already exists for this idempotency key",
"error": "Conflict"
}