Ροή πληρωμής

Το ξενοδοχείο αποφασίζει στον πίνακα διαχείρισης ποιους τύπους πληρωμής δέχεται για online κρατήσεις. Η μηχανή κρατήσεων εμφανίζει αυτή τη λίστα και ακολουθεί διαφορετική διαδρομή για κάθε τύπο. Αυτός ο οδηγός καλύπτει τους τέσσερις τύπους πληρωμής και τι κάνετε σε καθέναν.

Λίστα τύπων πληρωμής#

Τερματικό
curl "https://test.hms.gen.tr/external/online/payment/type?hotelID=1000" \
  -H "Authorization: Bearer $HMS_TOKEN"
Απόκριση · 200
{
    "success": true,
    "count": 3,
    "items": [
        {
            "title": "Pay at Hotel",
            "title_translate": "odeme.otelde_odeme",
            "typeID": 1
        },
        {
            "title": "Bank Transfer",
            "title_translate": "odeme.havale",
            "typeID": 3
        },
        {
            "title": "Online Card Payment",
            "title_translate": "odeme.online_odeme",
            "typeID": 10
        }
    ]
}
typeIDΤύποςΤι συμβαίνει
1Πληρωμή στο ξενοδοχείοΚαμία είσπραξη· η κράτηση αποστέλλεται απευθείας.
3Τραπεζικό έμβασμαΕμφανίζονται οι τραπεζικοί λογαριασμοί του ξενοδοχείου· η κράτηση αποστέλλεται ως «σε αναμονή πληρωμής».
9Πιστωτική κάρτα (εγγύηση)Τα στοιχεία της κάρτας αποστέλλονται στο HMS μαζί με την κράτηση, στο PaymentCard· το ξενοδοχείο χρεώνει την κάρτα.
10Online πληρωμή (εικονικό POS)Το HMS ξεκινά μια συνεδρία πληρωμής· ο επισκέπτης μεταφέρεται στη σελίδα πληρωμής του παρόχου και επιστρέφει στο returnUrl σας.

Τύπος 1 · Πληρωμή στο ξενοδοχείο#

Δεν απαιτείται επιπλέον βήμα. Μπορείτε να καλέσετε το τελικό σημείο για να λάβετε επιβεβαίωση:

POST …/payment/type/1 → 200
{
    "success": true,
    "message": "payment_at_the_hotel"
}

Τύπος 3 · Τραπεζικό έμβασμα#

Ανακτήστε τους τραπεζικούς λογαριασμούς που έχει ενεργοποιήσει το ξενοδοχείο για online πωλήσεις και εμφανίστε τους στον επισκέπτη:

Τερματικό
curl -X POST "https://test.hms.gen.tr/external/online/payment/type/3" \
  -H "Authorization: Bearer $HMS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"hotelID": 1000}'
Απόκριση · 200
{
    "success": true,
    "message": "payment_by_bank_transfer",
    "banks": [
        {
            "companyName": "Ziraat Bank",
            "holder": "Demo Turizm A.Ş.",
            "branchName": "Denizli",
            "branchNumber": "0123",
            "bankAccountNumber": "12345678-5001",
            "iban": "TR00 0001 0001 2345 6789 5001 01"
        }
    ]
}

Αν δεν έχει ρυθμιστεί λογαριασμός, επιστρέφεται bank_info_is_not_found· αποκρύψτε αυτόν τον τύπο από τη λίστα.

Τύπος 9 · Πιστωτική κάρτα#

Το τελικό σημείο απλώς σας ενημερώνει ότι πρέπει να συλλεχθούν τα στοιχεία της κάρτας:

POST …/payment/type/9 → 200
{
    "success": true,
    "message": "credit_card_info_should_be_requested"
}

Συλλέξτε τα στοιχεία της κάρτας στη δική σας φόρμα και στείλτε τα στο πεδίο PaymentCard κάθε στοιχείου RoomStays της αποστολής κράτησης:

RoomStays[].PaymentCard
{
    "PaymentCard": {
        "CardHolder": {
            "fullname": "Ayşe Demir",
            "address": "Kumsal Cad. No: 12",
            "country": "Türkiye",
            "city": "Antalya"
        },
        "cardNumber": "5571135571135575",
        "expireDate": "0329",
        "cardCode": "MasterCard",
        "seriesCode": "000"
    }
}

Τύπος 10 · Online πληρωμή#

Ξεκινήστε μια συνεδρία πληρωμής με τα στοιχεία του επισκέπτη και του καλαθιού. Όλα τα πεδία είναι υποχρεωτικά· ένα πεδίο που λείπει αναφέρεται με required_input_info_not_submitted και errors[].

Αίτημα
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.00,
    "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": "Standard Room · Bed & Breakfast", "piece": 1, "price": 1930.00 },
      { "id": 12, "name": "Dinner", "piece": 1, "price": 400.00 }
    ]
  }'
Απόκριση · 200
{
    "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>"
}

Το code που επιστρέφεται είναι ένα τμήμα HTML: ανάλογα με τον πάροχο εικονικού POS του ξενοδοχείου, πρόκειται για μια φόρμα 3D Secure με αυτόματη υποβολή, ένα script ανακατεύθυνσης window.location ή μια ενσωματωμένη φόρμα πληρωμής (π.χ. iyzico). Αποδώστε το τμήμα αυτούσιο στη σελίδα πληρωμής σας· μην προσπαθήσετε να το αναλύσετε. Ο επισκέπτης ολοκληρώνει την πληρωμή στον πάροχο και επιστρέφει στο returnUrl σας· το αποτέλεσμα δηλώνεται με παραμέτρους ερωτήματος που προστίθενται σε αυτό (sonuc=1 επιτυχία, sonuc=0 αποτυχία). Ο αριθμός παραγγελίας σας (orderID) αποθηκεύεται μαζί με την εγγραφή πληρωμής· αντιστοιχίστε τον με τη δική σας εγγραφή κατά την επιστροφή και στείλτε την κράτηση μόνο αν η πληρωμή πέτυχε.

ΠεδίοΣημείωση
totalPriceΠρέπει να ισούται με το σύνολο του καλαθιού· αυτό το ποσό αποστέλλεται στον πάροχο.
orderIDΠρέπει να είναι μοναδικό. Η χρήση του ID της κράτησης διευκολύνει τη συμφωνία των εγγραφών.
countryIDΤο id από τη λίστα χωρών.
baskets[]Μία γραμμή ανά δωμάτιο ή επιπλέον υπηρεσία. Το id είναι το αναγνωριστικό τύπου δωματίου / πακέτου, το piece η ποσότητα και το price η τιμή μονάδας.

Απευθείας χρήση των στοιχείων εικονικού POS#

Αν θέλετε να συνδέεστε στον πάροχο από τον δικό σας διακομιστή αντί για τη σελίδα πληρωμής του HMS, το τελικό σημείο στοιχείων εικονικού POS επιστρέφει το αναγνωριστικό εμπόρου, τα κλειδιά και τον κωδικό του παρόχου. Πρόκειται για μυστικά στοιχεία: χρησιμοποιήστε τα μόνο στον διακομιστή και συμφωνήστε πρώτα αυτή την προσέγγιση με το HMS.

Μετά την πληρωμή#

  • Για τον τύπο 10, στείλτε την κράτηση αφού επιβεβαιωθεί η πληρωμή· μην τη στέλνετε αν η πληρωμή απέτυχε.
  • Για τον τύπο 3, στείλτε την κράτηση αμέσως· το ξενοδοχείο καταχωρεί το έμβασμα στον πίνακα διαχείρισης όταν φτάσει.
  • Στην αποστολή της κράτησης, το Total.amountAfterTaxes πρέπει να ισούται με το ποσό που εισπράχθηκε ή θα εισπραχθεί.
Τελευταία ενημέρωση: 21 Σεπτεμβρίου 2026Βρήκατε κάποιο λάθος; Ενημερώστε μας