Skip to content

Kiểm thử ​

Trước khi go-live, hãy chạy cả hai luồng challenge đầu-cuối trên môi trường test. Cake cung cấp base URL riêng cùng với ProcessorId, IssuerId, và khóa HMAC riêng cho môi trường onboarding — không bao giờ tái sử dụng credential production ở đây.

Kiểm thử luồng OTP ​

  1. Bắt đầu một giao dịch thanh toán bằng thẻ test thuộc dải bạn xác thực, với số tiền kích hoạt challenge.
  2. /step_up của bạn được gọi. Trả về Status: "SUCCESS" với StepupType: "OTP".
  3. /initiate_action của bạn được gọi kèm VerificationToken. Hãy gửi đúng giá trị đó.
  4. Nhập mã đã gửi vào cửa sổ challenge.

Cần kiểm tra: mã bạn gửi được chấp nhận. Nếu bị từ chối, nguyên nhân thường gặp là nền tảng của bạn tự sinh mã riêng thay vì truyền VerificationToken đi.

Kiểm thử luồng out-of-band ​

  1. Bắt đầu một giao dịch thanh toán theo cách tương tự.
  2. Trả về Status: "SUCCESS" với StepupType: "OUTOFBAND" từ /step_up.
  3. /initiate_action của bạn được gọi kèm OOBCallbackUrl. Hãy gửi push notification của bạn.
  4. Phê duyệt trong app, sau đó gửi một callback đã ký đến URL đó.

Cần kiểm tra: trang chờ hoàn tất mà chủ thẻ không cần nhấn Continue. Nếu nó chỉ hoàn tất khi nhấn, callback của bạn chưa đến — hãy kiểm tra mã response bạn nhận lại.

Kiểm thử fallback ​

Lặp lại luồng out-of-band nhưng bỏ qua hoàn toàn callback. Nhấn Continue trên trang chờ thay vào đó.

Cần kiểm tra: /validate được gọi, và trả về RETRY sẽ giữ trang tiếp tục chờ trong khi trả về SUCCESS sẽ hoàn tất xác thực. Đây là đường đi sẽ chạy bất cứ khi nào push của bạn bị trễ, nên đáng để kiểm thử chủ động thay vì phát hiện ra khi đã lên production.

Kiểm thử các trường hợp lỗi ​

Những trường hợp này quyết định tiền thật, nên hãy xác minh thay vì giả định:

Kịch bảnCách kích hoạtKỳ vọng
Chủ thẻ từ chốiTrả về REJECTED từ /validateXác thực bị từ chối
Nền tảng của bạn bị downtimeTrả về ERROR từ /step_upXác thực thất bại — không được phê duyệt
Endpoint bị timeoutTrì hoãn quá thời gian timeout của requestGiống như ERROR
Signature saiGửi một callback được ký bằng khóa sai401, và kết quả không được ghi nhận
Phiên không xác địnhGửi một callback với StepupRequestId ngẫu nhiên404

TIP

Trường hợp timeout là trường hợp thường bị bỏ qua nhất và thường sai nhất khi lên production. Một dependency chậm bên trong handler /step_up của bạn sẽ làm thất bại xác thực chắc chắn như một sự cố downtime, vì ACS không thể chờ đợi mãi — hãy kiểm thử nó bằng một độ trễ có chủ đích.

Kiểm tra signature offline ​

Nếu callback liên tục trả về 401, hãy kiểm tra signature một cách độc lập trước khi debug đường truyền mạng — xem ví dụ minh họa trong Bảo mật. Hai nguyên nhân thường gặp là dùng trực tiếp ký tự hex thay vì decode nó, và serialize lại body sau khi đã ký.

Developers