เริ่มต้นอย่างรวดเร็ว
ในหน้านี้คุณจะสร้างคีย์ API ในแผงควบคุม HMS ของโรงแรม และดึงรายชื่อผู้เข้าพักในโรงแรม คุณต้องเข้าถึงแผงควบคุมด้วยผู้ใช้ที่มีสิทธิ์จัดการคีย์ API หากไม่มี ฝ่ายบริหารของโรงแรมสามารถสร้างคีย์แล้วส่งให้คุณได้
1. สร้างคีย์#
- ในแผงควบคุมผู้ดูแลของ HMS ให้เปิดหน้า API แล้วสลับไปที่แท็บ Custom API
- กรอกตำแหน่งที่จะใช้คีย์ในช่องคำอธิบาย (เช่น Hotspot – อาคารหลัก) แล้วบันทึก HMS จะสร้างคีย์ความยาว 13 อักขระ
- คัดลอกคีย์จากรายการ คีย์ผูกกับโรงแรมและไม่มีวันหมดอายุ แต่จะใช้ไม่ได้ทันทีที่ถูกลบออกจากรายการ
export HMS_API_KEY="017f1daf2d139"จดบันทึก ID ของโรงแรมใน HMS ไว้ด้วย ตัวอย่างในหน้านี้ส่งค่านี้เป็น HotelCode: 1000 เฮดเดอร์นี้ไม่ได้ใช้ในการตรวจสอบ แต่ช่วยให้เห็นใน log ว่ามีการสอบถามข้อมูลของโรงแรมใด
2. ดึงรายการ#
เรียกเอนด์พอยต์ด้วย POST และไม่ต้องส่งเนื้อหา:
curl -X POST "https://test.hms.gen.tr/public/json/customer/inhotel" \
-H "ApiKey: $HMS_API_KEY" \
-H "HotelCode: 1000"const res = await fetch("https://test.hms.gen.tr/public/json/customer/inhotel", {
method: "POST",
headers: {
"ApiKey": process.env.HMS_API_KEY,
"HotelCode": "1000"
}
});
if (res.status === 401) throw new Error("Invalid ApiKey");
const data = await res.json();
for (const g of data.otelde) {
console.log(g.roomName, g.firstName, g.lastName, new Date(g.checkout * 1000));
}$ch = curl_init('https://test.hms.gen.tr/public/json/customer/inhotel');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'ApiKey: ' . getenv('HMS_API_KEY'),
'HotelCode: 1000',
],
]);
$body = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 401) {
throw new RuntimeException('Invalid ApiKey');
}
$data = json_decode($body, true);
foreach ($data['otelde'] as $g) {
echo $g['roomName'], ' · ', $g['firstName'], ' ', $g['lastName'], ' · ', date('d.m.Y', $g['checkout']), "\n";
}3. อ่านการตอบกลับ#
ผู้เข้าพักในโรงแรมแต่ละคนเป็นรายการแยกกันในอาร์เรย์ otelde ตัวอย่างแบบตัดทอนสำหรับผู้เข้าพักสองคนที่พักห้องเดียวกัน:
{
"success": 1,
"otelde": [
{
"unique": 58211,
"firstName": "AYŞE",
"lastName": "DEMİR",
"identityNumber": "11111111110",
"birthDate": "14.03.1985",
"roomID": 4,
"roomName": "104",
"checkin": 1788863400,
"checkout": 1788998400,
"rezervasyon_id": 282799
},
{
"unique": 58212,
"firstName": "MEHMET",
"lastName": "DEMİR",
"identityNumber": "22222222220",
"birthDate": "02.11.1982",
"roomID": 4,
"roomName": "104",
"checkin": 1788863400,
"checkout": 1788998400,
"rezervasyon_id": 282799
}
]
}uniqueไม่ซ้ำกันสำหรับผู้เข้าพักแต่ละคน ให้ผูกผู้ใช้ Hotspot เข้ากับค่านี้ ส่วนrezervasyon_idจะเหมือนกันสำหรับผู้เข้าพักในห้องเดียวกัน- หมายเลขห้องที่ถามบนพอร์ทัลจะเปรียบเทียบกับ
roomNameและนามสกุลจะเปรียบเทียบกับlastNameโดยทั่วไปค่าต่าง ๆ เป็นตัวพิมพ์ใหญ่ checkinคือเวลาที่เช็กอิน ส่วนcheckoutคือวันที่เช็กเอาต์ตามแผน (00:00 UTC) โดยไม่มีข้อมูลเวลา ให้บวกเวลาเช็กเอาต์ของโรงแรมเพื่อหาเวลาสิ้นสุดเซสชัน- หากไม่มีผู้เข้าพักในโรงแรม
oteldeจะเป็นอาร์เรย์ว่าง และsuccessยังคงเป็น1
ขั้นตอนต่อไป#
- ขั้นตอนการตรวจสอบผู้เข้าพัก — กฎการจับคู่ อายุเซสชัน การซิงค์เป็นระยะ
- การยืนยันตัวตน — การจัดการคีย์และการตอบกลับ 401
- เอกสารอ้างอิง API — คำอธิบายทุกฟิลด์