Tapaya
Thanh toán trực tuyếnBảo mật CheckoutBảo mật Checkout

Bảo mật Checkout

Các quy tắc phía máy chủ giúp tích hợp Checkout an toàn, từ quản lý key đến xác minh thanh toán trước khi hoàn tất đơn hàng.

Tapaya lưu trữ các trường nhập thẻ, tokenization, xác thực thẻ và việc trừ tiền, nên hệ thống của bạn không bao giờ xử lý dữ liệu thẻ thô. Phần còn lại thuộc về bạn là máy chủ tạo các khoản thanh toán và quyết định khi nào một đơn hàng đã được thanh toán. Các quy tắc này áp dụng cho cả Hosted Checkout và thanh toán nhúng.

Để biết Tapaya xử lý dữ liệu chủ thẻ và dữ liệu cá nhân như thế nào, xem Bảo vệ dữ liệu và quyền riêng tư.

Giữ key trên máy chủ

  • Chỉ lưu checkout key của merchant hoặc Secret key của tổ chức trong cấu hình phía máy chủ. Không key nào được phép nằm trong mã trình duyệt, gói ứng dụng di động hoặc hệ thống quản lý mã nguồn. Chỉ publishable key và client secret của một khoản thanh toán được đưa đến trình duyệt.
  • Gọi Checkout API của merchant từ môi trường chạy trên máy chủ của bạn. Không thực hiện các yêu cầu này trong trình duyệt của khách hàng.
  • Một checkout key của merchant chỉ truy cập được merchant của nó. Hãy cấp cho backend riêng của merchant key đó, không bao giờ cấp Secret key của tổ chức bạn.
  • Secret key của tổ chức có quyền trên toàn bộ tổ chức. Ở chế độ nền tảng, hãy gửi nó kèm X-Tapaya-Merchant-Token trong mọi yêu cầu; API sẽ kiểm tra rằng merchant thuộc tổ chức của key đó. Xem Xác thực Checkout.
  • Key của merchant chỉ hiển thị một lần và chỉ được lưu dưới dạng hash. Hãy thu hồi key mà bạn nghi ngờ đã bị lộ, sau khi đã tạo key thay thế.

Quản lý đơn hàng trên máy chủ của bạn

  • Tính tổng tiền đơn hàng trên máy chủ của bạn và lưu đơn hàng trước khi tạo phiên hoặc lần thử thanh toán.
  • Đọc số tiền, loại tiền tệ và ID đơn hàng từ bản lưu (snapshot) đơn hàng của bạn. Không chấp nhận các giá trị thay thế do trình duyệt gửi lên.
  • Với thanh toán nhúng, hãy gắn các endpoint prepare và submit của bạn với một phiên checkout yêu cầu đăng nhập hoặc một cookie HTTP-only có chữ ký, và kiểm tra origin của các yêu cầu làm thay đổi dữ liệu.

Xác minh trước khi hoàn tất đơn hàng

Chuyển hướng trình duyệt, lượt truy cập URL thành công của bạn, tham số truy vấn, cookie trả về và thông điệp từ trình duyệt đều là dữ liệu điều hướng. Không thứ nào trong số đó chứng minh việc thanh toán.

  • Truy xuất phiên từ máy chủ của bạn và so sánh mã tham chiếu đơn hàng, số tiền, loại tiền tệ và trạng thái thanh toán với đơn hàng đã lưu.
  • Chỉ hoàn tất đơn hàng khi bước kiểm tra đó xác nhận paymentStatus: successful. Chỉ riêng phản hồi HTTP 200 không chứng minh việc thanh toán.
  • Ghi nhận việc hoàn tất đơn hàng một cách nguyên tử (atomic), để các lần quay lại hoặc kiểm tra trạng thái lặp lại không thể hoàn tất cùng một đơn hàng hai lần.
  • Nếu phiên vẫn ở trạng thái unpaid hoặc việc truy xuất thất bại, hãy giữ ID phiên và kiểm tra lại với số lần thử có giới hạn. Không tạo phiên khác chỉ vì kết quả đầu tiên chưa rõ: một phiên mới cho đơn hàng sẽ thay thế phiên cũ. Hiện chưa có webhook, vì vậy hãy đối soát bằng cách thăm dò (polling).

Thử lại một cách an toàn

  • Lưu một idempotency key (khóa idempotency) duy nhất cùng với đơn hàng trước khi tạo phiên. Nếu một yêu cầu hết thời gian chờ hoặc phản hồi của nó bị mất, hãy thử lại với cùng key và phần thân không thay đổi.
  • Không tạo key mới khi kết quả chưa chắc chắn. Xem Idempotency và lỗi để biết các quy tắc phát lại.

Giới hạn origin chuyển hướng

  • Chỉ thêm origin của các cửa hàng của chính bạn vào Allowed websites trong Cài đặt Checkout.
  • Dùng HTTPS cho các cửa hàng đã triển khai. Các giá trị ghi đè successUrl và cancelUrl theo từng phiên vẫn phải khớp với một origin đã cấu hình.

Báo cáo sự cố bảo mật

Nếu bạn nghi ngờ có lỗ hổng hoặc sự cố bảo mật, hãy liên hệ đội ngũ bảo mật như mô tả trong Liên hệ.

Trang này còn thiếu điều gì?Đề xuất tính năng. Chúng tôi sẽ đính kèm trang này để đội ngũ nắm được bối cảnh.