Plată

Listează tipurile de plată acceptate de hotel pentru rezervările online și inițiază pasul de plată pentru tipul selectat. Ce trebuie făcut pentru fiecare tip este descris în ghidul Fluxul de plată.

Listarea tipurilor de plată#

GET/external/online/payment/type

Autentificare: Authorization: Bearer

Returnează tipurile de plată activate de hotel pentru vânzarea online. ID-uri fixe ale tipurilor: 1 plată la hotel, 3 transfer bancar, 9 card de credit (datele cardului se trimit odată cu rezervarea), 10 plată online (POS virtual).

Parametri de interogare

hotelIDintegerobligatoriu
ID-ul hotelului.

Răspuns

200 Succes.

Cerere
curl "https://test.hms.gen.tr/external/online/payment/type?hotelID=1000" \
  -H "Authorization: Bearer $HMS_TOKEN"
Răspuns · 200
{
    "success": true,
    "count": 3,
    "items": [
        {
            "title": "Plată la hotel",
            "title_translate": "odeme.otelde_odeme",
            "typeID": 1
        },
        {
            "title": "Transfer bancar",
            "title_translate": "odeme.havale",
            "typeID": 3
        },
        {
            "title": "Plată online cu cardul",
            "title_translate": "odeme.online_odeme",
            "typeID": 10
        }
    ]
}

Datele POS-ului virtual#

GET/external/payment/company

Autentificare: Authorization: Bearer

Returnează furnizorul de POS virtual al hotelului și datele de comerciant. Necesar doar dacă integrați furnizorul direct în sistemul dumneavoastră; fluxul standard folosește POST …/payment/type/10. Răspunsul conține date secrete; păstrați-l exclusiv pe server.

Parametri de interogare

hotelIDintegerobligatoriu
ID-ul hotelului.

Răspuns

200 Succes.

Răspunsuri de eroare

  • 200 hotel_company_info_could_not_found — niciun POS virtual configurat pentru hotel.
Cerere
curl "https://test.hms.gen.tr/external/payment/company?hotelID=1000" \
  -H "Authorization: Bearer $HMS_TOKEN"
Răspuns · 200
{
    "success": true,
    "paymentCompany": {
        "merchant_id": "4000****",
        "store_key": "********",
        "terminal_no": "VP00****",
        "user": "demo_api",
        "password": "********",
        "max_installment": 6,
        "company_id": 3,
        "company_code": "iyzico",
        "company_name": "iyzico"
    }
}

Inițierea pasului de plată#

POST/external/online/payment/type/{paymentType}

Autentificare: Authorization: Bearer · Corp: application/json

Returnează ce trebuie făcut pentru tipul de plată selectat. Tipurile 1 și 9 necesită doar hotelID; tipul 3 listează conturile bancare; pentru tipul 10, plata se inițiază cu datele oaspetelui și ale coșului, iar code (HTML) returnat se afișează în pagina oaspetelui, pentru trecerea la ecranul de plată al furnizorului.

Parametri de cale

paymentTypeintegerobligatoriu
ID-ul tipului de plată.
13910

Corpul cererii

hotelIDintegerobligatoriu
ID-ul hotelului.
totalPricedecimal
Obligatoriu pentru tipul 10. Suma totală de încasat.
orderIDstring
Obligatoriu pentru tipul 10. Numărul comenzii/rezervării în sistemul dumneavoastră.
returnUrlstring
Obligatoriu pentru tipul 10. URL-ul la care revine oaspetele după plată.
name / surname / email / phonestring
Obligatoriu pentru tipul 10. Datele plătitorului.
city / addressstring
Obligatoriu pentru tipul 10. Adresa de facturare.
countryIDinteger
Obligatoriu pentru tipul 10. id din lista de țări.
baskets[]object[]
Obligatoriu pentru tipul 10, cel puțin un element. Fiecare element: id, name, piece, price.

Răspuns

200 Tipul 10: code conține un fragment HTML care face trecerea la furnizorul de plăți (un formular trimis automat, un script window.location sau un formular de plată încorporat, în funcție de furnizor). Afișați-l ca atare în browserul oaspetelui. Pentru celelalte tipuri, câmpul message indică ce trebuie făcut.

Răspunsuri de eroare

  • 200 required_input_info_not_submitted (+ errors[]) — lipsește un câmp pentru tipul 10; country_info_sent_incorrectlycountryID nevalid; there_is_missing_info_in_the_shopping_cart — lipsește un câmp dintr-un element al coșului; bank_info_is_not_found — niciun cont bancar configurat pentru tipul 3.
  • 404 paymentType necunoscut.
Cerere
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,
    "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": "Cameră Standard · Mic dejun inclus",
            "piece": 1,
            "price": 1930
        },
        {
            "id": 12,
            "name": "Cină",
            "piece": 1,
            "price": 400
        }
    ]
}'
Răspuns · 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>"
}
Răspuns · 200 (tipul 3, transfer bancar)
{
    "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"
        }
    ]
}
Răspuns · 200 (tipul 1 / tipul 9)
{
    "success": true,
    "message": "credit_card_info_should_be_requested"
}
Ultima actualizare: 21 septembrie 2026Ați găsit o greșeală? Anunțați-ne