Sipariş Oluştur (Create Order)
Ürün seçimi, ödeme bilgileri ve müşteri bilgileriyle yeni bir sipariş gönderin.
POST /orders
İstek Gövdesi (Request Body)
{
"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"
}
Ürünler DTO'su (Products DTO)
| Alan | Tür | Zorunlu | Açıklama |
|---|
productId | UUID | Evet | Katalogdaki ürün ID'si |
productTypeId | integer | Evet | Ürün türü: 1 = VİNYET, 2 = ESIM, 3 = SİGORTA, 4 = CEZA_ODEME |
quantity | integer | Evet | Birim sayısı |
vehiclePlate | string | Koşullu | Araç plakası (VİNYET için zorunlu) |
vehicleCountryIsocode | string | Koşullu | Araç tescil ülkesi (VİNYET için zorunlu) |
vehicleCategoryId | UUID | Koşullu | Araç kategorisi (VİNYET için zorunlu) |
startAt | ISO 8601 | Koşullu | Geçerlilik başlangıç tarihi (VİNYET için zorunlu) |
endAt | ISO 8601 | Koşullu | Geçerlilik bitiş tarihi (VİNYET için zorunlu) |
driverFirstname | string | Hayır | Sürücü adı |
driverLastname | string | Hayır | Sürücü soyadı |
Ödeme DTO'su (Payment DTO)
| Alan | Tür | Zorunlu | Açıklama |
|---|
type | string | Evet | Şunlardan biri: CARD, GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT, BANCONTACT |
paymentMethodId | string | Koşullu | Stripe ödeme yöntemi token'ı (CARD için zorunlu) |
returnUrl | string | Koşullu | 3DS yönlendirme geri dönüş URL'si (HTTPS) (CARD için zorunlu) |
Ödeme Yönlendirmesi (Payment Routing)
- CARD ödemeleri NestPay üzerinden yönlendirilir ve 3D Secure doğrulaması gerektirebilir.
- GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT ve BANCONTACT Stripe üzerinden yönlendirilir.
Müşteri DTO'su (Customer DTO)
| Alan | Tür | Zorunlu | Açıklama |
|---|
email | string | Evet | Müşteri e-posta adresi |
firstName | string | Evet | Müşteri adı |
lastName | string | Evet | Müşteri soyadı |
phone | string | Hayır | Müşteri telefon numarası (E.164 formatı önerilir) |
Adres DTO'su (Address DTO)
| Alan | Tür | Zorunlu | Açıklama |
|---|
countryIsocode | string | Evet | Ülke ISO kodu |
city | string | Evet | Şehir adı |
addressLine | string | Evet | Sokak adresi |
postalCode | string | Hayır | Posta kodu |
taxNumber | string | Hayır | Vergi kimlik numarası |
companyName | string | Hayır | Şirket adı (kurumsal müşteriler için) |
Ek Alanlar
| Alan | Tür | Zorunlu | Açıklama |
|---|
idempotencyKey | string | Hayır | Mükerrer siparişleri önlemek için benzersiz anahtar. Aynı yük ile aynı anahtar orijinal siparişi döndürür (önerilir). |
externalReference | string | Hayır | Takip için dahili sipariş referansınız |
callbackUrl | string | Hayır | Sipariş durumu güncellemelerini almak için URL |
Yanıt
201 Oluşturuldu (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 doğrulaması gerektiğinde (CARD ödemeleri) bulunur. Müşteriyi bu URL'ye yönlendirin.
- clientSecret -- Stripe üzerinden yönlendirilen ödemeler için bulunur. Ödemeyi istemci tarafında onaylamak için Stripe.js ile birlikte kullanın.
409 Çakışma (Conflict - İdempotent)
Aynı idempotencyKey aynı yük ile gönderildiğinde, orijinal sipariş 409 durum koduyla döndürülür. Yeniden deneme güvenlidir.
{
"statusCode": 409,
"message": "Order already exists for this idempotency key",
"error": "Conflict"
}