API thanh toán du lịch
API cổng thanh toán cho đặt chỗ du lịch: từ thanh toán đến hoàn tiền
API cổng thanh toán giúp website đặt chỗ của bạn nhận tiền của khách mà không bao giờ chạm vào thẻ. Trang này đi qua các lệnh gọi của một lần thanh toán thẻ, các trạng thái nó trải qua, vì sao thanh toán du lịch khó hơn bán lẻ và cách PHPTRAVELS kết nối luồng đặt chỗ của bạn với cổng thanh toán bạn chọn.
- Phiên, 3-D Secure, capture
- Mọi trạng thái thanh toán
- Thẻ, ví, ngân hàng, tín dụng
- Không có dữ liệu thẻ trên máy chủ của bạn
Các lệnh gọi hoạt động thế nào
Một lần thanh toán thẻ, từng lệnh gọi một
API cổng thanh toán là tập hợp dịch vụ web mà công ty thanh toán mở cho người bán. Máy chủ của bạn yêu cầu tạo một khoản thanh toán với số tiền và loại tiền tệ, khách nhập thẻ vào biểu mẫu của chính cổng thanh toán, rồi cổng trao đổi với tổ chức thẻ và ngân hàng phát hành. Máy chủ của bạn không bao giờ thấy số thẻ; nó chỉ nhận lại ID thanh toán và trạng thái.
Có bốn bên tham gia. Sơ đồ thể hiện mỗi bên là một cột và mỗi thông điệp là một mũi tên đánh số. Tên gọi khác nhau giữa các cổng (payment intent, phiên, đơn hàng, khoản thu), nhưng trình tự thì giống nhau.

Mũi tên nét đứt là webhook: cổng tự gọi đến máy chủ của bạn, nhờ đó thanh toán vẫn cập nhật đặt chỗ ngay cả khi khách đã đóng trình duyệt. Trang Tích hợp cổng thanh toán giải thích mỗi bước được gắn với một đặt chỗ trong PHPTRAVELS ra sao.
- Khách
- Website của bạn
- Cổng thanh toán
- Tổ chức thẻ / ngân hàng
01Thanh toánKhách Website của bạn
Khách xem lại chuyến đi và nhấn Thanh toán. Đặt chỗ được giữ tại nhà cung cấp, chưa xác nhận.
02Tạo payment intent hoặc phiênWebsite của bạn Cổng thanh toán
Máy chủ của bạn gửi số tiền, loại tiền, mã đặt chỗ và khóa idempotency cùng khóa API bí mật. Cổng trả về một ID thanh toán.
03Hosted fields hoặc chuyển hướngCổng thanh toán Khách
Biểu mẫu thẻ do cổng cung cấp, nằm trong trang của bạn hoặc trên trang riêng của cổng, nên dữ liệu thẻ đi thẳng đến cổng.
043-D SecureTổ chức thẻ / ngân hàng Khách
Nếu ngân hàng phát hành yêu cầu, khách xác nhận thanh toán trong ứng dụng ngân hàng hoặc bằng mã dùng một lần.
05Ủy quyềnCổng thanh toán Tổ chức thẻ / ngân hàng
Cổng yêu cầu ngân hàng phát hành phê duyệt số tiền thông qua tổ chức thẻ.
06Đã duyệt, tiền được giữTổ chức thẻ / ngân hàng Cổng thanh toán
Ngân hàng phát hành giữ tiền trên thẻ. Chưa có khoản tiền nào được chuyển đi.
07Kết quả gửi về websiteCổng thanh toán Website của bạn
Khách quay lại website của bạn cùng ID thanh toán. Máy chủ đọc trạng thái từ API và xác nhận đặt chỗ với nhà cung cấp.
08CaptureWebsite của bạn Cổng thanh toán
Khi nhà cung cấp xác nhận, máy chủ của bạn capture toàn bộ hoặc một phần số tiền. Nhiều cổng cũng có thể capture ngay.
09WebhookCổng thanh toán Website của bạnDo cổng thanh toán tự gửi
Cổng gửi một sự kiện có chữ ký (đã capture, đã hoàn tiền, bị khiếu nại) đến endpoint của bạn. Máy chủ kiểm tra chữ ký và cập nhật đặt chỗ.
Trạng thái thanh toán
Vòng đời một khoản thanh toán như một máy trạng thái
Mỗi API cổng thanh toán đều báo một trạng thái cho từng khoản thanh toán. Cách gọi khác nhau, nhưng đều quy về cùng vài trạng thái, và logic đặt chỗ của bạn cần xử lý từng trạng thái đó.
created
Đã tạo
Khoản thanh toán đã có số tiền và loại tiền tệ, đang chờ khách.
failedKết thúc
Thất bại
Bị từ chối, 3-D Secure không hoàn tất hoặc bị bỏ dở. Không bị tính phí.
authorized
Đã ủy quyền
Ngân hàng phát hành đã duyệt số tiền và đang giữ trên thẻ.
voidedKết thúc
Đã hủy (void)
Khoản giữ tiền bị hủy trước khi capture, nên khách không bao giờ bị tính phí.
captured
Đã capture
Tiền đã được thu và sẽ được quyết toán vào tài khoản người bán của bạn.
partially_refundedKết thúc
Hoàn tiền một phần
Một phần số tiền đã capture được trả lại, ví dụ sau khi trừ phí hủy.
refundedKết thúc
Đã hoàn tiền
Toàn bộ số tiền đã capture được trả về thẻ.
Một ủy quyền không có hiệu lực mãi mãi: nếu không được capture đúng hạn, khoản giữ tiền hết hạn và ngân hàng giải phóng số tiền. Khoản thanh toán đã hoàn một phần vẫn có thể hoàn tiếp, tối đa bằng số tiền đã capture.
Vì sao du lịch khó hơn
Vì sao thanh toán du lịch khác biệt
Cửa hàng bán thứ mình có sẵn trong kho. Người bán du lịch nhận tiền cho một đặt chỗ mà nhà cung cấp vẫn phải xác nhận, thường là nhiều tháng trước chuyến đi. API thanh toán phải phù hợp với điều đó.
01
Ủy quyền trước, capture sau
Khách sạn theo yêu cầu, giá đoàn và tour được xác nhận sau đơn hàng vài giờ hoặc vài ngày. Ủy quyền trước rồi capture khi được xác nhận nghĩa là không tính phí cho đặt chỗ không thành.
02
Nhà cung cấp vẫn có thể từ chối
Giá vé có thể hết giữa lúc thanh toán và xuất vé. Với ủy quyền, tiền được giải phóng bằng void; sau khi capture, nó trở thành hoàn tiền.
03
Hoàn tiền một phần sau phí hủy
Hủy lưu trú hoặc vé thường giữ lại một khoản phí. Lệnh hoàn tiền gửi số tiền thấp hơn trên khoản thanh toán gốc, bao nhiêu lần tùy theo quy định.
04
Đa tiền tệ
Khách trả bằng tiền của họ trong khi nhà cung cấp lập hóa đơn bằng tiền của họ. Cổng phải hỗ trợ tiền tệ hiển thị, và hồ sơ của bạn phải lưu cả hai số tiền.
05
Kiểm tra gian lận với giá trị cao
Vé cho ngày mai, cho người khác, trả bằng thẻ mới là mô hình gian lận kinh điển. 3-D Secure, chấm điểm rủi ro của cổng và hàng đợi duyệt thủ công bảo vệ các đơn có giá trị cao.
06
Chargeback nhiều tháng sau
Khiếu nại thường đến sau chuyến đi. Hãy lưu cùng nhau kết quả xác thực, chứng từ đặt chỗ và sự kiện của cổng để phản hồi từng khiếu nại bằng bằng chứng.
Phương thức thanh toán
API cổng thanh toán bao phủ những cách trả tiền nào
Thẻ chỉ là một lựa chọn. Khách và đại lý trả tiền theo nhiều cách khác nhau, và mỗi cách được hoàn tiền khác nhau.
| Phương thức | Là gì | Khi nào tiền về | Hoàn tiền |
|---|---|---|---|
| Thẻ | Thẻ ghi nợ và thẻ tín dụng qua cổng thanh toán, kèm 3-D Secure khi ngân hàng phát hành yêu cầu. | Ủy quyền lúc thanh toán; capture ngay hoặc khi nhà cung cấp xác nhận. | Hoàn toàn bộ hoặc một phần về cùng thẻ qua API. |
| Ví điện tử | Tài khoản ví mà cổng hỗ trợ, như PayPal hoặc ví trên điện thoại chứa thẻ đã token hóa. | Lúc thanh toán, sau khi khách phê duyệt trong ví. | Trả về ví hoặc thẻ đứng sau ví, thông qua cổng. |
| Chuyển khoản ngân hàng | Khách hoặc đại lý chuyển tiền vào tài khoản ngân hàng của bạn và khoản thanh toán được ghi nhận vào đặt chỗ. | Vài ngày sau; đặt chỗ chờ đến khi đội của bạn xác nhận đã nhận tiền. | Hoàn bằng chuyển khoản, ngoài cổng thanh toán. |
| Trả sau | Đặt chỗ được tạo ngay và trả sau; đội của bạn ghi nhận khoản thanh toán khi tiền về. | Sau khi đặt chỗ, khi khách thanh toán. | Chỉ hoàn lại số tiền đã thực sự trả. |
| Ví hoặc tín dụng đại lý B2B | Đại lý con trả từ số dư họ nạp trước hoặc từ hạn mức tín dụng bạn cấp. | Trừ khi đặt chỗ; tiền cọc và tín dụng được tất toán theo điều khoản của bạn. | Hoàn lại vào số dư của đại lý. |
Chuyển khoản ngân hàng, trả sau và số dư ví là các cách tất toán của chính nền tảng, không phải cổng thanh toán. Số dư và hạn mức tín dụng của đại lý được giải thích ở trang Ví đại lý B2B; thanh toán ngân hàng ở trang Thanh toán chuyển khoản.
Có sẵn trong PHPTRAVELS
API cổng thanh toán đã kết nối
Các cổng này đã được kết nối với PHPTRAVELS. Bạn mở tài khoản người bán với nhà cung cấp, nhập khóa API trong admin, thử trong sandbox của họ rồi đưa vào hoạt động. Danh sách là bản trực tiếp từ thư mục tích hợp của chúng tôi.
StripeHướng dẫn tích hợpPayPalHướng dẫn tích hợp
xMoney
Fawaterk
Cashfree
Paystack
Flutterwave
Adyen
MyFatoorah
SSLcommerz
Razorpay- Tất cả tích hợp thanh toán
Phí và việc phê duyệt người bán được thỏa thuận với công ty thanh toán, không phải với PHPTRAVELS. Cổng chưa có ở đây có thể được thêm như một Tích hợp API tùy chỉnh, và trang Tích hợp cổng thanh toán giải thích cách thiết lập từng cổng.
Bảo mật
Giữ dữ liệu thẻ ngoài hệ thống của bạn
Số thẻ an toàn nhất là số thẻ mà máy chủ của bạn không bao giờ nhận. API cổng thanh toán được thiết kế để máy chủ không cần nhận nó.
Không bao giờ lưu số thẻ
Thông tin thẻ đi đến cổng, cổng trả về token hoặc ID thanh toán. Cơ sở dữ liệu của bạn chỉ lưu tham chiếu đó, không lưu số thẻ hay mã bảo mật.
Hosted fields và chuyển hướng thu hẹp phạm vi PCI DSS
PCI DSS áp dụng cho bất kỳ ai xử lý dữ liệu thẻ. Khi biểu mẫu thẻ là trang của cổng hoặc các trường nhúng, phần hệ thống của bạn thuộc phạm vi ít hơn nhiều. Acquirer của bạn xác nhận bản tự đánh giá nào áp dụng cho bạn.
Webhook được xác minh bằng chữ ký
Mỗi webhook mang một chữ ký tạo bằng khóa bí mật dùng chung. Máy chủ của bạn tính lại và từ chối mọi sự kiện không khớp, nên không ai giả mạo được một đặt chỗ đã thanh toán.
Khóa bí mật luôn ở trên máy chủ
Trình duyệt chỉ nhận khóa công khai. Khóa bí mật dùng để tạo thanh toán và hoàn tiền nằm trong cấu hình máy chủ của bạn, và mỗi yêu cầu mang một khóa idempotency để việc thử lại không bao giờ tính phí hai lần.
1$payload = file_get_contents("php://input"); 2$signature = $_SERVER["HTTP_X_SIGNATURE"] ?? ""; 3$expected = hash_hmac("sha256", $payload, $webhookSecret); 4 5if (!hash_equals($expected, $signature)) { 6 http_response_code(400); exit; // reject 7} 8$event = json_decode($payload, true); 9if (alreadyHandled($event["id"])) exit; // repeat delivery10updateBooking($event["data"]["metadata"]["booking_ref"], $event["type"]);
Ví dụ chung. Tên header và phương pháp ký phụ thuộc vào cổng bạn chọn.
PHPTRAVELS là phần mềm tự lưu trữ, nên việc tuân thủ PCI DSS được đánh giá cho doanh nghiệp và máy chủ của bạn, chứ không chỉ riêng phần mềm.
Xem một đặt chỗ được thanh toán, capture và hoàn tiền
Đặt một chuyến đi trong bản demo trực tiếp và theo dõi khoản thanh toán trong admin. Với gói Enterprise, PHPTRAVELS còn cung cấp REST API và webhook riêng cho ứng dụng và đối tác của bạn.
Bạn cũng bán vé máy bay? Trang API vé máy bay giải thích phía nhà cung cấp, và API du lịch liệt kê mọi API mà PHPTRAVELS kết nối.
Đó là tập hợp dịch vụ web do công ty thanh toán cung cấp để website có thể tạo thanh toán, gửi thẻ đến ngân hàng để duyệt, capture tiền, hoàn tiền và nhận cập nhật trạng thái qua webhook, mà không phải tự lưu dữ liệu thẻ.
Cổng thanh toán là phần website của bạn làm việc trực tiếp: nó thu thẻ an toàn và chuyển yêu cầu đi. Bộ xử lý đưa giao dịch qua các tổ chức thẻ đến ngân hàng phát hành. Nhiều nhà cung cấp cung cấp cả hai như một dịch vụ.
Cổng nào chấp thuận doanh nghiệp của bạn, hỗ trợ quốc gia, tiền tệ và phương thức thanh toán của khách, đồng thời có ủy quyền và capture tách biệt cùng hoàn tiền một phần. Nhiều đại lý kết hợp một cổng thẻ toàn cầu với một cổng khu vực.
Ủy quyền giữ trước số tiền trên thẻ của khách; capture mới thu tiền. Tách hai bước giúp bạn chỉ tính phí khi nhà cung cấp xác nhận đặt chỗ, và hủy khoản giữ nếu họ không xác nhận.
Ở nhiều khu vực, gồm Khu vực Kinh tế Châu Âu và Vương quốc Anh, xác thực khách hàng mạnh được yêu cầu với hầu hết thanh toán thẻ trực tuyến, và 3-D Secure là cách thẻ đáp ứng yêu cầu đó. API cổng xử lý bước xác thực; luồng đặt chỗ của bạn chờ kết quả.
Tự nó thì không. Dùng hosted fields hoặc trang thanh toán của cổng giúp dữ liệu thẻ không đi qua máy chủ của bạn và thu hẹp phạm vi PCI DSS, nhưng bạn vẫn phải hoàn thành bản đánh giá mà acquirer yêu cầu.
Có, nếu cổng hỗ trợ hoàn tiền một phần, như hầu hết cổng thẻ. Bạn gửi lệnh hoàn số tiền thấp hơn trên khoản thanh toán gốc, ví dụ giá trừ phí hủy.
Không. Bạn mở tài khoản người bán với cổng bạn chọn và thỏa thuận phí với họ. PHPTRAVELS kết nối nền tảng đặt chỗ của bạn với tài khoản đó bằng khóa API bạn nhập trong admin.
Có. Bất kỳ cổng nào có API được tài liệu hóa đều có thể được thêm như một tích hợp tùy chỉnh, và vì mã nguồn đi kèm, lập trình viên của bạn cũng có thể mở rộng luồng thanh toán.
Khám phá thêm
Thêm về nền tảng
- Tích hợp cổng thanh toánThanh toán, 3D Secure, hoàn tiền và webhook
- Thanh toán StripeThanh toán thẻ và ví, hoàn tiền và chuyển khoản
- Thanh toán PayPalThanh toán PayPal cho vé máy bay, khách sạn và tour
- Ví đại lý B2BNạp tiền của đại lý, hạn mức tín dụng và sổ cái theo từng đại lý
- API du lịchAPI GDS, khách sạn, tour, xe và thanh toán
- API vé máy bayAPI vé máy bay từ GDS, NDC và nhà gom vé trên một nền tảng
