Transfer ödemeleri iki adımlı bir modeldir: sipariş oluşturma bir paymentRequirement döndürür, ödeme endpoint'i tam olarak bu tutarı tahsil eder. Transfer siparişleri acentenin kredi limitiyle ödenir.
POST /transfer/orderssiparişi oluşturur ve tahsil edilecek tam tutar olanpaymentRequirementdeğerini döndürür.POST /transfer/orders/{orderId}/paybu tutarı tahsil eder. Başarılı bir ödeme, tedarikçi rezervasyonunu eşzamanlı tetikler ve yanıt siparişin güncel halidir: rezervasyon tamamlandığındareserved, tedarikçi reddettiysefailed.
Zaten ödenmiş bir siparişi ödemek 8009 hatası döndürür. Çifte tahsilat riski yoktur: aynı sipariş üzerindeki eşzamanlı ödeme denemeleri sıralanır ve ikinci deneme 8009 (ilki hâlâ işleniyorsa 8008) ile başarısız olur.
POST /transfer/orders/{orderId}/payBu endpoint kimlik doğrulama gerektirir. Authorization başlığında JWT erişim jetonunuzu ekleyin:
Authorization: Bearer ERIŞIM_JETONUNUZEntegre acente sistemleri, son kullanıcının IP adresini X-Forwarded-For başlığı ile iletmelidir. Bu bilgi denetim ve güvenlik amaçları için gereklidir.
| Parametre | Tür | Gerekli | Açıklama |
|---|---|---|---|
orderId | string | Evet | Transfer sipariş kimliği |
| Alan | Tür | Gerekli | Açıklama |
|---|---|---|---|
paymentType | string | Evet | Ödeme yöntemi, her zaman limit |
curl -X POST https://api.pro.yolcu360.com/api/v1/transfer/orders/YLPB_0503/pay \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ERIŞIM_JETONUNUZ" \
-H "X-Forwarded-For: 203.0.113.195" \
-d '{
"paymentType": "limit"
}'Yanıt, tahsilat sonrası geri okunan güncel siparişin kendisidir. Sipariş oluşturma ve sipariş detayı yanıtlarıyla aynı şekildedir; product aşağıda kısaltılmıştır, tam yapı için Transfer Siparişleri sayfasına bakın.
Rezervasyon onaylanmıştır ve vendorReservationId hazırdır:
{
"orderId": "YLPB_0503",
"status": "reserved",
"vendorReservationId": "227699",
"flightNumber": "TK2021",
"product": {
"code": "9972a93a-707e-403e-928e-cbb68a65584f",
"appointment": {
"pickup": {"lat": 41.276146, "lon": 28.728735, "name": "Istanbul Airport (IST)"},
"dropoff": {"lat": 41.037003, "lon": 28.985092, "name": "Taksim Square"},
"pickupTime": "2027-06-15T10:00:00+03:00",
"passengerCount": 2
},
"vehicle": {"name": "Minivan", "seatCount": 6, "baggageCount": 6},
"pricing": {"currency": "TRY", "total": {"amount": 145200, "currency": "TRY"}},
"cancellationPolicies": [
{"type": "freeCancel", "until": "2027-06-15T09:00:00+03:00", "description": "You can cancel your transfer free of charge up to 1 hour before departure."}
]
},
"passengers": [
{"primary": true, "firstName": "John", "lastName": "Doe", "gender": "M", "birthDate": "1990-01-15", "nationality": "US", "passportNo": "AB1234567", "email": "john.doe@example.com", "phone": "+905551234567"},
{"primary": false, "firstName": "Jane", "lastName": "Doe", "identityNumber": "11111111110"}
]
}Tahsilat geçtiği halde tedarikçi rezervasyonu reddetmişse aynı yanıt status: "failed" ile döner (aşağıdaki uç durumlara bakın).
| Alan | Tür | Açıklama |
|---|---|---|
orderId | string | Transfer sipariş kimliği |
status | string | Sipariş yaşam döngüsü durumu: ödeme tamamlandığında reserved, tedarikçi rezervasyonu reddettiyse failed |
vendorReservationId | string | Tedarikçi rezervasyon referansı. Sipariş reserved olduktan sonra döner |
flightNumber | string | Sipariş oluşturmada verilen uçuş numarası |
returnFlightNumber | string | Sipariş oluşturmada verilen dönüş uçuş numarası (gidiş-dönüşlerde) |
product | object | Rezerve edilen teklif, arama yanıtındaki ürünle aynı yapıda |
passengers | array | Sipariş oluşturmada verilen yolcu bilgileri |
Zaten ödenmiş bir siparişi ödemek hiçbir tahsilat yapılmadan başarısız olur:
{
"code": 8009,
"description": "Transfer order is already paid",
"details": {
"orderId": "YLPB_0503"
}
}8009 hatasını "sipariş durumunu kontrol et" olarak yorumlayın: sipariş büyük olasılıkla zaten reserved durumundadır.
İlk ödeme hâlâ işlenirken ikinci bir deneme gelirse 8009 yerine 8008 (ödeme başarısız) dönebilir. Her iki durumda da çifte tahsilat olmaz. Yeniden deneme politikası: önce sipariş durumunu kontrol edin; yalnızca sipariş hâlâ pendingPayment durumundaysa ödemeyi yeniden deneyin.
Nadir durumlarda tahsilat başarılı olur ancak tedarikçi rezervasyonu başarısız olur. Ödeme 8010 hatası (Payment succeeded but the reservation could not be completed) ya da status değeri failed olan bir 200 yanıtı döndürür. Her iki durumda da sipariş detayını kontrol edin ve destek ile iletişime geçin; ödemeniz kaybolmaz.
Ödenmeyen siparişler oluşturmadan yaklaşık bir saat sonra sona erer. Süresi dolmuş bir siparişi ödemek başarısız olur; yeni bir aramadan yeni bir sipariş oluşturun.