Skip to content
Son güncelleme

Transfer Ödemesi

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.

İki Adımlı Ödeme Modeli

  1. POST /transfer/orders siparişi oluşturur ve tahsil edilecek tam tutar olan paymentRequirement değerini döndürür.
  2. POST /transfer/orders/{orderId}/pay bu tutarı tahsil eder. Başarılı bir ödeme, tedarikçi rezervasyonunu eşzamanlı tetikler ve yanıt siparişin güncel halidir: rezervasyon tamamlandığında reserved, tedarikçi reddettiyse failed.

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.

Sipariş Ödemesi

Endpoint

POST /transfer/orders/{orderId}/pay

Kimlik Doğrulama

Bu endpoint kimlik doğrulama gerektirir. Authorization başlığında JWT erişim jetonunuzu ekleyin:

Authorization: Bearer ERIŞIM_JETONUNUZ

Son Kullanıcı IP Adresi

Entegre 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.

Yol Parametreleri

ParametreTürGerekliAçıklama
orderIdstringEvetTransfer sipariş kimliği

İstek Gövdesi

AlanTürGerekliAçıklama
paymentTypestringEvetÖdeme yöntemi, her zaman limit

Örnek İstek

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

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.

Ödeme Tamamlandı (200 OK)

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).

Yanıt Alanları

AlanTürAçıklama
orderIdstringTransfer sipariş kimliği
statusstringSipariş yaşam döngüsü durumu: ödeme tamamlandığında reserved, tedarikçi rezervasyonu reddettiyse failed
vendorReservationIdstringTedarikçi rezervasyon referansı. Sipariş reserved olduktan sonra döner
flightNumberstringSipariş oluşturmada verilen uçuş numarası
returnFlightNumberstringSipariş oluşturmada verilen dönüş uçuş numarası (gidiş-dönüşlerde)
productobjectRezerve edilen teklif, arama yanıtındaki ürünle aynı yapıda
passengersarraySipariş oluşturmada verilen yolcu bilgileri

Uç Durumlar

Sipariş zaten ödenmiş (8009)

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.

Eşzamanlı ödeme denemeleri (8008)

İ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.

Ödeme başarılı ama rezervasyon başarısız (8010)

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.

Süresi dolmuş sipariş

Ö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.