Menu

Định dạng ngày hết hạn thẻ và cách điền cho đúng

Định dạng ngày hết hạn thẻ in trên thẻ chỉ gồm tháng và năm, và thẻ còn hiệu lực tới hết tháng đó. Hướng dẫn đọc, điền và xử lý trường này trong biểu mẫu.

Đăng ngày

  • ngày hết hạn
  • biểu mẫu
  • kiểm thử

Định dạng ngày hết hạn thẻ trông có vẻ là phần đơn giản nhất của mọi biểu mẫu thanh toán, chỉ với bốn chữ số, nhưng thực tế nó tạo ra nhiều lỗi khó chịu hơn hẳn những trường dài hơn. Bài này giải thích vì sao, cách đọc đúng con số in trên thẻ, và những chỗ cần cẩn thận khi thiết kế biểu mẫu hay kiểm thử luồng thanh toán.

Ngày hết hạn được in trên thẻ như thế nào?

Trên mặt thẻ, bạn sẽ thấy một cụm chỉ gồm hai chữ số của tháng và hai chữ số của năm, thường được ngăn cách bằng dấu gạch chéo và đặt ngay dưới số thẻ. Không có ngày cụ thể trong tháng, và cũng không có thế kỷ.

Chính sự nén thông tin này tạo ra phần lớn rắc rối. Khi người dùng đọc cụm số đó lên hoặc gõ lại, họ phải tự diễn giải xem mình đang nói về tháng nào năm nào. Không có gì trên thẻ xác nhận rằng cách diễn giải của họ là đúng, nên mọi sai lệch đều chỉ lộ ra khi hệ thống từ chối giao dịch.

Cần lưu ý thêm rằng định dạng in trên thẻ và định dạng lưu trong hệ thống không nhất thiết phải giống nhau. Trên thẻ là hình thức hiển thị dành cho mắt người, còn trong hệ thống, giá trị này thường được lưu ở dạng đầy đủ hơn để tránh nhập nhằng. Khi bạn đọc tài liệu kỹ thuật, hãy kiểm tra xem tài liệu đó đang nói về hình thức hiển thị hay hình thức lưu trữ.

Thẻ còn dùng được đến ngày nào?

Đây là điểm mà rất nhiều người hiểu sai, kể cả những người đã dùng thẻ nhiều năm. Cụm tháng và năm trên thẻ không phải ngày thẻ ngừng hoạt động, mà là tháng cuối cùng thẻ còn hiệu lực. Nghĩa là thẻ vẫn dùng được đến hết ngày cuối cùng của tháng đó, sau đó mới hết hiệu lực.

Ví dụ, nếu trên thẻ in tháng sáu năm hai nghìn không trăm hai mươi tám, thì tấm thẻ đó còn dùng được suốt tháng sáu, kể cả ngày ba mươi. Sang ngày đầu tiên của tháng bảy, nó mới thực sự hết hiệu lực.

Quy ước này ảnh hưởng trực tiếp đến cách bạn viết phần kiểm tra. Nếu bạn so sánh ngày hết hạn với ngày đầu tiên của tháng đó, bạn sẽ từ chối nhầm những tấm thẻ vẫn còn dùng được trong vài tuần cuối. Đây là một trong những lỗi phổ biến nhất ở những biểu mẫu thanh toán mới, và nó chỉ xuất hiện khi bạn kiểm thử đúng vào khoảng biên.

Điền ngày hết hạn sao cho đúng?

Với người dùng, có vài điều nhỏ nhưng giúp tránh được kha khá lần thử lại.

  • Điền đủ hai chữ số cho tháng, kể cả với những tháng nhỏ hơn mười.
  • Dùng đúng hai chữ số cuối của năm, không thêm hai chữ số đầu của thế kỷ.
  • Không nhập tháng mười ba hay số không, vì cả hai đều không phải tháng hợp lệ.
  • Kiểm tra lại xem bạn đã đọc đúng dòng chưa, vì trên nhiều tấm thẻ, cụm ngày hết hạn nằm ngay cạnh một trường khác như tên chủ thẻ hoặc số phát hành.

Nếu biểu mẫu yêu cầu chọn tháng và năm từ hai danh sách, hãy chọn theo đúng thứ tự xuất hiện trên thẻ, đừng đảo ngược lại. Việc đảo tháng và năm là lỗi rất thường gặp ở những biểu mẫu xếp năm trước tháng.

Vì sao trường này gây ra nhiều lỗi đến vậy?

Có ba lý do, và cả ba đều liên quan đến việc mất mát thông tin khi nén dữ liệu.

  1. Thiếu ngày cụ thể. Hệ thống phải tự suy ra rằng giá trị có nghĩa là hết tháng, thay vì một ngày xác định nào đó.
  2. Thiếu thế kỷ. Hai chữ số của năm không nói lên thế kỷ. Hệ thống phải tự quyết định cách diễn giải, và cách diễn giải đó cần nhất quán ở mọi nơi trong luồng xử lý.
  3. Không có chữ số kiểm tra. Khác với số thẻ, trường này không có cơ chế phát hiện lỗi gõ. Nếu người dùng nhập tháng bảy thay vì tháng sáu, hệ thống không có cách nào biết đó là lỗi.

Thêm vào đó, cụm số này rất nhỏ nên người dùng thường gõ vội, và mỗi lần gõ vội là một lần tăng khả năng sai.

Các trường hợp biên cần chú ý

Dưới đây là những tình huống mà các đội phát triển hay bỏ sót khi kiểm thử trường ngày hết hạn.

Tình huống Vấn đề tiềm ẩn
Thẻ hết hạn vào chính tháng hiện tại Vẫn còn hợp lệ tới hết tháng, không được từ chối
Thẻ hết hạn vào đầu tháng sau Sắp hết hạn, nên nhắc người dùng cập nhật thẻ
Tháng nhập là tháng mười một hoặc mười hai Dễ bị nhầm với tháng một và tháng hai nếu đảo vị trí
Thẻ có ngày hết hạn rất xa trong tương lai Không nên chặn chỉ vì năm vượt quá một ngưỡng tùy ý
Người dùng nhập đủ bốn chữ số năm Hệ thống cần chấp nhận và tự rút gọn

Hãy đưa những trường hợp này vào bộ kiểm thử, đặc biệt là trường hợp đầu tiên, vì nó là nguồn gốc của nhiều khiếu nại từ khách hàng.

Dùng công cụ khi bạn cần dữ liệu thử

Nếu bạn phải điền thử biểu mẫu thanh toán nhiều lần, việc tự nghĩ ra ngày hết hạn cho từng lần sẽ nhanh chóng trở nên mệt mỏi và dễ sai. Trình tạo số thẻ tín dụng giả của trang này sinh ra cả bộ dữ liệu gồm số thẻ, ngày hết hạn và mã bảo mật, và bạn có thể tạo nhiều bộ cùng lúc rồi sao chép tất cả trong một lần. Cách này đặc biệt hữu ích khi bạn cần trình diễn giao diện cho người khác xem hoặc cần dữ liệu mẫu cho một buổi thử nghiệm tập trung.

Mọi giá trị 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ể dùng cho bất kỳ giao dịch thanh toán thật nào.

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

Trường ngày hết hạn có vẻ nhỏ, nhưng nó là nơi tập trung nhiều lỗi tinh vi. Dưới đây là những điểm nên rà khi viết và khi kiểm thử.

  • Chọn đúng loại ô nhập liệu. Với tháng, một danh sách chọn hai chữ số thường tốt hơn ô nhập tự do, vì nó loại bỏ khả năng nhập tháng không hợp lệ. Với năm, hãy cân nhắc giới hạn danh sách trong khoảng vài năm tới để người dùng không phải cuộn quá lâu.
  • Tự động chuyển ô khi đã đủ chữ số. Nếu bạn dùng một ô duy nhất cho cả tháng và năm, hãy chuyển con trỏ sang phần năm sau khi người dùng gõ xong hai chữ số của tháng. Thao tác nhỏ này giảm đáng kể số lần nhập sai.
  • Chuẩn hóa về một điểm mốc duy nhất. Hãy thống nhất trong toàn bộ hệ thống rằng giá trị ngày hết hạn được hiểu là ngày đầu tiên của tháng kế tiếp, hoặc ngày cuối cùng của tháng đó. Điều quan trọng không phải bạn chọn mốc nào, mà là mọi thành phần đều dùng cùng một mốc.
  • Tính ngày hết hạn từ thời điểm chạy. Nếu bạn ghi cứng một ngày hết hạn trong bộ dữ liệu thử, ngày đó sẽ trôi qua và bài kiểm thử sẽ bắt đầu thất bại mà không ai sửa mã. Hãy tính giá trị động ngay trong bài kiểm thử.
  • Cẩn thận với múi giờ. So sánh một tháng với thời điểm hiện tại ở hai múi giờ khác nhau có thể lệch nhau tới một ngày, và một ngày lệch đủ để rơi sang tháng khác. Hãy so sánh ở cấp tháng thay vì ở cấp thời điểm để tránh cái bẫy này.
  • Kiểm thử đúng vào khoảng biên. Hãy viết ca cho tháng hiện tại, tháng trước, tháng sau và tháng mười hai để chắc chắn rằng logic chuyển năm hoạt động đúng.

Về mặt lưu trữ, hãy nghĩ trước xem bạn có thật sự cần lưu ngày hết hạn ở dạng đầy đủ hay chỉ cần một giá trị đã chuẩn hóa để phục vụ hiển thị và nhắc nhở. Giữ ít dữ liệu hơn luôn là lựa chọn tốt hơn nếu nghiệp vụ cho phép.

Tiếp theo

Nếu bạn muốn hiểu vì sao số thẻ có cơ chế phát hiện lỗi gõ còn trường ngày hết hạn thì không, hãy đọc bài về thuật toán Luhn. Còn nếu bạn đang chuẩn bị cho một đợt phát hành và cần rà soát toàn bộ biểu mẫu thanh toán, danh sách kiểm tra biểu mẫu thanh toán là điểm bắt đầu phù hợp.

Đọc tiếp

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