1
8
9 import com.sekati.crypt.Luhn;
10 import com.sekati.utils.StringUtils;
11
12
16 class com.sekati.validate.CreditCardValidation {
17
18 private static var DEFAULT_ENCODE_DIGITS_SHOWN:Number = 4;
19 private static var DEFAULT_ENCODE_CHARACTER:String = "*";
20 private static var MINIMUM_CARD_LENGTH:Number = 13;
21 private static var MAXIMUM_CARD_LENGTH:Number = 16;
22
23
32 public static function isValidExDate (nMonth:Number, nYear:Number):Boolean {
33 var objDate:Date = new Date();
34 var nCurrentMonth:Number = objDate.getMonth() + 1;
35 var nCurrentYear:Number = objDate.getFullYear();
36 if((nYear > nCurrentYear) || (nYear == nCurrentYear && nMonth >= nCurrentMonth)) {
37 return true;
38 }
39 return false;
40 }
41
42
48 public static function isValidNumber (strNumber:String):Boolean {
49 var ccNumber:String = StringUtils.toNumeric(strNumber);
50 if(ccNumber.length > 0 && !isNaN(ccNumber) && (ccNumber.length >= MINIMUM_CARD_LENGTH && ccNumber.length <= MAXIMUM_CARD_LENGTH)) {
51 return Luhn.mod10(ccNumber);
52 }
53 return false;
54 }
55
56
67 public static function EncodeNumber(strNumber:String, nDigitsShown:Number, strCharacter:String):String {
68 var strEncoded:String = "";
69 nDigitsShown = (nDigitsShown != undefined && nDigitsShown != null) ? nDigitsShown : DEFAULT_ENCODE_DIGITS_SHOWN;
70 strCharacter = (strCharacter != undefined && strCharacter != null) ? strCharacter : DEFAULT_ENCODE_CHARACTER;
71 for(var i:Number=0; i < strNumber.length - nDigitsShown; i++) {
72 strEncoded += strCharacter;
73 }
74 strEncoded += strNumber.slice(-nDigitsShown);
75 return strEncoded;
76 }
77
78 private function CreditCardValidation(){
79 }
80 }