Ödəniş
Otelin onlayn rezervasiyalar üçün qəbul etdiyi ödəniş növlərini siyahıya alır və seçilmiş növ üçün ödəniş addımını başladır. Hər növ üçün nə etmək lazım olduğu Ödəniş axını bələdçisində təsvir olunub.
/external/online/payment/typeÖdəniş növlərinin siyahısıGET/external/payment/companyVirtual POS məlumatlarıPOST/external/online/payment/type/{paymentType}Ödəniş addımının başladılmasıÖdəniş növlərinin siyahısı#
/external/online/payment/typeAutentifikasiya: Authorization: Bearer
Otelin onlayn satış üçün aktivləşdirdiyi ödəniş növlərini qaytarır. Sabit növ ID-ləri: 1 oteldə ödəniş, 3 bank köçürməsi, 9 kredit kartı (kart məlumatları rezervasiya ilə göndərilir), 10 onlayn ödəniş (virtual POS).
Sorğu sətri parametrləri
hotelIDintegerməcburiCavab
200 Uğurlu.
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": "Oteldə ödəniş",
"title_translate": "odeme.otelde_odeme",
"typeID": 1
},
{
"title": "Bank köçürməsi",
"title_translate": "odeme.havale",
"typeID": 3
},
{
"title": "Onlayn kartla ödəniş",
"title_translate": "odeme.online_odeme",
"typeID": 10
}
]
}Virtual POS məlumatları#
/external/payment/companyAutentifikasiya: Authorization: Bearer
Otelin virtual POS provayderini və ticarət nöqtəsi məlumatlarını qaytarır. Yalnız provayderi birbaşa öz tərəfinizdə inteqrasiya edirsinizsə lazımdır; standart axın POST …/payment/type/10 istifadə edir. Cavabda gizli məlumatlar var; onu yalnız server tərəfində saxlayın.
Sorğu sətri parametrləri
hotelIDintegerməcburiCavab
200 Uğurlu.
Xəta cavabları
- 200
hotel_company_info_could_not_found— otel üçün virtual POS konfiqurasiya edilməyib.
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"
}
}Ödəniş addımının başladılması#
/external/online/payment/type/{paymentType}Autentifikasiya: Authorization: Bearer · Gövdə: application/json
Seçilmiş ödəniş növü üçün nə etmək lazım olduğunu qaytarır. 1 və 9 növləri üçün yalnız hotelID kifayətdir; 3-cü növ bank hesablarını siyahıya alır; 10-cu növdə ödəniş qonaq və səbət məlumatları ilə başladılır, qaytarılan code (HTML) isə qonağı provayderin ödəniş ekranına ötürmək üçün qonağın səhifəsində göstərilir.
Yol parametrləri
paymentTypeintegerməcburi13910Sorğu gövdəsi
hotelIDintegerməcburitotalPricedecimalorderIDstringreturnUrlstringname / surname / email / phonestringcity / addressstringcountryIDintegerid.baskets[]object[]id, name, piece, price.Cavab
200 10-cu növ: code sahəsində ödəniş provayderinə ötürən HTML fraqmenti qaytarılır (provayderdən asılı olaraq avtomatik göndərilən forma, window.location skripti və ya daxil edilmiş ödəniş forması). Onu qonağın brauzerində olduğu kimi göstərin. Digər növlərdə message sahəsi nə etmək lazım olduğunu bildirir.
Xəta cavabları
- 200
required_input_info_not_submitted(+errors[]) — 10-cu növ üçün sahə çatışmır;country_info_sent_incorrectly—countryIDyanlışdır;there_is_missing_info_in_the_shopping_cart— səbət elementində sahə çatışmır;bank_info_is_not_found— 3-cü növ üçün bank hesabı konfiqurasiya edilməyib. - 404 Naməlum
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 otaq · Səhər yeməyi daxil",
"piece": 1,
"price": 1930
},
{
"id": 12,
"name": "Şam yeməyi",
"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 otaq · Səhər yeməyi daxil",
"piece": 1,
"price": 1930
},
{
"id": 12,
"name": "Şam yeməyi",
"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 otaq · Səhər yeməyi daxil',
'piece' => 1,
'price' => 1930,
],
[
'id' => 12,
'name' => 'Şam yeməyi',
'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 Bank",
"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"
}