المصادقة
يُمنح الوصول عبر حساب شريك تعرّفه 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 | معرّف الفندق في 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، فإن تنسيقه غير مضمون؛ لذا خزّنه ومرّره كسلسلة نصية معتمة.
- عند تلقي
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.