Booking API
Bu metod, gönderilen parametrelere göre rezervasyon oluşturur.
📍 Endpoint
POST https://mg.mescogo.com/gw/api/booking/book
| Özellik | Değer |
|---|---|
| URI | BaseURL/api/booking/book |
| Method | POST |
| Content-Type | application/json |
📋 Request Parametreleri
Not: RoomBookingCodes tam olarak bir booking kodu içermelidir.
| Parametre | Tip | Açıklama |
|---|---|---|
RoomBookingCodes | GUID List | Rezerve etmek istediğiniz oda için tam olarak bir booking kodu |
CustomerDetails | Object List | Müşteri bilgileri |
ClientReferenceId | String | API istemcisi tarafından gönderilen referans numarası. İstek/yanıt eşleşmesi için önerilir. |
BookingReferenceId | String | API istemcisi sistemindeki rezervasyon, PNR, sipariş veya referans numarası. İsteğe bağlıdır. |
TotalFare | Decimal | Tahsil edilecek toplam fiyat |
EmailId | String | Müşteri listesindeki ilk kişinin email adresi |
PhoneNumber | String | Zorunlu. Geçerli bir telefon numarası, max 20 karakter. |
BookingType | String | Sabit booking modu. Voucher gönderin. Desteklenen tek değerdir ve onaylı rezervasyon/voucher akışını ifade eder. |
PaymentMode | String | Müşteri ödeme yöntemi. Limit (bakiye/kredi limiti) veya NewCard (kart ile ödeme). Varsayılan: Limit |
PaymentInfo | Object | Müşteri ödeme bilgileri (PaymentMode NewCard ise zorunlu) |
BillingAmount | Decimal | Faturalandırılacak toplam tutar |
BillingCurrency | String | Zorunlu, 3 karakterli ISO para birimi kodu |
CardHolderAddress | Object | Müş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,
BookingReferenceIdalanı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ğer | Açıklama |
|---|---|
Limit | Bakiye/kredi limiti ile ödeme |
NewCard | Kart ile ödeme |
Ödeme Notları
- Bakiye/kredi limiti ile ödeme yapmak için
PaymentMode = "Limit"gönderin,PaymentInfoveCardHolderAddressgöndermenize gerek yoktur. - Kart ile ödeme yapmak için
PaymentMode = "NewCard"gönderin ve eksiksizPaymentInfoileCardHolderAddressbilgilerini 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.
BillingAmountveTotalFareaynı toplam tutarı temsil etmelidir.
CustomerDetails Yapısı
| Parametre | Tip | Açıklama |
|---|---|---|
Title | String | Müşteri unvanı |
FirstName | String | Müşteri adı |
LastName | String | Müşteri soyadı |
BirthDate | DateTime | Müşteri doğum tarihi |
Type | String | Müşteri tipi. Yetişkin misafirler için Adult, çocuk misafirler için Child |
PaymentInfo Yapısı
| Parametre | Tip | Açıklama |
|---|---|---|
CvvNumber | String | Müşteri kart CVV numarası |
CardNumber | String | Müşteri kart numarası |
CardExpirationMonth | String | Kart son kullanma ayı |
CardExpirationYear | String | Kart son kullanma yılı |
CardHolderFirstName | String | Kart sahibi adı |
CardHolderLastName | String | Kart sahibi soyadı |
CardHolderAddress Yapısı
| Parametre | Tip | Açıklama |
|---|---|---|
AddressLine1 | String | Adres 1 |
AddressLine2 | String | Adres 2 |
City | String | Müşteri şehri |
PostalCode | String | Müşteri posta kodu |
CountryCode | String | Müş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>"
}