Vignetim

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)

AlanTürZorunluAçıklama
productIdUUIDEvetKatalogdaki ürün ID'si
productTypeIdintegerEvetÜrün türü: 1 = VİNYET, 2 = ESIM, 3 = SİGORTA, 4 = CEZA_ODEME
quantityintegerEvetBirim sayısı
vehiclePlatestringKoşulluAraç plakası (VİNYET için zorunlu)
vehicleCountryIsocodestringKoşulluAraç tescil ülkesi (VİNYET için zorunlu)
vehicleCategoryIdUUIDKoşulluAraç kategorisi (VİNYET için zorunlu)
startAtISO 8601KoşulluGeçerlilik başlangıç tarihi (VİNYET için zorunlu)
endAtISO 8601KoşulluGeçerlilik bitiş tarihi (VİNYET için zorunlu)
driverFirstnamestringHayırSürücü adı
driverLastnamestringHayırSürücü soyadı

Ödeme DTO'su (Payment DTO)

AlanTürZorunluAçıklama
typestringEvetŞunlardan biri: CARD, GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT, BANCONTACT
paymentMethodIdstringKoşulluStripe ödeme yöntemi token'ı (CARD için zorunlu)
returnUrlstringKoşullu3DS 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)

AlanTürZorunluAçıklama
emailstringEvetMüşteri e-posta adresi
firstNamestringEvetMüşteri adı
lastNamestringEvetMüşteri soyadı
phonestringHayırMüşteri telefon numarası (E.164 formatı önerilir)

Adres DTO'su (Address DTO)

AlanTürZorunluAçıklama
countryIsocodestringEvetÜlke ISO kodu
citystringEvetŞehir adı
addressLinestringEvetSokak adresi
postalCodestringHayırPosta kodu
taxNumberstringHayırVergi kimlik numarası
companyNamestringHayırŞirket adı (kurumsal müşteriler için)

Ek Alanlar

AlanTürZorunluAçıklama
idempotencyKeystringHayırMükerrer siparişleri önlemek için benzersiz anahtar. Aynı yük ile aynı anahtar orijinal siparişi döndürür (önerilir).
externalReferencestringHayırTakip için dahili sipariş referansınız
callbackUrlstringHayırSipariş 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"
}