Ö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.
/external/online/payment/typeÖdeme tiplerini listeleGET/external/payment/companySanal POS bilgisiPOST/external/online/payment/type/{paymentType}Ödeme adımını başlatÖdeme tiplerini listele#
/external/online/payment/typeKimlik 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
hotelIDintegerzorunluYanıt
200 Başarılı.
curl "https://test.hms.gen.tr/external/online/payment/type?hotelID=1000" \
-H "Authorization: Bearer $HMS_TOKEN"const res = await fetch("https://test.hms.gen.tr/external/online/payment/type?hotelID=1000", {
headers: {
"Authorization": `Bearer ${process.env.HMS_TOKEN}`
}
});
const data = await res.json();$ch = curl_init('https://test.hms.gen.tr/external/online/payment/type?hotelID=1000');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('HMS_TOKEN'),
],
]);
$data = json_decode(curl_exec($ch), true);{
"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#
/external/payment/companyKimlik 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
hotelIDintegerzorunluYanıt
200 Başarılı.
Hata yanıtları
- 200
hotel_company_info_could_not_found— otel için sanal POS tanımı yok.
curl "https://test.hms.gen.tr/external/payment/company?hotelID=1000" \
-H "Authorization: Bearer $HMS_TOKEN"const res = await fetch("https://test.hms.gen.tr/external/payment/company?hotelID=1000", {
headers: {
"Authorization": `Bearer ${process.env.HMS_TOKEN}`
}
});
const data = await res.json();$ch = curl_init('https://test.hms.gen.tr/external/payment/company?hotelID=1000');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('HMS_TOKEN'),
],
]);
$data = json_decode(curl_exec($ch), true);{
"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#
/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
paymentTypeintegerzorunlu13910İstek gövdesi
hotelIDintegerzorunlutotalPricedecimalorderIDstringreturnUrlstringname / surname / email / phonestringcity / addressstringcountryIDintegerid.baskets[]object[]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_incorrectly—countryIDgeç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.
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
}
]
}'const res = await fetch("https://test.hms.gen.tr/external/online/payment/type/10", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.HMS_TOKEN}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"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
}
]
})
});
const data = await res.json();$ch = curl_init('https://test.hms.gen.tr/external/online/payment/type/10');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('HMS_TOKEN'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'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,
],
],
]),
]);
$data = json_decode(curl_exec($ch), true);{
"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>"
}{
"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"
}
]
}{
"success": true,
"message": "credit_card_info_should_be_requested"
}