Menu

Stripe test cards: dùng thẻ thử trong sandbox đúng cách

Stripe test cards là bộ thẻ thử do chính cổng thanh toán công bố cho môi trường sandbox, gồm thẻ luôn thành công, thẻ luôn bị từ chối và thẻ cho 3D Secure.

Đăng ngày

  • sandbox
  • thanh toán
  • kiểm thử

Stripe test cards là câu trả lời chính thức cho câu hỏi mà mọi đội phát triển đều gặp khi tích hợp thanh toán: lấy số thẻ ở đâu để thử mà không phải dùng thẻ thật của ai đó. Thay vì một danh sách chung trôi nổi trên mạng, cổng thanh toán công bố một bộ thẻ thử nhỏ, có chủ đích, và mỗi thẻ ứng với một hành vi cụ thể mà bạn cần kiểm chứng. Hiểu đúng về bộ thẻ này sẽ giúp bạn thử được cả luồng thành công lẫn luồng thất bại, thay vì chỉ thử được một nửa.

Vì sao cổng thanh toán phát hành thẻ thử riêng?

Khi bạn tích hợp một cổng thanh toán, môi trường sandbox của họ cần một cách để nhận ra rằng yêu cầu đang được gửi từ một hệ thống thử chứ không phải từ hệ thống thật. Nếu không có cách nhận biết đó, mọi giao dịch thử sẽ trở thành yêu cầu thật gửi tới ngân hàng phát hành, và toàn bộ ngành sẽ nhanh chóng ngập trong những yêu cầu rác.

Bộ thẻ thử chính là tín hiệu đó. Mỗi số thẻ trong bộ được dành riêng cho mục đích thử nghiệm, nằm trong một dải do cổng thanh toán kiểm soát, và mang một hành vi được định trước. Khi sandbox nhìn thấy một trong những số này, nó biết ngay phải phản hồi thế nào mà không cần hỏi bất kỳ hệ thống ngân hàng nào.

Cách làm này mang lại hai lợi ích. Thứ nhất, bạn có thể thử những kịch bản mà trong thực tế rất khó tạo ra, chẳng hạn một giao dịch bị từ chối vì hết tiền hay vì thẻ bị khóa. Thứ hai, không có đồng tiền thật nào di chuyển, nên bạn có thể chạy hàng nghìn bài kiểm thử mà không lo về chi phí hay hậu quả.

Thẻ thử khác thẻ thật ở điểm nào?

Điểm khác biệt quan trọng nhất là đích đến. Một số thẻ thử không bao giờ đi tới ngân hàng; nó chỉ đi tới hệ thống của cổng thanh toán và quay về với kết quả được định trước. Điều đó nghĩa là hành vi của nó hoàn toàn giả lập, kể cả khi kết quả hiển thị giống hệt một giao dịch thật.

Điểm khác biệt thứ hai là phạm vi. Một số thẻ thử chỉ có ý nghĩa bên trong môi trường sandbox của chính cổng thanh toán đã công bố nó. Nếu bạn đưa cùng dãy số đó sang một môi trường khác, kết quả sẽ không còn đoán trước được. Vì vậy, đừng coi bộ thẻ này là một chuẩn chung của ngành; hãy coi nó là công cụ riêng của từng nhà cung cấp.

Điểm thứ ba liên quan đến độ dài danh sách. Các cổng thanh toán công bố số lượng thẻ thử khác nhau, có nơi chỉ vài thẻ, có nơi vài chục thẻ cho nhiều loại tình huống. Danh sách này thay đổi theo thời gian khi nhà cung cấp bổ sung tính năng mới, nên thói quen đúng là luôn quay lại tài liệu chính thức thay vì chép lại danh sách vào ghi chú nội bộ rồi quên cập nhật.

Tìm bộ thẻ thử ở đâu?

Hãy tìm trong tài liệu chính thức của cổng thanh toán mà bạn đang tích hợp, ở phần dành cho môi trường thử nghiệm. Đó là nguồn duy nhất luôn đúng và luôn mới. Các bài viết trên blog hay câu trả lời trên diễn đàn có thể hữu ích để tham khảo, nhưng chúng thường bị lỗi thời và đôi khi chép sai một chữ số.

Một bộ thẻ thử điển hình thường được chia theo mục đích, và cách phân chia này khá nhất quán giữa các nhà cung cấp:

  • Một thẻ dùng chung để mô phỏng giao dịch thành công.
  • Một nhóm thẻ mô phỏng các kiểu từ chối khác nhau, ví dụ thẻ bị từ chối, giao dịch bị chặn vì nghi ngờ gian lận, hoặc yêu cầu xác thực thất bại.
  • Một nhóm thẻ dùng cho các bước xác thực bổ sung, nơi bạn cần mô phỏng cả trường hợp xác thực thành công lẫn trường hợp người dùng bỏ dở.
  • Đôi khi có thêm các thẻ dành cho tình huống đặc biệt như hoàn tiền hoặc tranh chấp.

Một thẻ thành công phổ biến mà nhiều tài liệu nhắc tới là dãy số gồm mười sáu chữ số bắt đầu bằng bốn và các chữ số còn lại là số một, viết ra là bốn, bốn, một rồi mười hai số một. Với thẻ này, mọi ngày hết hạn trong tương lai và mọi mã bảo mật ba chữ số đều được chấp nhận. Nhưng hãy xác nhận lại trong tài liệu hiện hành trước khi dùng, vì các nhà cung cấp có thể thay đổi quy ước.

Điều gì xảy ra khi dùng thẻ thử ngoài môi trường sandbox?

Đây là câu hỏi đáng được trả lời dứt khoát, vì hiểu nhầm ở đây có thể dẫn tới những kết luận sai khi kiểm thử.

Thẻ thử chỉ có hành vi đã định trước bên trong môi trường mà nhà cung cấp đã thiết kế cho nó. Khi bạn chuyển cùng dãy số đó sang một cổng thanh toán khác, hoặc sang môi trường thật, hành vi sẽ không còn như tài liệu mô tả. Rất có thể yêu cầu sẽ bị từ chối vì số thẻ không tồn tại, hoặc bị chặn bởi chính cơ chế chống gian lận của hệ thống.

Vì vậy, đừng bao giờ dùng thẻ thử để kiểm tra xem một cổng thanh toán khác có hoạt động không. Mỗi cổng có bộ thẻ thử riêng, và việc trộn lẫn chúng sẽ chỉ tạo ra những kết quả khó hiểu.

Thử các bước xác thực bổ sung như thế nào?

Nhiều khu vực yêu cầu một bước xác thực bổ sung cho giao dịch trực tuyến, trong đó người dùng được chuyển sang một trang của ngân hàng phát hành để xác nhận. Đây là bước khó kiểm thử nhất trong toàn bộ luồng thanh toán, vì nó liên quan tới một hệ thống bên ngoài mà bạn không kiểm soát.

Các cổng thanh toán giải quyết vấn đề này bằng cách cung cấp những thẻ thử riêng cho từng kết cục của bước xác thực: một thẻ luôn xác thực thành công, một thẻ để người dùng từ chối xác thực, một thẻ mô phỏng bước xác thực bị lỗi kỹ thuật. Nhờ đó bạn có thể viết bài kiểm thử cho mọi nhánh mà không cần một tài khoản ngân hàng thật.

Điều cần chú ý là luồng xác thực bổ sung thường có nhiều bước chuyển trang, nên trạng thái của đơn hàng có thể thay đổi ở giữa đường. Hãy kiểm thử cả trường hợp người dùng bỏ dở giữa chừng rồi quay lại, vì đó là tình huống xảy ra thường xuyên trong thực tế và cũng là nguồn gốc của nhiều đơn hàng bị treo ở trạng thái chờ xử lý.

Dùng công cụ khi bạn cần nhiều dữ liệu hơn

Thẻ thử chính thức rất tốt cho việc kiểm thử hành vi, nhưng chúng chỉ có vài số và không phù hợp khi bạn cần hàng trăm bản ghi để thử hiệu năng, phân trang hay giao diện danh sách. Trong những trường hợp đó, trình tạo số thẻ tín dụng giả của trang này cho phép bạn sinh nhiều số thẻ thử theo từng mạng thẻ, chọn số lượng bản ghi và sao chép tất cả trong một lần. Bạn cũng có thể dán một phần số thẻ đã biết để hoàn thiện nốt, hữu ích khi cần tái hiện một lỗi cụ thể đã được báo cáo.

Mọi số thẻ mà công cụ tạo ra đều đúng cấu trúc và hợp lệ theo phép kiểm tra chữ số, nhưng chúng chưa từng được phát hành và không thể hoàn tất một giao dịch thanh toán nào. Chúng chỉ dành cho kiểm thử phần mềm và trình diễn biểu mẫu.

Nếu mục tiêu của bạn là phủ đủ nhiều mạng thẻ chứ không chỉ một cổng thanh toán, hãy xem thêm số thẻ thử nghiệm theo từng mạng để chọn đúng dải số cần đưa vào bộ dữ liệu.

Phần dành cho nhà phát triển

Bộ thẻ thử chỉ phát huy giá trị khi bạn biến nó thành một ma trận kịch bản có tổ chức, thay vì dùng đúng một thẻ thành công cho mọi bài kiểm thử.

Vài điểm thực tế khi dựng bộ kiểm thử:

  • Lập bảng ánh xạ giữa thẻ và kịch bản. Mỗi thẻ thử nên tương ứng với đúng một hành vi mong đợi, và bảng đó nên nằm cùng chỗ với mã kiểm thử để người đọc biết vì sao lại dùng số đó.
  • Tách cấu hình theo môi trường. Danh sách thẻ thử chỉ nên tồn tại trong cấu hình dành cho môi trường thử. Nếu vô tình bị nạp vào môi trường thật, ít nhất hệ thống cũng phải từ chối ngay.
  • Kiểm thử cả nhánh từ chối, không chỉ nhánh thành công. Rất nhiều lỗi giao diện chỉ xuất hiện khi giao dịch thất bại: thông báo lỗi chung chung, nút gửi bị kẹt ở trạng thái đang xử lý, hoặc đơn hàng bị ghi nhận dù thanh toán đã thất bại.
  • Kiểm tra tính lặp lại. Việc gửi lại cùng một yêu cầu do người dùng bấm hai lần hoặc do mạng chập chờn là tình huống phải chủ động thử, và nó cần được xử lý sao cho không tạo ra hai đơn hàng.
  • Không ghi giá trị thẻ thử vào tài liệu nội bộ như một chuẩn cố định. Hãy trỏ tới tài liệu của nhà cung cấp, vì danh sách sẽ thay đổi và tài liệu nội bộ sẽ không tự cập nhật.
  • Ghi lại thời điểm bạn chép danh sách. Khi một bài kiểm thử bắt đầu thất bại, câu hỏi đầu tiên thường là liệu nhà cung cấp đã thay đổi hành vi của thẻ thử hay không.

Cuối cùng, hãy nhớ rằng mục tiêu của bộ kiểm thử không phải là chứng minh luồng thành công hoạt động, mà là chứng minh hệ thống của bạn xử lý đúng trong mọi trường hợp, kể cả những trường hợp bạn không mong muốn.

Tiếp theo

Nếu bạn muốn hiểu vì sao ngày hết hạn của thẻ thử lại cần được tính động trong mã kiểm thử, hãy đọc bài định dạng ngày hết hạn thẻ. Còn nếu bạn đang cân nhắc giữa dữ liệu do cổng thanh toán cung cấp và dữ liệu tổng hợp do chính bạn tạo ra, bài số thẻ tín dụng thử nghiệm sẽ giúp bạn chọn đúng công cụ cho từng mục đích.

Đọc tiếp

Bài viết về Trình tạo số thẻ tín dụng giả