Các dịch vụ trực tuyến khác nhau có các giá trị khác nhau cho năm hết hạn tối đa, khi nói đến Thẻ tín dụng.
Ví dụ:
- Basecamp: +15 năm (2025)
- Amazon: +20 năm (2030)
- Paypal: +19 năm (2029)
Tối đa hợp lý ở đây là gì? Có hướng dẫn chính thức nào không?
Các dịch vụ trực tuyến khác nhau có các giá trị khác nhau cho năm hết hạn tối đa, khi nói đến Thẻ tín dụng.
Ví dụ:
Tối đa hợp lý ở đây là gì? Có hướng dẫn chính thức nào không?
Câu trả lời:
Không có hướng dẫn chính thức vì các tổ chức phát hành thẻ tín dụng có thể chọn từng thẻ khi thẻ họ phát hành sẽ hết hạn. Trong thực tế, họ đã được phát hành thẻ trong thời gian dài hơn và lâu hơn. Nếu bạn đang cố gắng xác định khoảng thời gian xa trong tương lai, bạn nên sắp xếp ngày hết hạn, hãy bình tĩnh và cho khách hàng của bạn nhiều năm để lựa chọn. Bằng cách đó bạn sẽ chứng minh ứng dụng của mình trong tương lai.
FYI, nhiều tổ chức phát hành thẻ tín dụng không sử dụng ngày hết hạn khi xác định có chấp thuận mua thẻ tín dụng hay không. Vì vậy, nếu bạn lo lắng về một ngày không chính xác được cung cấp, bộ xử lý cuối cùng sẽ có tiếng nói cuối cùng về việc giao dịch có được chấp thuận hay không vì vậy tôi sẽ không lo lắng về điều đó.
Tháng 7 năm 2017 : Chỉ cần có một người dùng cuối với thẻ đã hết hạn gần 50 năm kể từ bây giờ.
Tôi có thể tự động thêm + 15-20 năm vào năm hiện tại HOẶC cung cấp đầu vào hộp văn bản cho năm (cá nhân tôi thấy nhanh hơn để nhập hai chữ số vào hơn là cuộn qua danh sách năm).
Là giới hạn trên lý thuyết, tôi đề xuất rằng bạn không cần phải xem xét nhiều hơn tuổi thọ dự kiến của chủ thẻ. Wikipedia thực hiện điều này trong các tiêu chuẩn biên tập của họ cho tiểu sử của những người sống :
Bất kỳ cá nhân nào sinh ra ít hơn 115 năm trước đều được bảo hiểm bởi chính sách này trừ khi một nguồn đáng tin cậy đã xác nhận cái chết của cá nhân đó. Những người trên 115 tuổi được cho là đã chết trừ khi được liệt kê ở những người già nhất.
Vì vậy, trong mã của bạn, hãy tra cứu năm hiện tại, thêm 115 và sử dụng đó làm giới hạn trên lý thuyết của bạn cho ngày hết hạn thẻ tín dụng. Bạn sẽ không bao giờ phải chạm vào mã đó nữa.
max
theo trường hợp đó chỉ trong trường hợp người già nhất sử dụng biểu mẫu khi họ bước sang tuổi 116 ...: [
Dưới đây là đoạn mã Javascript mà bạn có thể sử dụng để hiển thị danh sách tùy chỉnh các năm sắp tới để xác thực CC:
var yearsToShow = 20;
var thisYear = (new Date()).getFullYear();
for (var y = thisYear; y < thisYear + yearsToShow; y++) {
var yearOption = document.createElement("option");
yearOption.value = y;
yearOption.text = y;
document.getElementById("expYear").appendChild(yearOption);
}
<label for="expiration">Expiration Date</label>
<span id="expiration">
<select id="expMonth" name="expMonth">
<option disabled="true">Month</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
<option value="3">Mar</option>
<option value="4">Apr</option>
<option value="5">May</option>
<option value="6">Jun</option>
<option value="7">Jul</option>
<option value="8">Aug</option>
<option value="9">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>
<select id="expYear" name="expYear">
</select>
</span>
Dưới đây là mẫu của các nhà bán lẻ trực tuyến hàng đầu của Hoa Kỳ:
RETAILER WINDOW IN YEARS
Amazon 20
Walmart 10
Apple NA (TEXT FIELD)
Home Depot 19
Best Buy 10
Target NA (TEXT FIELD)
eBay NA (TEXT FIELD)
Google 19
Cuộc gọi tốt, @Alistair.
Đây là thế hệ tháng và năm trong ASP.NET MVC. Thêm phần này vào viewmodel của bạn:
public IList<SelectListItem> Months = new List<SelectListItem>() {
new SelectListItem() { Text="Jan", Value="01" },
new SelectListItem() { Text="Feb", Value="02" },
new SelectListItem() { Text="Mar", Value="03" },
new SelectListItem() { Text="Apr", Value="04" },
new SelectListItem() { Text="May", Value="05" },
new SelectListItem() { Text="Jun", Value="06" },
new SelectListItem() { Text="Jul", Value="07" },
new SelectListItem() { Text="Aug", Value="08" },
new SelectListItem() { Text="Sep", Value="09" },
new SelectListItem() { Text="Oct", Value="10" },
new SelectListItem() { Text="Nov", Value="11" },
new SelectListItem() { Text="Dec", Value="12" },
};
public IEnumerable<SelectListItem> Years
{
get
{
return new SelectList(Enumerable.Range(DateTime.Today.Year, 15));
}
}
Và điều này theo quan điểm của bạn:
<fieldset>
<legend>Card expiration</legend>
<div style="float: left;">
<div class="editor-label">
@Html.LabelFor(model => model.ExpirationMonth)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.ExpirationMonth, Model.Months)
@Html.ValidationMessageFor(model => model.ExpirationMonth)
</div>
</div>
<div style="float: left;">
<div class="editor-label">
@Html.LabelFor(model => model.ExpirationYear)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.ExpirationYear, Model.Years)
@Html.ValidationMessageFor(model => model.ExpirationYear)
</div>
</div>
</fieldset>
Trong khi ví dụ thứ hai chạy nhanh gấp đôi so với ví dụ đầu tiên, bạn vẫn nhận được ngày và trích xuất năm từ nó 20 lần thay vì 40 lần. Một vòng lặp không kiểm soát tốt hơn là:
$StartDate=date('Y');
$EndDate=$StartDate+21;
for($i=$StartDate;$i<$EndDate;$i++){
echo "<option value='".$i."'>".substr($i,2)."</option>\n";
Điều đó sẽ nhanh hơn khoảng 20 lần so với ví dụ nhanh gấp đôi và cũng giải quyết một lỗi nhỏ trong mã gốc trong năm đó có thể thay đổi từ một lần lấy ngày sang ngày tiếp theo dẫn đến kết quả không mong muốn, mặc dù trong trường hợp này là vô hại.
<?php
$y = gmdate("Y");
$x = 20;
$max = ($y + $x);
while ($y <= $max) {
echo "<option value='$y'>$y</option>";
$y = $y + 1;
}
?>
Nếu bạn muốn một giải pháp không mang lại năm ba chữ số 2100+, bạn phải điều chỉnh ngày, do đó, bạn phải điền số 0 đứng đầu cho xx00-xx09 năm để không có được một năm chữ số.
Điều này sẽ rất quan trọng bắt đầu vào năm 2080.
<?php
for($i=0;$i<=20;$i++){
$aktDate = sprintf("%02d", ((date('y')+$i)%100));
echo "<option value=\"{$aktDate}\">{$aktDate}</option>\n";
}
?>
Sau khi đọc hiệu lực cao hơn 20 năm của OP cho Amazon, tôi đã viết giải pháp đơn giản này bằng PHP:
<select name='Expiry-Year'>
<option value="">yy</option>
<?php
for($i=0;$i<21;$i++){
echo "<option value='".(date('Y')+$i)."'>".(date('y')+$i)."</option>\n";
}
?>
</select>
Điều này đã làm giảm đáng kể số lượng các yêu cầu năm mới để loại bỏ last year
khỏi một biểu mẫu.
Một phiên bản gọn hơn của vòng lặp chạy nhanh gấp đôi:
<select name='Expiry-Year'>
<option value="">yy</option>
<?php
for($i=date('Y');$i<date('Y')+21;$i++){
echo "<option value='".$i."'>".substr($i,2)."</option>\n";
}
?>
</select>
date('Y')
và date('y')
20 lần mỗi lần khá chậm?