다양한 온라인 서비스는 신용 카드와 관련하여 최대 유효 기간에 대해 다른 값을 갖습니다.
예를 들어 :
- 베이스 캠프 : +15 년 (2025)
- 아마존 : +20 년 (2030)
- 페이팔 : +19 년 (2029)
여기에서 합리적인 최대 값은 얼마입니까? 공식적인 지침이 있습니까?
다양한 온라인 서비스는 신용 카드와 관련하여 최대 유효 기간에 대해 다른 값을 갖습니다.
예를 들어 :
여기에서 합리적인 최대 값은 얼마입니까? 공식적인 지침이 있습니까?
답변:
신용 카드 발급 기관이 발급 한 카드가 만료 될 때 각각을 선택할 수 있으므로 공식적인 지침은 없습니다. 실제로 그들은 오랫동안 카드를 발행 해 왔습니다. 만기일을 얼마나 멀리 잡아야하는지 결정하려는 경우, 안전한 쪽에서 실수를하여 고객에게 몇 년을 선택하십시오. 그렇게하면 나중에 응용 프로그램을 증명할 수 있습니다.
참고로, 많은 신용 카드 발급 기관은 신용 카드 구매 승인 여부를 결정할 때 만료 날짜를 사용하지 않습니다. 따라서 잘못된 날짜가 제공되는 것이 걱정된다면 프로세서는 궁극적으로 거래 승인 여부에 대한 최종 결정을 내릴 것이므로 걱정하지 않아도됩니다.
2017 년 7 월 : 거의 50 년이 지난 카드를 사용하는 최종 사용자가 있습니다.
현재 날짜에 + 15-20 년을 동적으로 추가하거나 연도에 대한 텍스트 상자 입력을 제공합니다 (개인적으로 연도 목록을 스크롤하는 것보다 두 자리 숫자를 입력하는 것이 더 빠릅니다).
이론 상한으로서, 카드 소지자의 예상 수명 이상을 고려할 필요는 없습니다. Wikipedia는 살아있는 사람의 전기 에 대한 편집 표준에서 이것을 수행합니다 .
신뢰할만한 소식통이 개인의 사망을 확인하지 않는 한 115 년 전에 태어난 개인은이 정책의 적용을받습니다. 115 세 이상의 사람들은 가장 나이가 많은 사람들이 목록에없는 한 사망 한 것으로 추정됩니다.
따라서 코드에서 현재 연도를 조회하고 115를 더한 다음이를 신용 카드 만료 날짜의 이론 상한으로 사용하십시오. 해당 코드를 다시 만질 필요가 없습니다.
max
가 많은 사람이 일단 116이되면 양식을 사용하는 경우에 대비하여 나이 입력 필드를 제한하는 것이 좋은 생각 인 것 같습니다 ... : [
다음은 CC 유효성 검사를 위해 다가오는 연도의 사용자 정의 가능한 목록을 표시하는 데 사용할 수있는 Javascript 코드 스 니펫입니다.
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>
잘 부탁합니다, @Alistair.
다음은 ASP.NET MVC의 월 및 연도 생성입니다. 이것을 뷰 모델에 추가하십시오.
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>
두 번째 예제는 첫 번째 예제보다 두 배 빠르게 실행되지만 여전히 날짜를 가져 와서 40 배가 아닌 20 배로 연도를 추출합니다. 루프를 더 잘 풀면 다음과 같습니다.
$StartDate=date('Y');
$EndDate=$StartDate+21;
for($i=$StartDate;$i<$EndDate;$i++){
echo "<option value='".$i."'>".substr($i,2)."</option>\n";
그것은 두 배 빠른 예제보다 약 20 배 빠르며 연도는 날짜를 한 번에서 다음으로 변경하여 예기치 않은 결과를 초래할 수있는 예기치 않은 결과로 이어질 수있는 원래 코드의 사소한 버그를 해결합니다.
아마존에 대한 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 배가 다소 느리다는 것을 알고 있습니까?