الدفع
تعرض أنواع الدفع التي يقبلها الفندق للحجوزات عبر الإنترنت، وتبدأ خطوة الدفع للنوع المختار. يشرح دليل مسار الدفع ما يلزم لكل نوع.
/external/online/payment/typeعرض أنواع الدفعGET/external/payment/companyبيانات نقطة البيع الافتراضيةPOST/external/online/payment/type/{paymentType}بدء خطوة الدفععرض أنواع الدفع#
/external/online/payment/typeالمصادقة: Authorization: Bearer
تعيد أنواع الدفع التي فعّلها الفندق للبيع عبر الإنترنت. معرّفات الأنواع ثابتة: 1 الدفع في الفندق، 3 التحويل البنكي، 9 بطاقة الائتمان (تُرسَل بيانات البطاقة مع الحجز)، 10 الدفع الإلكتروني (نقطة البيع الافتراضية).
معاملات الاستعلام
hotelIDintegerإلزاميالاستجابة
200 نجاح.
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": "الدفع في الفندق",
"title_translate": "odeme.otelde_odeme",
"typeID": 1
},
{
"title": "تحويل بنكي",
"title_translate": "odeme.havale",
"typeID": 3
},
{
"title": "الدفع الإلكتروني بالبطاقة",
"title_translate": "odeme.online_odeme",
"typeID": 10
}
]
}بيانات نقطة البيع الافتراضية#
/external/payment/companyالمصادقة: Authorization: Bearer
تعيد مزوّد نقطة البيع الافتراضية للفندق وبيانات التاجر. لا تحتاج إليها إلا إذا ربطت المزوّد مباشرةً من جهتك؛ أما المسار القياسي فيستخدم POST …/payment/type/10. تحتوي الاستجابة على بيانات سرية، فأبقها على الخادم.
معاملات الاستعلام
hotelIDintegerإلزاميالاستجابة
200 نجاح.
استجابات الأخطاء
- 200
hotel_company_info_could_not_found— لم تُضبط نقطة بيع افتراضية للفندق.
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"
}
}بدء خطوة الدفع#
/external/online/payment/type/{paymentType}المصادقة: Authorization: Bearer · المتن: application/json
تعيد ما يجب فعله لنوع الدفع المختار. يكفي النوعين 1 و9 إرسال hotelID؛ ويعرض النوع 3 الحسابات البنكية؛ أما في النوع 10 فيبدأ الدفع ببيانات النزيل وسلة الشراء، ويُعرض code (HTML) المُعاد في صفحة النزيل لتحويله إلى شاشة الدفع لدى المزوّد.
معاملات المسار
paymentTypeintegerإلزامي13910متن الطلب
hotelIDintegerإلزاميtotalPricedecimalorderIDstringreturnUrlstringname / surname / email / phonestringcity / addressstringcountryIDintegerid من قائمة الدول.baskets[]object[]id، name، piece، price.الاستجابة
200 النوع 10: يحتوي code على مقتطف HTML يحوّل النزيل إلى مزوّد الدفع (نموذج يُرسَل تلقائيًا، أو سكربت window.location، أو نموذج دفع مضمَّن، بحسب المزوّد). اعرضه كما هو في متصفح النزيل. في الأنواع الأخرى يوضّح الحقل message ما يجب فعله.
استجابات الأخطاء
- 200
required_input_info_not_submitted(+errors[]) — حقل مفقود في النوع 10؛country_info_sent_incorrectly— قيمةcountryIDغير صالحة؛there_is_missing_info_in_the_shopping_cart— حقل مفقود في أحد عناصر السلة؛bank_info_is_not_found— لا يوجد حساب بنكي مضبوط للنوع 3. - 404 قيمة
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": "غرفة قياسية · مبيت وإفطار",
"piece": 1,
"price": 1930
},
{
"id": 12,
"name": "عشاء",
"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": "غرفة قياسية · مبيت وإفطار",
"piece": 1,
"price": 1930
},
{
"id": 12,
"name": "عشاء",
"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' => 'غرفة قياسية · مبيت وإفطار',
'piece' => 1,
'price' => 1930,
],
[
'id' => 12,
'name' => 'عشاء',
'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": "بنك زراعات",
"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"
}