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

Parameters
  • bookingNumber query (string, required),

    Mã tham chiếu đến booking

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ặc HOTEL tương ứng với loại sản phẩm được mua

    • total_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ặc HOTEL tương ứng với loại sản phẩm được mua

Response

Code 200

OK

Model
  • 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ặc HOTEL tương ứng với loại sản phẩm được mua

    • properties (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

Parameter
  • booking_number (String, Required)

    Mã tham chiếu đến booking

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ước

      • INTE: 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ông

      • FAILED: 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án

      • SUCCEEDED: Thanh toán thành công

      • FAILED: Thanh toán thất bại

      • REFUNDED: 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 booking

      • BOOKING_ON_PROCESS: Booking đang được xử lý

      • BOOKED: Booking đã được xác nhận

      • FAILED: Booking thất bại

      • EXPIRED: Booking hết hạn

      • CANCELLED: 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ông

        • FAILED: 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 booking

        • BOOKING_ON_PROCESS: Booking đang được xử lý

        • BOOKED: Booking đã được xác nhận

        • FAILED: Booking thất bại

        • EXPIRED: Booking hết hạn

        • CANCELLED: 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ước

    • INTE: 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