Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F946957
creditCard.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
creditCard.js
View Options
if
(
!
dojo
.
_hasResource
[
"dojox.validate.creditCard"
]){
//_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo
.
_hasResource
[
"dojox.validate.creditCard"
]
=
true
;
dojo
.
provide
(
"dojox.validate.creditCard"
);
dojo
.
require
(
"dojox.validate._base"
);
/*
Validates Credit Cards using account number rules in conjunction with the Luhn algorigthm
*/
dojox
.
validate
.
isValidCreditCard
=
function
(
/*String|Int*/
value
,
/*String*/
ccType
){
//Summary:
// checks if type matches the # scheme, and if Luhn checksum is accurate (unless its an Enroute card, the checkSum is skipped)
//Value: Boolean
if
(
value
&&
ccType
&&
((
ccType
.
toLowerCase
()
==
'er'
||
dojox
.
validate
.
isValidLuhn
(
value
))
&&
(
dojox
.
validate
.
isValidCreditCardNumber
(
value
,
ccType
.
toLowerCase
())))){
return
true
;
//Boolean
}
return
false
;
//Boolean
}
dojox
.
validate
.
isValidCreditCardNumber
=
function
(
/*String|Int*/
value
,
/*String?*/
ccType
)
{
//Summary:
// checks if the # matches the pattern for that card or any card types if none is specified
// value == CC #, white spaces and dashes are ignored
// ccType is of the values in cardinfo -- if Omitted it it returns a | delimited string of matching card types, or false if no matches found
//Value: Boolean
if
(
typeof
value
!=
'string'
){
value
=
String
(
value
);
}
value
=
value
.
replace
(
/[- ]/g
,
''
);
//ignore dashes and whitespaces
/* FIXME: not sure on all the abbreviations for credit cards,below is what each stands for atleast to my knowledge
mc: Mastercard
ec: Eurocard
vi: Visa
ax: American Express
dc: Diners Club
bl: Carte Blanch
di: Discover
jcb: JCB
er: Enroute
*/
var
results
=
[];
var
cardinfo
=
{
'mc'
:
'5[1-5][0-9]{14}'
,
'ec'
:
'5[1-5][0-9]{14}'
,
'vi'
:
'4([0-9]{12}|[0-9]{15})'
,
'ax'
:
'3[47][0-9]{13}'
,
'dc'
:
'3(0[0-5][0-9]{11}|[68][0-9]{12})'
,
'bl'
:
'3(0[0-5][0-9]{11}|[68][0-9]{12})'
,
'di'
:
'6011[0-9]{12}'
,
'jcb'
:
'(3[0-9]{15}|(2131|1800)[0-9]{11})'
,
'er'
:
'2(014|149)[0-9]{11}'
};
if
(
ccType
&&
dojo
.
indexOf
(
cardinfo
,
ccType
.
toLowerCase
())){
return
Boolean
(
value
.
match
(
cardinfo
[
ccType
.
toLowerCase
()]));
// boolean
}
else
{
for
(
var
p
in
cardinfo
){
if
(
value
.
match
(
'^'
+
cardinfo
[
p
]
+
'$'
)
!=
null
){
results
.
push
(
p
);
}
}
return
(
results
.
length
)
?
results
.
join
(
'|'
)
:
false
;
// string | boolean
}
}
dojox
.
validate
.
isValidCvv
=
function
(
/*String|Int*/
value
,
/*String*/
ccType
)
{
//Summary:
// returns true if the security code (CCV) matches the correct format for supplied ccType
//Value: Boolean
if
(
typeof
value
!=
'string'
){
value
=
String
(
value
);
}
var
format
;
switch
(
ccType
.
toLowerCase
()){
case
'mc'
:
case
'ec'
:
case
'vi'
:
case
'di'
:
format
=
'###'
;
break
;
case
'ax'
:
format
=
'####'
;
break
;
default
:
return
false
;
//Boolean
}
var
flags
=
{
format
:
format
};
//FIXME? Why does isNumberFormat take an object for flags when its only parameter is either a string or an array inside the object?
if
((
value
.
length
==
format
.
length
)
&&
(
dojox
.
validate
.
isNumberFormat
(
value
,
flags
))){
return
true
;
//Boolean
}
return
false
;
//Boolean
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 09:43 (1 d, 19 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25010
Default Alt Text
creditCard.js (2 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment