Έλεγχος ταυτότητας
Η πρόσβαση παρέχεται μέσω ενός λογαριασμού συνεργάτη που ορίζει το HMS. Ο λογαριασμός συνεργάτη λαμβάνει ένα apiKey και ένα apiSecret, και το HMS εξουσιοδοτεί σε ποια ξενοδοχεία έχει πρόσβαση. Το τελικό σημείο σύνδεσης ανταλλάσσει αυτά τα διαπιστευτήρια με ένα token δεσμευμένο σε ξενοδοχείο.
Σύνδεση και token#
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#
Κάθε τελικό σημείο εκτός από τη σύνδεση αναμένει το token στην κεφαλίδα Authorization:
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…Αν η κεφαλίδα λείπει, έχει λανθασμένη μορφή (χωρίς το πρόθεμα Bearer) ή το token είναι άγνωστο, το API επιστρέφει 401:
{
"success": false,
"error": "Authentication required"
}Διάρκεια ισχύος και ανανέωση του token#
- Το token ισχύει για 7 ημέρες. Ανανεώστε το συνδεόμενοι ξανά πριν λήξει· η σύνδεση είναι φθηνή και μπορεί να επαναλαμβάνεται για το ίδιο ξενοδοχείο.
- Μην αναλύετε το token. Παρόλο που είναι μια δομή κωδικοποιημένη σε base64, η μορφή του δεν είναι εγγυημένη· αποθηκεύστε το και προωθήστε το ως αδιαφανή συμβολοσειρά.
- Σε
401, συνδεθείτε ξανά μία φορά και επαναλάβετε το αίτημα· ένα δεύτερο401σημαίνει ότι έχει αλλάξει το ζεύγος κλειδιών ή η εξουσιοδότηση για το ξενοδοχείο.
Πλαίσιο ξενοδοχείου#
Ένα token δεσμεύεται σε ένα μόνο ξενοδοχείο. Η παράμετρος hotelID στα τελικά σημεία πρέπει να συμφωνεί με αυτό το ξενοδοχείο· ένα αίτημα για άλλο ξενοδοχείο καταλήγει σε σφάλμα εξουσιοδότησης ή σε κενά αποτελέσματα. Για ενσωματώσεις με πολλά ξενοδοχεία, λάβετε ξεχωριστό token για κάθε ξενοδοχείο και κρατήστε το στην cache ανά ξενοδοχείο.
Σφάλματα σύνδεσης#
| 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.