Ödeme

Otelin online rezervasyonda kabul ettiği ödeme tiplerini listeler ve seçilen tipe göre ödeme adımını başlatır. Hangi tipte ne yapılacağı Ödeme akışı rehberinde anlatılır.

Ödeme tiplerini listele#

GET/external/online/payment/type

Kimlik doğrulama: Authorization: Bearer

Otelin online satış için etkinleştirdiği ödeme tiplerini döner. Sabit tip kimlikleri: 1 otelde ödeme, 3 havale/EFT, 9 kredi kartı (kart bilgisi rezervasyonla iletilir), 10 online ödeme (sanal POS).

Sorgu parametreleri

hotelIDintegerzorunlu
Otel kimliği.

Yanıt

200 Başarılı.

İstek
curl "https://test.hms.gen.tr/external/online/payment/type?hotelID=1000" \
  -H "Authorization: Bearer $HMS_TOKEN"
Yanıt · 200
{
    "success": true,
    "count": 3,
    "items": [
        {
            "title": "Otelde Ödeme",
            "title_translate": "odeme.otelde_odeme",
            "typeID": 1
        },
        {
            "title": "Havale / EFT",
            "title_translate": "odeme.havale",
            "typeID": 3
        },
        {
            "title": "Kredi Kartı ile Online Ödeme",
            "title_translate": "odeme.online_odeme",
            "typeID": 10
        }
    ]
}

Sanal POS bilgisi#

GET/external/payment/company

Kimlik doğrulama: Authorization: Bearer

Otelin sanal POS sağlayıcısını ve mağaza bilgilerini döner. Yalnızca ödemeyi kendi tarafınızda sağlayıcıya doğrudan bağlayacaksanız gerekir; standart akışta POST …/payment/type/10 yeterlidir. Yanıt gizli bilgi içerir, sunucu dışına çıkarmayın.

Sorgu parametreleri

hotelIDintegerzorunlu
Otel kimliği.

Yanıt

200 Başarılı.

Hata yanıtları

  • 200 hotel_company_info_could_not_found — otel için sanal POS tanımı yok.
İstek
curl "https://test.hms.gen.tr/external/payment/company?hotelID=1000" \
  -H "Authorization: Bearer $HMS_TOKEN"
Yanıt · 200
{
    "success": true,
    "paymentCompany": {
        "merchant_id": "4000****",
        "store_key": "********",
        "terminal_no": "VP00****",
        "user": "demo_api",
        "password": "********",
        "max_installment": 6,
        "company_id": 3,
        "company_code": "iyzico",
        "company_name": "iyzico"
    }
}

Ödeme adımını başlat#

POST/external/online/payment/type/{paymentType}

Kimlik doğrulama: Authorization: Bearer · Gövde: application/json

Seçilen ödeme tipine göre yapılması gerekeni döner. Tip 1 ve 9 için yalnızca hotelID yeterlidir; tip 3 banka hesaplarını listeler; tip 10 için misafir ve sepet bilgileriyle ödeme başlatılır ve dönen code (HTML) misafirin sayfasına basılarak sağlayıcının ödeme ekranına geçilir.

Yol parametreleri

paymentTypeintegerzorunlu
Ödeme tipi kimliği.
13910

İstek gövdesi

hotelIDintegerzorunlu
Otel kimliği.
totalPricedecimal
Tip 10 için zorunlu. Tahsil edilecek toplam tutar.
orderIDstring
Tip 10 için zorunlu. Sizin sipariş/rezervasyon numaranız.
returnUrlstring
Tip 10 için zorunlu. Ödeme sonrası misafirin döneceği adres.
name / surname / email / phonestring
Tip 10 için zorunlu. Ödeyen misafir bilgileri.
city / addressstring
Tip 10 için zorunlu. Fatura adresi.
countryIDinteger
Tip 10 için zorunlu. Ülke listesindeki id.
baskets[]object[]
Tip 10 için zorunlu, en az bir öğe. Her öğe: id, name, piece, price.

Yanıt

200 Tip 10: code alanında ödeme sağlayıcısına yönlendiren HTML parçası döner (sağlayıcıya göre otomatik gönderilen bir form, window.location script’i ya da gömülü ödeme formu). Bu HTML’i misafirin tarayıcısında olduğu gibi basın. Diğer tiplerde message alanı yapılacak işlemi belirtir.

Hata yanıtları

  • 200 required_input_info_not_submitted (+ errors[]) — tip 10 için alan eksik; country_info_sent_incorrectlycountryID geçersiz; there_is_missing_info_in_the_shopping_cart — sepet öğesinde alan eksik; bank_info_is_not_found — tip 3 için tanımlı banka hesabı yok.
  • 404 Bilinmeyen paymentType.
İstek
curl -X POST "https://test.hms.gen.tr/external/online/payment/type/10" \
  -H "Authorization: Bearer $HMS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "hotelID": 1000,
    "totalPrice": 2330,
    "orderID": "4811174883",
    "returnUrl": "https://booking.example.com/payment/result",
    "name": "Ayşe",
    "surname": "Demir",
    "email": "[email protected]",
    "phone": "05551112233",
    "city": "Denizli",
    "address": "Kumsal Cad. No: 12",
    "countryID": 1,
    "baskets": [
        {
            "id": 2,
            "name": "Standart Oda · Kahvaltı Dahil",
            "piece": 1,
            "price": 1930
        },
        {
            "id": 12,
            "name": "Akşam Yemeği",
            "piece": 1,
            "price": 400
        }
    ]
}'
Yanıt · 200
{
    "success": true,
    "message": "payment_order_code",
    "code": "<form method=\"post\" action=\"https://vpos.provider.example/3d\"><input type=\"hidden\" name=\"orderId\" value=\"4811174883\"> … </form><script>document.forms[0].submit()</script>"
}
Yanıt · 200 (tip 3, havale)
{
    "success": true,
    "message": "payment_by_bank_transfer",
    "banks": [
        {
            "companyName": "Ziraat Bankası",
            "holder": "Demo Turizm A.Ş.",
            "branchName": "Denizli",
            "branchNumber": "0123",
            "bankAccountNumber": "12345678-5001",
            "iban": "TR00 0001 0001 2345 6789 5001 01"
        }
    ]
}
Yanıt · 200 (tip 1 / tip 9)
{
    "success": true,
    "message": "credit_card_info_should_be_requested"
}
Son güncelleme: 8 Eylül 2026Bu sayfada bir hata mı var? Bize yazın