Payment API
1. API xác nhận voucher
GET: /api/payments/voucher/validate
Validate voucher cho booking cụ thể
Request Body
Model
Request Body
bookingNumber (String, Required)
Mã định danh booking
voucherCode (String, Required)
Mã giảm giá
Example
Response
Code 200
OK
Model
Model
Chỉ định danh những trường/field cần thiết
bookingNumber (String)
Mã định dang booking
discountAmount (Double)
Số tiền giảm
trackingCode (String)
Mã định danh cho booking có voucher
voucherCode (String)
Mã giảm giá
voucherValid (Boolean)
Mã giảm giá hợp lệ
duration (Integer, Optional),
errors (Array[Error], Optional),
infos (Array[Info], Optional),
success (Boolean, Optional),
textMessage (String, Optional)
2. API xác nhận sử dụng voucher
GET: /api/payments/voucher/redeem
Redeem voucher cho booking cụ thể
Request Body
Model
Request Body
bookingNumber (String, Required)
Mã định danh booking
voucherCode (String, Required)
Mã giảm giá
trackingCode (String, Required)
Mã tracking sử dụng ở api validate
Example
Response
Code 200
OK
Model
Model
Chỉ định danh những trường/field cần thiết
bookingNumber (String)
Mã định dang booking
redeemValid (Boolean)
Xác nhận sử dụng voucher thành công
voucherCode (String)
Mã giảm giá
duration (Integer, Optional),
errors (Array[Error], Optional),
infos (Array[Info], Optional),
success (Boolean, Optional),
textMessage (String, Optional)
3. API Yêu cầu thanh toán booking
GET: /api/partner/place-order
Yêu cầu thanh toán booking - khởi tạo payment order
Chú ý
Yêu cầu bảo mật: Mã hóa dữ liệu và kèm theo chữ ký điện tử
Request: Không yêu cầu phải được mã hóa và kèm theo chữ ký điện tử
Response: Một phần dữ liệu của respond được yêu cầu phải mã hóa và kèm theo chữ ký điện tử
Parameters
Response
Code 200
OK
Model
Model
result (String, optional),
Thông tin trả về dưới định dạng:
<payment_url>?key=<encrypted_key>?data=<encrypted_data>
Signature data schema:
<access_code>|<booking_number>|<product_type>|<total_amount>
Original data schema:
<access_code>|<booking_number>|<product_type>|<signature>|<total_amount>
access_code (String, required)
Access code do Gotadi cung cấp cho Đối tác.
bookingNumber (String, optional)
Mã dùng tham chiếu đến booking
product_type (String, optional)
Loại sản phẩm, có giá trị là
AIR
hoặcHOTEL
tương ứng với loại sản phẩm được muatotal_amount (String, optional)
Tổng số tiền phải thanh toán
payment_url (String, required)
Đường dẫn đến trang thanh toán
encrypted_key (String, required)
Key giải mã dữ liệu (đã được mã hóa). Cách giải mã tham khảo mục: Mã hóa dữ liệu truyền và xác thực chữ ký điện tử
encrypted_data (String, required)
Dữ liệu kèm theo chữ ký điện tử (đã được mã hóa). Cách giải mã tham khảo mục: Mã hóa dữ liệu truyền và xác thực chữ ký điện tử
duration (integer, optional),
errors (Array[Error], optional),
infos (Array[Info], optional),
success (boolean, optional),
textMessage (string, optional)
4. API Ghi nhận thanh toán và commit booking
POST: /api/partner/commit
Yêu cầu commit booking được cập nhật đầy đủ thông tin và hoàn tất thanh toán
Chú ý
Yêu cầu bảo mật: Mã hóa dữ liệu và kèm theo chữ ký điện tử
Request: Không yêu cầu phải được mã hóa và kèm theo chữ ký điện tử
Response: Một phần dữ liệu của response được yêu cầu phải mã hóa và kèm theo chữ ký điện tử
Request Body
Model
Model
key (string, required),
Key giải mã dữ liệu (đã được mã hóa). Cách giải mã tham khảo mục: Mã hóa dữ liệu truyền và xác thực chữ ký điện tử
data (string, required),
Dữ liệu kèm theo chữ ký điện tử (đã được mã hóa). Cách giải mã tham khảo mục: Mã hóa dữ liệu truyền và xác thực chữ ký điện tử
Signature data schema:
<access_code>|<booking_number>|<partner_trans_id>|<product_type>
Original data schema:
<access_code>|<booking_number>|<partner_trans_id>|<product_type>|<signature>
access_code (String, required)
Access code do Gotadi cung cấp cho Đối tác.
bookingNumber (String, required)
Mã dùng tham chiếu đến booking
partner_trans_id (String, optional)
Mã định danh giao dịch của đối tác. Nếu đối tác không truyền giá trị cho trường này, giá trị mặc định sẽ được gán bằng booking_number
product_type (String, required)
Loại sản phẩm, có giá trị là
AIR
hoặcHOTEL
tương ứng với loại sản phẩm được mua
Response
Code 200
OK
Model
key (String, required)
Key giải mã dữ liệu (đã được mã hóa). Cách giải mã tham khảo mục: Mã hóa dữ liệu truyền và xác thực chữ ký điện tử
data (String, required)
Dữ liệu kèm theo chữ ký điện tử (đã được mã hóa). Cách giải mã tham khảo mục: Mã hóa dữ liệu truyền và xác thực chữ ký điện tử
Signature data schema:
<access_code>|<booking_number>|<error_code>|<product_type>|<properties>|<return_url>|<total_amount>
Original data schema:
<access_code>|<booking_number>|<error_code>|<product_type>|<properties>|<return_url>|<signature>|<total_amount>
access_code (String, required)
Access code do Gotadi cung cấp cho Đối tác.
booking_number (String, required)
Mã dùng tham chiếu đến booking
error_code (String, required) Mã lỗi
product_type (String, optional)
Loại sản phẩm, có giá trị là
AIR
hoặcHOTEL
tương ứng với loại sản phẩm được muaproperties (String, optional)
Các thông tin mở rộng trả về cho đối tác.
Json string
return_url (String, optional)
Trang hiển thị kết quả giao dịch của Gotadi. Sử dụng trong trường hợp đối tác không tự xây dựng trang hiển thị kết quả cuối cùng.
total_amount (Double, required)
Tổng số tiền phải thanh toán.
5. API lấy chi tiết booking sau khi xuất vé
GET: /api/products/final-booking-detail
Mô tả:
API được tối ưu hóa để lấy trạng thái booking sử dụng trong quy trình thanh toán (cách sử dụng tương tự như API (booking-detail). API này bổ sung thêm tính năng xử lý giữa các trường hợp thành công và thất bại.
Cụ thể, trong trường hợp thành công (happy case), API sẽ ngay lập tức trả về kết quả. Trong trường hợp thất bại (failure case), API sẽ tự động thử lại để lấy trạng thái mới nhất của booking và trả về kết quả đến khi hết thời gian đặt sẵn.
Parameter
Response
Code 200
OK
Model
Model
Chỉ định danh những trường/field cần thiết
id (String, Optional),
Mã định danh chi tiết booking
agencyCode (String, Optional),
Mã đại lý. Mã dùng tham chiếu đến tác giả của booking
agentCode (String, Optional),
Mã nhân viên đại lý. Mã dùng tham chiếu đến tác giả của booking
bookingCode (String, Optional),
Mã dùng mô tả các thông tin cơ bản của booking
bookingDate (String, Optional),
Ngày tạo booking
bookingInfo (BookingInfo, Optional),
Thông tin booking
additionalFee (Number, Optional),
Các khoản phí khác
agencyCode (String, Optional),
Mã đại lý. Mã dùng tham chiếu đến tác giả của booking
agentCode (String, Optional),
Mã nhân viên đại lý. Mã dùng tham chiếu đến tác giả của booking
agentId (Integer, Optional),
Id nhân viên đại lý
agentName (String, Optional),
Tên nhân viên đại lý
allowHold (Boolean, Optional),
Cho phép giữ vé máy bay hay không
true
: cho phép giữ véfalse
: Không cho phép giữ vébaseFare (Number, Optional),
Giá phòng chưa bao gồm thuế phí
bookBy (String, Optional),
Người đặt booking
bookByCode (String, Optional),
Mã người đặt
bookingCode (String, Optional),
Mã dùng mô tả các thông tin cơ bản của booking
bookingDate (String, Optional),
Ngày tạo booking
bookingNote (String, Optional),
Ghi chú của booking
bookingNumber (String, Optional),
Mã dùng tham chiếu đến booking. Mã này là duy nhất.
bookingType (String, Optional) = [‘DOME’, ‘INTE’],
Xác định điểm đến là trong nước hay quốc tế
DOME
: Trong nướcINTE
: Quốc tế
branchCode (String, Optional),
Mã chi nhánh
cancellationBy (String, Optional),
Hủy vé bởi …
cancellationDate (String, Optional),
Ngày hủy vé
cancellationFee (Number, Optional),
Phí hủy đặt phòng
cancellationNotes (String, Optional),
Ghi chú hủy
channelType (String, Optional) = [‘ONLINE’, ‘OFFLINE’],
Loại kênh đặt phòng
contactInfos (Array[BookingContactInfo], Optional),
Mảng đối tượng chứ thông tin người liên hệ
bookingNumber (String, Optional),
Mã tham chiếu đến booking
contactLevel (String, Optional) = [‘PRIMARY’, ‘SECONDARY’, ‘OTHER’],
Cấp của người liên hệ
contactType (String, Optional) = [‘CUSTOMER’, ‘AGENCY’],
Loại của người liên hệ
email (String, Optional),
Địa chỉ email
firstName (String, Optional),
Tên đêm và tên người liên hệ
phoneCode1 (String, Optional),
Mã quốc gia
phoneNumber1 (String, Optional),
Số điện thoại 1
surName (String, Optional)
Họ người liên hệ
customerCode (String, Optional),
Mã khách hàng
customerEmail (String, Optional),
Email của khách hàng
customerFirstName (String, Optional),
Họ của khách hàng
customerId (Integer, Optional),
Id của khách hàng
customerLastName (String, Optional),
Tên của khách hàng
customerPhoneNumber1 (String, Optional),
Số điện thoại 1 của khách hàng
customerPhoneNumber2 (String, Optional),
Số điện thoại 2 của khách hàng
departureDate (String, Optional),
Ngày khởi hành
discountAmount (Number, Optional),
Số tiền được giảm
discountDate (String, Optional),
Ngày sử dụng mã giảm giá
discountRedeemCode (String, Optional),
Mã liên kết đổi thưởng
discountRedeemId (String, Optional),
Id định danh liên kết đổi thường
discountVoucherCode (String, Optional),
Mã voucher
discountVoucherName (String, Optional),
Tên voucher
equivFare (Number, Optional),
Phí xuất vé
etickets (String, Optional),
Mã liên kết với nhà cung cấp, được sử dụng để nhận vé máy bay
fromCity (String, Optional),
Tên thành phố khởi hành
fromLocationCode (String, Optional),
Mã định danh sân bay khởi hành
fromLocationName (String, Optional),
Tên sân bay khởi hành
id (integer, Optional),
Id của booking
issuedByCode (String, Optional),
Xuất vé bởi …
issuedDate (String, Optional),
Ngày xuất phòng
issuedStatus (String, Optional) = [‘PENDING’, ‘TICKET_ON_PROCESS’, ‘SUCCEEDED’, ‘FAILED’],
Trạng thái xuất vé
PENDING
: Đợi xuất véTICKET_ON_PROCESS
: Xuất vé đang được xử lýSUCCEEDED
: Xuất vé thành côngFAILED
: Xuất vé thất bại
orgCode (String, Optional),
Mã tổ chức
passengerNameRecords (String, Optional),
Mã liên kết với nhà cung cấp, được sử dụng để nhận vé máy bay
paymentBy (String, Optional),
Thanh toán bởi …
paymentByCode (String, Optional),
Mã người thanh toán
paymentDate (String, Optional),
Thời gian thanh toán
paymentFee (Number, Optional),
Phí thanh toán
paymentRefNumber (String, Optional),
Mã tham chiếu thanh toán
paymentStatus (String, Optional) = [‘SUCCEEDED’, ‘FAILED’, ‘REFUNDED’, ‘PENDING’],
Trạng thái thanh toán
PENDING
: Chờ thanh toánSUCCEEDED
: Thanh toán thành côngFAILED
: Thanh toán thất bạiREFUNDED
: Hoàn tiền
paymentTotalAmount (Number, Optional),
Tổng số tiền thanh toán
paymentType (String, Optional) = [‘BALANCE’, ‘CREDIT’, ‘ATM_DEBIT’, ‘AIRPAY’, ‘VNPAYQR’, ‘VIETTELPAY’, ‘MOMO’, ‘ZALO’, ‘PAYOO’, ‘CASH’, ‘TRANSFER’, ‘PARTNER’, ‘OTHER’],
Hình thức thanh toán
refundBy (String, Optional),
Người hoàn trả
refundByCode (String, Optional),
Mã của người thực hiện hoàn trả
refundable (Boolean, Optional),
Ngày hoàn trả
returnDate (String, Optional),
Ngày trả phòng
roundType (String, Optional) = [‘RoundTrip],
saleChannel (String, Optional) = [‘B2B’, ‘B2C’, ‘B2B2C’, ‘B2C_WEB’, ‘B2C_WEB_APP’, ‘B2C_MOBILE’],
Kênh phân phối
serviceTax (Number, Optional),
Thuế và phí
status (String, Optional) = [‘PENDING’, ‘BOOKING_ON_PROCESS’, ‘BOOKED’, ‘FAILED’, ‘CANCELLED’, ‘EXPIRED’],
Trạng thái của booking
PENDING
: Chờ xác nhận bookingBOOKING_ON_PROCESS
: Booking đang được xử lýBOOKED
: Booking đã được xác nhậnFAILED
: Booking thất bạiEXPIRED
: Booking hết hạnCANCELLED
: Booking đã bị hủy
supplierType (String, Optional) = [‘AIR’, ‘HOTEL’, ‘TOURS’, ‘TRAIN’, ‘SHIP’, ‘OTHER’],
Loại nhà cung cấp
taxAddress1 (String, Optional),
Địa chỉ xuất hóa đơn dòng 1
taxAddress2 (String, Optional),
Địa chỉ xuất hóa đơn dòng 2
taxCompanyName (String, Optional),
Tên công ty xuất hóa đơn
taxNumber (String, Optional),
Mã số thuế cần xuất hóa đơn
taxPersonalInfoContact (String, Optional),
Người nhận hóa đơn
taxReceiptRequest (Boolean, Optional),
Yêu cầu xuất hóa đơn hay không
timeToLive (String, Optional),
Thời gian chờ thanh toán, sau thời gian này trạng thái của booking sẽ chuyển sang
EXPIRED
toCity (String, Optional),
Tên tỉnh, thành phố điểm đến
toLocationCode (String, Optional),
Mã định danh điểm đến
toLocationName (String, Optional),
Tên sân bay điểm đến
totalFare (Number, Optional),
Tổng giá phòng
totalSsrValue (Number, Optional),
Tổng giá hành lý / dịch vụ thêm
totalTax (Number, Optional),
Tổng số tiền thuế phí
transactionInfos (Array[BookingTransactionInfo], Optional),
Mảng đối tượng chứa thông tin giao dịch
id (integer, Optional),
Id định danh giao dịch
allowHold (Boolean, Optional),
Cho phép giữ vé hay không
bookingCode (String, Optional),
Mã dùng mô tả các thông tin cơ bản của booking
bookingDate (String, Optional),
Ngày tạo booking
bookingDirection (String, Optional) = [‘DEPARTURE’, ‘RETURN’],
bookingNumber (String, Optional),
Mã dùng tham chiếu đến booking.
bookingRefNo (String, Optional),
Mã liên kết với nhà cung cấp
channelType (String, Optional) = [‘ONLINE’, ‘OFFLINE’],
Loại kênh bán
checkIn (String, Optional),
Ngày giờ bay
checkOut (String, Optional),
Ngày giờ đến
destinationLocationCode (String, Optional),
Mã định danh sân bây
detail (String, Optional),
Tên khách sạn
etickets (String, Optional),
Mã liên kết với nhà cung cấp, được sử dụng để nhận vé
issuedDate (String, Optional),
Ngày xuất vé
issuedStatus (String, Optional) = [‘PENDING’, ‘TICKET_ON_PROCESS’, ‘SUCCEEDED’, ‘FAILED’],
Trạng thái xuất vé
PENDING
: Đợi xuất véTICKET_ON_PROCESS
: Xuất vé đang được xử lýSUCCEEDED
: Xuất vé thành côngFAILED
: Xuất vé thất bại
noAdult (integer, Optional),
Số người lớn
noChild (integer, Optional),
Số trể em
onlyPayLater (Boolean, Optional),
Cho phép trả sau hay không
passengerNameRecord (String, Optional),
Mã liên kết với nhà cung cấp, được sử dụng để nhận vé
paymentAmount (Number, Optional),
Số tiền thanh toán
productSeqNumber (String, Optional),
Mã sản phẩm
refundable (Boolean, Optional),
Có hoàn tiền khi hủy vé hay không
saleChannel (String, Optional) = [‘B2B’, ‘B2C’, ‘B2B2C’, ‘B2C_WEB’, ‘B2C_WEB_APP’, ‘B2C_MOBILE’],
Kênh phân phối
serviceTax (Number, Optional),
Thuế và phí
status (String, Optional) = [‘PENDING’, ‘BOOKING_ON_PROCESS’, ‘BOOKED’, ‘FAILED’, ‘CANCELLED’, ‘EXPIRED’],
Trạng thái của booking
PENDING
: Chờ xác nhận bookingBOOKING_ON_PROCESS
: Booking đang được xử lýBOOKED
: Booking đã được xác nhậnFAILED
: Booking thất bạiEXPIRED
: Booking hết hạnCANCELLED
: Booking đã bị hủy
supplierCode (String, Optional),
Mã nhà cung cấp
supplierName (String, Optional),
Tên nhà cung cấp
supplierType (String, Optional) = [‘AIR’, ‘HOTEL’, ‘TOURS’, ‘TRAIN’, ‘SHIP’, ‘OTHER’]
Loại sản phẩm
totalFare (Number, Optional),
Tổng giá vé
totalTax (Number, Optional)
Tổng thuế và phí
baseFare (Number, Optional),
Giá vé không bao gồm thuế phí
travelerInfos (Array[BookingTravelerInfo], Optional),
Mảng đối tượng chứa thông tin hành khách.
bookingNumber (String),
Mã tham chiếu đến booking
firstName (String),
Tên đêm và tên hành khách
surName (String)
Họ của hành khách
bookingNumber (String, Optional),
Mã dùng tham chiếu đến booking. Mã này là duy nhất.
bookingType (String, Optional),
Xác định điểm đến là trong nước hay quốc tế
DOME
: Trong nướcINTE
: Quốc tế
branchCode (String, Optional),
Mã chi nhánh
cacheType (String, Optional) = [‘COMBO’],
Mã khách hàng
groupPricedItineraries (Array[GroupPricedItinerary], Optional),
Thông tin danh sách hành trình trả về theo kết quả tìm kiếm
Tương tự như lấy thông tin tìm kiếm vé máy bay
orgCode (String, Optional),
Mã tổ chức
saleChannel (String, Optional) = [‘B2B’, ‘B2C’, ‘B2B2C’, ‘B2C_WEB’, ‘B2C_WEB_APP’, ‘B2C_MOBILE’],
Kênh phân phối
supplierType (String, Optional) = [‘AIR’, ‘HOTEL’, ‘TOURS’, ‘TRAIN’, ‘SHIP’, ‘OTHER’],
Loại nhà cung cấp
Last updated