Bỏ qua để đến nội dung

Môi trường

7 phút đọc

Ferry cung cấp hai môi trường vận hành: Production phục vụ khách hàng thực tế và UAT dành cho đối tác thử nghiệm tích hợp. Trang này giải thích sự khác biệt giữa hai môi trường, các lưu ý quan trọng khi kiểm thử và danh sách hãng tàu hỗ trợ xuất vé tự động.

Hệ thống của đối tác kết nối tới Ferry qua hai môi trường với thông số như sau:

Môi trườngMục đích sử dụngĐịa chỉ kết nối (Base URL)Đặc tả OpenAPI
ProductionVận hành thực tế cho khách hànghttps://api.ferry.vnhttps://api.ferry.vn/docs
UATThử nghiệm tích hợp hệ thốngNhận bằng văn bản từ Ferry/docs trên tên miền UAT

Một số nguyên tắc cấu hình cần ghi nhớ:

  • Tiền tố phiên bản: Toàn bộ route gọi nghiệp vụ có định dạng /api/v1/<tên-tài-nguyên>.
  • Tài liệu OpenAPI: Cổng Scalar tương tác được đặt trực tiếp tại đường dẫn /docs (không kèm tiền tố /api). Mở /docs trên tên miền nào sẽ xem tài liệu tương ứng của môi trường đó.
  • Xác nhận base URL UAT: Do hạ tầng kiểm thử có thể cập nhật tên miền, đối tác cần liên hệ đội ngũ kỹ thuật Ferry để nhận base URL chính thức trước khi triển khai.

Điểm cốt lõi đối tác cần đặc biệt lưu ý: Ferry không có môi trường sandbox giả lập. Môi trường UAT là hệ thống chạy thật thứ hai, kết nối trực tiếp với cổng đặt vé của các hãng tàu.

Sơ đồ dưới đây cho thấy luồng xử lý đơn hàng giữa môi trường thử nghiệm và hãng tàu:

flowchart TB
PROD["Môi trường Production<br/>api.ferry.vn"]
UAT["Môi trường UAT<br/>Kiểm thử tích hợp"]
CHECK{"Lệnh xác nhận xuất vé<br/>confirmToIssue"}
PROD --> CHECK
UAT --> CHECK
CHECK -->|"Xác nhận"| REAL["Gọi cổng đặt vé hãng tàu<br/>Đặt vé thật"]
REAL --> MONEY["Trừ tiền thật trong tài khoản đại lý"]
CHECK -->|"Chỉ tạo booking"| SAFE["Giữ chỗ tạm thời<br/>Không mất phí"]

Hệ quả khi kiểm thử trên UAT:

  • Vé thật và tiền thật: Mỗi lần gọi lệnh xác nhận xuất vé (POST /api/v1/bookings/confirmToIssue/:id) trên UAT, hệ thống sẽ thực hiện đặt vé thật trên hệ thống của hãng tàu và trừ tiền trực tiếp trên tài khoản ký quỹ của đại lý.
  • Ngoại lệ hãng CangSaKy: Hãng CangSaKy kết nối trực tiếp vào hệ thống hãng và luôn tạo đơn thật bất kể cấu hình chặn thử nghiệm. Vé thử nghiệm của CangSaKy luôn phát sinh chi phí ngay lập tức.
  • Quy trình huỷ vé: Muốn huỷ các vé đã phát sinh trong quá trình thử nghiệm, bạn phải tuân thủ đúng quy trình huỷ vé và chịu phí phạt huỷ theo quy định của hãng tàu.
  • Thử nghiệm an toàn: Trong giai đoạn tích hợp ban đầu, đối tác nên dừng lại ở bước tạo booking giữ chỗ (POST /api/v1/bookings) để kiểm tra dữ liệu mà không tốn phí. Chỉ gọi lệnh xác nhận xuất vé khi đã thống nhất trước với Ferry về chuyến tàu và chi phí thử nghiệm.

Khả năng xuất vé tự động của các hãng tàu

Phần tiêu đề “Khả năng xuất vé tự động của các hãng tàu”

Hệ thống Ferry tích hợp 13 hãng tàu phục vụ tra cứu chuyến và giá vé. Tuy nhiên, khả năng tự động hoá xuất vé điện tử qua API có sự khác biệt giữa các hãng:

Hãng tàuKhả năng tra cứuXuất vé tự động qua APILưu ý vận hành
ChanKhaLuxuryHỗ trợHỗ trợ tự độngXuất vé trực tiếp qua API
GreenlinesHỗ trợHỗ trợ tự độngXuất vé trực tiếp qua API
HoaBinhShipHỗ trợHỗ trợ tự độngXuất vé trực tiếp qua API
Lightning68Hỗ trợHỗ trợ tự độngXuất vé trực tiếp qua API
MaiLinhExpressHỗ trợHỗ trợ tự độngXuất vé trực tiếp qua API
PhuQuocExpressHỗ trợHỗ trợ tự độngXuất vé trực tiếp qua API
PhuQuyExpressHỗ trợHỗ trợ tự độngXuất vé trực tiếp qua API
SuperDongHỗ trợHỗ trợ tự độngXuất vé trực tiếp qua API
CangSaKyHỗ trợHỗ trợ tự độngKết nối trực tiếp hệ thống hãng
BinhAnHaTienHỗ trợChưa hỗ trợChỉ tra cứu lịch và giá
ThanhThoiHỗ trợChưa hỗ trợChỉ tra cứu lịch và giá
HangChauTouristHỗ trợChưa hỗ trợChỉ tra cứu lịch và giá
SaiGonWaterGoHỗ trợChưa hỗ trợChỉ tra cứu lịch và giá

Đối với 4 hãng tàu chưa hỗ trợ xuất vé tự động, lệnh xác nhận xuất vé sẽ trả về lỗi tính năng chưa được hỗ trợ. Phía đối tác nên chủ động lọc hoặc cảnh báo trên giao diện người dùng đối với các chuyến tàu thuộc nhóm này.

Đặc điểmMôi trường UATMôi trường ProductionKhuyến nghị cho đối tác
Dữ liệu kiểm thửHệ thống ghi log chi tiết payload để hỗ trợ gỡ lỗiGhi log bảo mật theo chuẩnTuyệt đối không dùng thông tin cá nhân nhạy cảm của khách hàng thật trên UAT
Cổng kết nối hãngĐăng nhập của 11 hãng tàu có thể tạm tắt để tránh can thiệpMở kết nối toàn bộ hãng theo hợp đồngBáo trước cho Ferry nếu bạn cần kiểm thử một hãng tàu cụ thể trên UAT (tránh lỗi tra chuyến trả về rỗng)
Chữa công nợTiến trình đối soát công nợ chỉ chạy thử (dry-run)Tự động đối soát và bù trừ số liệuLệch số dư trên UAT sau khi thử nghiệm sẽ không tự động phục hồi
Định dạng API keyChuỗi khoá cấu hình theo môi trường, hình thức tương tự ProductionChuỗi khoá cấu hình theo môi trường ProductionTách riêng cấu hình biến môi trường của hai hệ thống để tránh gọi nhầm
Dữ liệu vé thử nghiệmXuất vé thật, cần chọn chuyến giá thấp để thửXuất vé thương mại cho khách hàngChỉ thử luồng xuất vé khi có sự giám sát và thống nhất chi phí giữa hai bên
Lưu xác thực trên ScalarKhông lưu khoá qua các lần tải lại trangKhông lưu khoá qua các lần tải lại trangCần dán lại API key vào nút Authorize sau mỗi lần tải lại trình duyệt
Hiểu nhầmThực tếCách xử lý đúng
Cho rằng UAT là môi trường giả lập không tốn tiềnUAT đặt vé thật trên hệ thống hãng tàuKhông đưa luồng xuất vé vào các bài kiểm thử tự động lặp lại
Dùng chung một API key cho cả UAT và ProductionMỗi môi trường có cơ sở dữ liệu và danh sách key riêng biệtLưu trữ hai bộ khoá riêng biệt trong cấu hình máy chủ
Nghĩ rằng mọi hãng tra cứu được đều xuất vé tự động được4 hãng tàu chỉ hỗ trợ tra cứu chuyến và giáKiểm tra danh sách hãng hỗ trợ trước khi mở bán cho khách
Đưa thông tin khách hàng thật lên UATUAT bật chế độ ghi log chi tiết payloadChỉ sử dụng dữ liệu hành khách giả lập trên môi trường kiểm thử
Tra chuyến trên UAT trả về rỗng là do hết chuyếnĐăng nhập hãng tàu có thể đang bị tắt trên UATLiên hệ Ferry để mở kết nối cho hãng cần thử nghiệm

Mỗi môi trường sở hữu cổng tài liệu OpenAPI độc lập. Để tra cứu schema và gọi thử endpoint tương ứng:

Mục tiêu tra cứuCổng tài liệu
Tra cứu schema và thử nghiệm trên ProductionScalar UI — Ferry VN API
Tra cứu schema và thử nghiệm trên UATMở /docs trên tên miền UAT được cấp
TrangNội dung nên đọc tiếp
Xác thực bằng API keyQuy chuẩn truyền khoá và quản lý API key giữa các môi trường
Bắt đầu: từ số 0 tới booking đầu tiên10 bước kiểm thử an toàn trên môi trường UAT
Xuất véChi tiết quy trình xử lý xuất vé điện tử với các hãng tàu
Trước khi chạy thậtChecklist kiểm tra kỹ thuật trước khi chuyển sang Production