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ă.
/external/online/payment/typeListarea tipurilor de platăGET/external/payment/companyDatele POS-ului virtualPOST/external/online/payment/type/{paymentType}Inițierea pasului de platăListarea tipurilor de plată#
/external/online/payment/typeAutentificare: 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
hotelIDintegerobligatoriuRăspuns
200 Succes.
curl "https://test.hms.gen.tr/external/online/payment/type?hotelID=1000" \
-H "Authorization: Bearer $HMS_TOKEN"const res = await fetch("https://test.hms.gen.tr/external/online/payment/type?hotelID=1000", {
headers: {
"Authorization": `Bearer ${process.env.HMS_TOKEN}`
}
});
const data = await res.json();$ch = curl_init('https://test.hms.gen.tr/external/online/payment/type?hotelID=1000');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('HMS_TOKEN'),
],
]);
$data = json_decode(curl_exec($ch), true);{
"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#
/external/payment/companyAutentificare: 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
hotelIDintegerobligatoriuRăspuns
200 Succes.
Răspunsuri de eroare
- 200
hotel_company_info_could_not_found— niciun POS virtual configurat pentru hotel.
curl "https://test.hms.gen.tr/external/payment/company?hotelID=1000" \
-H "Authorization: Bearer $HMS_TOKEN"const res = await fetch("https://test.hms.gen.tr/external/payment/company?hotelID=1000", {
headers: {
"Authorization": `Bearer ${process.env.HMS_TOKEN}`
}
});
const data = await res.json();$ch = curl_init('https://test.hms.gen.tr/external/payment/company?hotelID=1000');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('HMS_TOKEN'),
],
]);
$data = json_decode(curl_exec($ch), true);{
"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ă#
/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
paymentTypeintegerobligatoriu13910Corpul cererii
hotelIDintegerobligatoriutotalPricedecimalorderIDstringreturnUrlstringname / surname / email / phonestringcity / addressstringcountryIDintegerid din lista de țări.baskets[]object[]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_incorrectly—countryIDnevalid;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
paymentTypenecunoscut.
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
}
]
}'const res = await fetch("https://test.hms.gen.tr/external/online/payment/type/10", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.HMS_TOKEN}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"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
}
]
})
});
const data = await res.json();$ch = curl_init('https://test.hms.gen.tr/external/online/payment/type/10');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('HMS_TOKEN'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'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,
],
],
]),
]);
$data = json_decode(curl_exec($ch), true);{
"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>"
}{
"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"
}
]
}{
"success": true,
"message": "credit_card_info_should_be_requested"
}