Ana içeriğe geç

Booking API

Bu metod, gönderilen parametrelere göre rezervasyon oluşturur.

📍 Endpoint

POST https://mg.mescogo.com/gw/api/booking/book
ÖzellikDeğer
URIBaseURL/api/booking/book
MethodPOST
Content-Typeapplication/json

📋 Request Parametreleri

Not: RoomBookingCodes tam olarak bir booking kodu içermelidir.

ParametreTipAçıklama
RoomBookingCodesGUID ListRezerve etmek istediğiniz oda için tam olarak bir booking kodu
CustomerDetailsObject ListMüşteri bilgileri
ClientReferenceIdStringAPI istemcisi tarafından gönderilen referans numarası. İstek/yanıt eşleşmesi için önerilir.
BookingReferenceIdStringAPI istemcisi sistemindeki rezervasyon, PNR, sipariş veya referans numarası. İsteğe bağlıdır.
TotalFareDecimalTahsil edilecek toplam fiyat
EmailIdStringMüşteri listesindeki ilk kişinin email adresi
PhoneNumberStringZorunlu. Geçerli bir telefon numarası, max 20 karakter.
BookingTypeStringSabit booking modu. Voucher gönderin. Desteklenen tek değerdir ve onaylı rezervasyon/voucher akışını ifade eder.
PaymentModeStringMüşteri ödeme yöntemi. Limit (bakiye/kredi limiti) veya NewCard (kart ile ödeme). Varsayılan: Limit
PaymentInfoObjectMüşteri ödeme bilgileri (PaymentMode NewCard ise zorunlu)
BillingAmountDecimalFaturalandırılacak toplam tutar
BillingCurrencyStringZorunlu, 3 karakterli ISO para birimi kodu
CardHolderAddressObjectMüşteri kart adresi (PaymentMode NewCard ise zorunlu)

Referans Numaraları Hakkında Not

ClientReferenceId ve BookingReferenceId API istemcisi tarafından gönderilen opsiyonel referans değerleridir. Bu değerler MG tarafından üretilmez.

  • ClientReferenceId: İstek/yanıt eşleşmesi için önerilen API istemcisi sistem değeridir. Gönderilirse başarılı yanıtta aynı değer döndürülür.
  • BookingReferenceId: Çağıran sistemdeki opsiyonel rezervasyon, sipariş, PNR, booking veya referans numarasıdır. Ayrı bir booking referansı varsa kullanılabilir. Not: Bu ID'lerin kullanımı idempotency (tekrarlanamazlık) veya kalıcılık garantisi sağlamaz.

Bu Alanlar Nasıl Doldurulmalı?

  • ClientReferenceId, booking isteğini API istemcisi tarafında takip etmek için kullanılan değerdir.
  • Önerilen kaynaklar: request numaranız, sepet/sipariş numaranız, CRM korelasyon ID'niz veya booking deneme ID'niz.
  • Örnek değerler: REQ-20260407-000123, ORDER-458921, B2B-WEB-90017.
  • BookingReferenceId, MG'ye gitmeden önce çağıran sistemde oluşmuş bir rezervasyon, order, PNR veya booking referansı varsa kullanılabilir.
  • Eğer kendi nihai rezervasyon numaranızı ancak MG başarılı döndükten sonra üretiyorsanız, BookingReferenceId alanını boş string olarak gönderebilirsiniz.
  • Bu iki değer request içinde gönderilir ve MG tarafındaki başka bir endpoint'ten önceden alınamaz.

BookingType

BookingType şu anda seçilebilir bir seçenek değildir. Booking oluşturma için API Voucher bekler. Farklı değer göndermeyin.

PaymentMode Değerleri

DeğerAçıklama
LimitBakiye/kredi limiti ile ödeme
NewCardKart ile ödeme

Ödeme Notları

  • Bakiye/kredi limiti ile ödeme yapmak için PaymentMode = "Limit" gönderin, PaymentInfo ve CardHolderAddress göndermenize gerek yoktur.
  • Kart ile ödeme yapmak için PaymentMode = "NewCard" gönderin ve eksiksiz PaymentInfo ile CardHolderAddress bilgilerini ekleyin.
  • Eksiksiz kart bilgisi gönderildiğinde, istek kart ödemesi olarak işlenir.
  • Önemli: Bakiye/kredi limiti ödemesi kullanıldığında, API rezervasyonu onaylamadan önce kullanılabilir bakiye/kredi limitini doğrular.
  • BillingAmount ve TotalFare aynı toplam tutarı temsil etmelidir.

CustomerDetails Yapısı

ParametreTipAçıklama
TitleStringMüşteri unvanı
FirstNameStringMüşteri adı
LastNameStringMüşteri soyadı
BirthDateDateTimeMüşteri doğum tarihi
TypeStringMüşteri tipi. Yetişkin misafirler için Adult, çocuk misafirler için Child

PaymentInfo Yapısı

ParametreTipAçıklama
CvvNumberStringMüşteri kart CVV numarası
CardNumberStringMüşteri kart numarası
CardExpirationMonthStringKart son kullanma ayı
CardExpirationYearStringKart son kullanma yılı
CardHolderFirstNameStringKart sahibi adı
CardHolderLastNameStringKart sahibi soyadı

CardHolderAddress Yapısı

ParametreTipAçıklama
AddressLine1StringAdres 1
AddressLine2StringAdres 2
CityStringMüşteri şehri
PostalCodeStringMüşteri posta kodu
CountryCodeStringMüşteri ülke kodu

📤 Örnek Request'ler

Örnek Request — Bakiye Ödemesi

{
"RoomBookingCodes": ["<oda-booking-guid>"],
"CustomerDetails": [
{
"Title": "<unvan>",
"FirstName": "<ad>",
"LastName": "<soyad>",
"BirthDate": "<dogum-tarihi>",
"Type": "<musteri-tipi>"
}
],
"ClientReferenceId": "REQ-10023",
"BookingReferenceId": "BKG-99482",
"TotalFare": 100.0,
"EmailId": "<email>",
"PhoneNumber": "<telefon-numarasi>",
"BookingType": "Voucher",
"PaymentMode": "Limit",
"BillingAmount": 100.0,
"BillingCurrency": "<para-birimi>"
}

Örnek Request — Kart Ödemesi

{
"RoomBookingCodes": ["<oda-booking-guid>"],
"CustomerDetails": [
{
"Title": "<unvan>",
"FirstName": "<ad>",
"LastName": "<soyad>",
"BirthDate": "<dogum-tarihi>",
"Type": "<musteri-tipi>"
}
],
"ClientReferenceId": "REQ-10023",
"BookingReferenceId": "BKG-99482",
"TotalFare": 100.0,
"EmailId": "<email>",
"PhoneNumber": "<telefon-numarasi>",
"BookingType": "Voucher",
"PaymentMode": "NewCard",
"BillingAmount": 100.0,
"BillingCurrency": "<para-birimi>",
"PaymentInfo": {
"CvvNumber": "<cvv>",
"CardNumber": "<kart-numarasi>",
"CardExpirationMonth": "<son-kullanma-ayi>",
"CardExpirationYear": "<son-kullanma-yili>",
"CardHolderFirstName": "<kart-sahibi-adi>",
"CardHolderLastName": "<kart-sahibi-soyadi>"
},
"CardHolderAddress": {
"AddressLine1": "<adres-1>",
"AddressLine2": "<adres-2>",
"City": "<sehir>",
"PostalCode": "<posta-kodu>",
"CountryCode": "<ulke-kodu>"
}
}

✅ Başarılı Response

{
"Status": {
"Code": 200,
"Description": "Successful"
},
"ClientReferenceId": "REQ-10023",
"ConfirmationNumber": "1531561"
}

❌ Hata Durumları

İş doğrulama hataları Status objesi döner.

Ödeme Bilgisi Bulunamadı

{
"Status": {
"Code": 404,
"Description": "Payment Information Not Found"
}
}

Yetersiz Hesap Bakiyesi

{
"Status": {
"Code": 404,
"Description": "Insufficient account balance"
}
}

Hesap Bulunamadı

{
"Status": {
"Code": 404,
"Description": "Account Not Found"
}
}

İşlem Hatası

{
"StatusCode": 500,
"Reason": "<sebep>",
"Error": "<hata-mesaji>",
"ErrorDetails": "<hata-detaylari>"
}