การยืนยันตัวตน
การเข้าถึงจะได้รับผ่านบัญชีพาร์ทเนอร์ที่ HMS กำหนดให้ บัญชีพาร์ทเนอร์จะได้รับ apiKey และ apiSecret และ HMS จะกำหนดสิทธิ์ว่าบัญชีนั้นเข้าถึงโรงแรมใดได้บ้าง เอนด์พอยต์เข้าสู่ระบบจะแลกข้อมูลรับรองเหล่านี้เป็นโทเค็นที่ผูกกับโรงแรม
การเข้าสู่ระบบและโทเค็น#
POST /external/public/login HTTP/1.1
Host: test.hms.gen.tr
Content-Type: application/x-www-form-urlencoded
apiKey=5y94tLmALIKDyUVdEPlAAjg5xWGQNgQtnALlV4%2BAm7Q%3D&apiSecret=a143d640…&hotelCode=1000{
"success": true,
"hotelCode": "1000",
"token": "eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…",
"hotelSeoUrl": "demo-otel"
}| ฟิลด์ | คำอธิบาย |
|---|---|
apiKey | คีย์พาร์ทเนอร์ มีอักขระ base64 จึงต้องเข้ารหัส URL เมื่อส่งในเนื้อหาแบบฟอร์ม (+ → %2B, = → %3D) ไลบรารี HTTP จะจัดการส่วนนี้ให้โดยอัตโนมัติ |
apiSecret | คีย์ลับ เก็บไว้ฝั่งเซิร์ฟเวอร์เท่านั้น ห้ามใส่ไว้ในเบราว์เซอร์หรือแอปมือถือ |
hotelCode | ID ของโรงแรมใน HMS หากพาร์ทเนอร์ไม่ได้รับสิทธิ์สำหรับโรงแรมนี้ จะได้รับ hotel_permission_is_not_found |
hotelSeoUrl | SEO slug ของโรงแรม ใช้แทน hotelCode เฉพาะในระบบจองห้องพักของ HMS เอง การเชื่อมต่อจากบุคคลที่สามให้ส่ง hotelCode |
เฮดเดอร์ Bearer#
ทุกเอนด์พอยต์ยกเว้นการเข้าสู่ระบบต้องการโทเค็นในเฮดเดอร์ Authorization:
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…หากไม่มีเฮดเดอร์ เฮดเดอร์ผิดรูปแบบ (ไม่มีคำนำหน้า Bearer) หรือไม่รู้จักโทเค็น API จะส่งคืน 401:
{
"success": false,
"error": "Authentication required"
}อายุและการต่ออายุโทเค็น#
- โทเค็นมีอายุ 7 วัน ให้ต่ออายุด้วยการเข้าสู่ระบบใหม่ก่อนหมดอายุ การเข้าสู่ระบบใช้ทรัพยากรน้อยและทำซ้ำสำหรับโรงแรมเดิมได้
- ห้ามแยกวิเคราะห์โทเค็น แม้โทเค็นจะเป็นโครงสร้างที่เข้ารหัสแบบ base64 แต่ไม่มีการรับประกันรูปแบบ ให้จัดเก็บและส่งต่อเป็นสตริงทึบ (opaque)
- เมื่อได้รับ
401ให้เข้าสู่ระบบอีกครั้งแล้วส่งคำขอใหม่ หากได้รับ401เป็นครั้งที่สอง แสดงว่าคู่คีย์หรือสิทธิ์สำหรับโรงแรมมีการเปลี่ยนแปลง
บริบทของโรงแรม#
โทเค็นหนึ่งผูกกับโรงแรมเดียว พารามิเตอร์ hotelID ในเอนด์พอยต์ต่าง ๆ ต้องตรงกับโรงแรมนั้น การขอข้อมูลของโรงแรมอื่นจะได้ข้อผิดพลาดด้านสิทธิ์หรือผลลัพธ์ว่าง สำหรับการเชื่อมต่อหลายโรงแรม ให้ขอโทเค็นแยกสำหรับแต่ละโรงแรมและแคชแยกตามโรงแรม
ข้อผิดพลาดในการเข้าสู่ระบบ#
| message | ความหมาย |
|---|---|
partner_is_not_found | คู่ apiKey / apiSecret ไม่ตรงกัน ตรวจสอบคีย์และการเข้ารหัส URL |
hotel_is_not_found | ไม่มีโรงแรมที่ตรงกับ hotelSeoUrl |
hotel_permission_is_not_found | พาร์ทเนอร์ไม่ได้รับสิทธิ์สำหรับโรงแรมนี้ หรือสิทธิ์ถูกปิดใช้งาน โปรดติดต่อฝ่ายสนับสนุนของ HMS |
ข้อผิดพลาดเหล่านี้ส่งกลับเป็น HTTP 200 พร้อม success: false และ token: null