บริการออนไลน์ต่างๆมีค่าแตกต่างกันสำหรับปีสูงสุดที่หมดอายุเมื่อมาถึงบัตรเครดิต
ตัวอย่างเช่น
- Basecamp: +15 ปี (2025)
- Amazon: +20 ปี (2030)
- Paypal: +19 ปี (2029)
อะไรคือความสมเหตุสมผลสูงสุดที่นี่? มีแนวทางอย่างเป็นทางการหรือไม่?
บริการออนไลน์ต่างๆมีค่าแตกต่างกันสำหรับปีสูงสุดที่หมดอายุเมื่อมาถึงบัตรเครดิต
ตัวอย่างเช่น
อะไรคือความสมเหตุสมผลสูงสุดที่นี่? มีแนวทางอย่างเป็นทางการหรือไม่?
คำตอบ:
ไม่มีแนวทางที่เป็นทางการเนื่องจากผู้ออกบัตรเครดิตสามารถเลือกได้เมื่อบัตรที่ออกจะหมดอายุ ในความเป็นจริงพวกเขาได้ออกบัตรมาเป็นระยะเวลานานขึ้นและนานขึ้น หากคุณกำลังพยายามกำหนดว่าในอนาคตคุณควรจะกำหนดวันหมดอายุไว้นานเท่าใดให้ทำในสิ่งที่ปลอดภัยและให้ลูกค้าของคุณเลือกได้หลายปี ด้วยวิธีนี้คุณจะพิสูจน์การสมัครของคุณในอนาคต
FYI ผู้ออกบัตรเครดิตหลายรายไม่ใช้วันหมดอายุเมื่อพิจารณาว่าจะอนุมัติการซื้อบัตรเครดิตหรือไม่ ดังนั้นหากคุณกังวลเกี่ยวกับวันที่ที่ไม่ถูกต้องตัวประมวลผลจะมีคำสั่งสุดท้ายในที่สุดว่าธุรกรรมได้รับการอนุมัติหรือไม่ดังนั้นฉันจะไม่กังวลเกี่ยวกับมัน
กรกฎาคม 2017 : เพิ่งมีผู้ใช้ที่มีบัตรที่หมดอายุเกือบ 50 ปีนับจากนี้
ฉันจะเพิ่ม + 15-20 ปีในวันที่ปัจจุบันแบบไดนามิกหรือให้ป้อนกล่องข้อความสำหรับปี (ซึ่งโดยส่วนตัวแล้วฉันค้นหาเร็วกว่าในการพิมพ์ตัวเลขสองหลักในกว่าจะเลื่อนดูรายการปี)
ตามข้อ จำกัด ทางทฤษฎีฉันขอเสนอว่าคุณไม่จำเป็นต้องพิจารณามากกว่าอายุการใช้งานที่คาดหวังของผู้ถือบัตร Wikipedia ทำสิ่งนี้ในมาตรฐานบรรณาธิการสำหรับชีวประวัติของบุคคลที่มีชีวิต :
บุคคลใดก็ตามที่เกิดน้อยกว่า 115 ปีที่ผ่านมาได้รับการคุ้มครองโดยนโยบายนี้เว้นแต่แหล่งที่เชื่อถือได้ได้ยืนยันการเสียชีวิตของบุคคล คนที่อายุมากกว่า 115 ปีสันนิษฐานว่าเสียชีวิตเว้นแต่จะระบุไว้ในคนที่อายุมากที่สุด
ดังนั้นในรหัสของคุณค้นหาปีปัจจุบันเพิ่ม 115 และใช้สิ่งนั้นเป็นข้อ จำกัด ด้านทฤษฎีของคุณจนถึงวันหมดอายุของบัตรเครดิต คุณจะไม่ต้องแตะรหัสนั้นอีกเลย
max
ในกรณีที่คนแก่ที่สุดใช้แบบฟอร์มเมื่อพวกเขาหัน 116 ... : [
นี่คือข้อมูลโค้ด Javascript ที่คุณสามารถใช้เพื่อแสดงรายการที่ปรับแต่งได้สำหรับการตรวจสอบ 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>
นี่คือตัวอย่างของร้านค้าปลีกออนไลน์ชั้นนำของสหรัฐอเมริกา:
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
โทรดีมาก @Assair
นี่คือการสร้างเดือนและปีใน ASP.NET MVC เพิ่มไปยัง viewmodel ของคุณ:
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));
}
}
และนี่เป็นมุมมองของคุณ:
<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>
ในขณะที่ตัวอย่างที่สองทำงานเร็วเป็นสองเท่าเป็นครั้งแรกที่คุณยังคงได้รับวันที่และแยกปีจาก 20 ครั้งมากกว่า 40 ครั้ง การคลี่วงที่ดีกว่าคือ:
$StartDate=date('Y');
$EndDate=$StartDate+21;
for($i=$StartDate;$i<$EndDate;$i++){
echo "<option value='".$i."'>".substr($i,2)."</option>\n";
นั่นจะเร็วกว่าตัวอย่างที่เร็วกว่าสองเท่าประมาณ 20 เท่าและยังแก้ไขข้อผิดพลาดเล็กน้อยในรหัสต้นฉบับในปีนั้นอาจเปลี่ยนจากการดึงข้อมูลวันที่หนึ่งไปยังวันถัดไปที่นำไปสู่สิ่งที่คาดไม่ถึง
<?php
$y = gmdate("Y");
$x = 20;
$max = ($y + $x);
while ($y <= $max) {
echo "<option value='$y'>$y</option>";
$y = $y + 1;
}
?>
หากคุณต้องการคำตอบที่ไม่ได้ผลสามหลักปี 2100+ คุณต้องโมดูโลวันที่ดังนั้นคุณต้องเติมศูนย์นำหน้าสำหรับ xx00-xx09 ปีเพื่อไม่ให้ได้ปีหลักเดียว
นี่จะเป็นสิ่งสำคัญมากในปี 2080
<?php
for($i=0;$i<=20;$i++){
$aktDate = sprintf("%02d", ((date('y')+$i)%100));
echo "<option value=\"{$aktDate}\">{$aktDate}</option>\n";
}
?>
หลังจากอ่านความถูกต้องบนของ OP สำหรับอเมซอน 20 ปีแล้วฉันได้เขียนคำตอบง่ายๆนี้ใน 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>
สิ่งนี้ได้ลดจำนวนคำขอปีใหม่เหล่านี้เพื่อลบออกlast year
จากแบบฟอร์มอย่างมาก
ลูปเวอร์ชันลีนทำงานเร็วขึ้น ~ สองเท่า:
<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')
และdate('y')
20 ครั้งแต่ละครั้งค่อนข้างช้า
<script type="text/javascript">
var select = $(".card-expiry-year"),
year = new Date().getFullYear();
for (var i = 0; i < 20; i++) {
select.append($("<option value='"+(i + year)+"' "+(i === 0 ? "selected" : "")+">"+(i + year)+"</option>"))
}
</script>