Bestellung erstellen
Senden Sie eine neue Bestellung mit Produktauswahl, Zahlungsdetails und Kundeninformationen.
POST /orders
Anfragekörper
{
"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"
}
Produkte-DTO
| Feld | Typ | Erforderlich | Beschreibung |
|---|
productId | UUID | Ja | Die Produkt-ID aus dem Katalog |
productTypeId | integer | Ja | Produkttyp: 1 = VIGNETTE, 2 = ESIM, 3 = INSURANCE, 4 = FINE_PAYMENT |
quantity | integer | Ja | Anzahl der Einheiten |
vehiclePlate | string | Bedingt | Fahrzeugkennzeichen (erforderlich für VIGNETTE) |
vehicleCountryIsocode | string | Bedingt | Fahrzeug-Zulassungsland (erforderlich für VIGNETTE) |
vehicleCategoryId | UUID | Bedingt | Fahrzeugkategorie (erforderlich für VIGNETTE) |
startAt | ISO 8601 | Bedingt | Gültigkeitsbeginn (erforderlich für VIGNETTE) |
endAt | ISO 8601 | Bedingt | Gültigkeitsende (erforderlich für VIGNETTE) |
driverFirstname | string | Nein | Vorname des Fahrers |
driverLastname | string | Nein | Nachname des Fahrers |
Zahlungs-DTO
| Feld | Typ | Erforderlich | Beschreibung |
|---|
type | string | Ja | Einer von: CARD, GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT, BANCONTACT |
paymentMethodId | string | Bedingt | Stripe-Zahlungsmethoden-Token (erforderlich für CARD) |
returnUrl | string | Bedingt | HTTPS-URL für 3DS-Redirect-Callback (erforderlich für CARD) |
Zahlungsweiterleitung (Payment Routing)
- CARD-Zahlungen werden über NestPay geleitet und können eine 3D-Secure-Verifizierung erfordern.
- GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT und BANCONTACT werden über Stripe geleitet.
Kunden-DTO
| Feld | Typ | Erforderlich | Beschreibung |
|---|
email | string | Ja | E-Mail-Adresse des Kunden |
firstName | string | Ja | Vorname des Kunden |
lastName | string | Ja | Nachname des Kunden |
phone | string | Nein | Telefonnummer des Kunden (E.164-Format empfohlen) |
Adress-DTO
| Feld | Typ | Erforderlich | Beschreibung |
|---|
countryIsocode | string | Ja | Länder-ISO-Code |
city | string | Ja | Stadtname |
addressLine | string | Ja | Straßenadresse |
postalCode | string | Nein | Postleitzahl |
taxNumber | string | Nein | Steueridentifikationsnummer |
companyName | string | Nein | Firmenname (für Geschäftskunden) |
Zusätzliche Felder
| Feld | Typ | Erforderlich | Beschreibung |
|---|
idempotencyKey | string | Nein | Eindeutiger Schlüssel zur Vermeidung doppelter Bestellungen. Derselbe Schlüssel mit demselben Payload gibt die ursprüngliche Bestellung zurück (empfohlen). |
externalReference | string | Nein | Ihre interne Bestellreferenz zur Nachverfolgung |
callbackUrl | string | Nein | URL zum Empfang von Bestellstatus-Updates |
Antwort
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 -- Vorhanden, wenn eine 3D-Secure-Verifizierung erforderlich ist (CARD-Zahlungen). Leiten Sie den Kunden zu dieser URL weiter.
- clientSecret -- Vorhanden für über Stripe geleitete Zahlungen. Verwenden Sie dies mit Stripe.js, um die Zahlung auf der Client-Seite zu bestätigen.
409 Conflict (Idempotent)
Wenn derselbe idempotencyKey mit demselben Payload gesendet wird, wird die ursprüngliche Bestellung mit einem 409-Statuscode zurückgegeben. Ein erneuter Versuch ist sicher.
{
"statusCode": 409,
"message": "Order already exists for this idempotency key",
"error": "Conflict"
}