[interchange] Allow Union Pay cards to skip luhn-10

Mark Johnson interchange-cvs at icdevgroup.org
Wed Jan 8 02:58:34 UTC 2014


commit 47b83ecbd1adf1f374ac1aca5b297b1a2df6f577
Author: Mark Johnson <mark at endpoint.com>
Date:   Tue Jan 7 21:56:56 2014 -0500

    Allow Union Pay cards to skip luhn-10
    
    UP does not enforce luhn-10 on their numbers:
    
    - http://code.google.com/p/chromium/issues/detail?id=242274
    - http://en.wikipedia.org/wiki/Bank_card_number

 lib/Vend/Order.pm |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
---
diff --git a/lib/Vend/Order.pm b/lib/Vend/Order.pm
index b002787..11d8afd 100644
--- a/lib/Vend/Order.pm
+++ b/lib/Vend/Order.pm
@@ -379,6 +379,13 @@ sub validate_whole_cc {
 		$expire = $_ if m:/: ;
 	}
 	return 0 unless valid_exp_date($expire);
+
+	# UnionPay (cards that /^62/) does not enforce Luhn
+	# References:
+	# - http://code.google.com/p/chromium/issues/detail?id=242274
+	# - http://en.wikipedia.org/wiki/Bank_card_number
+	return 1 if $num =~ /^62/;
+
 	return luhn($num);
 
 }
@@ -633,7 +640,11 @@ sub encrypt_standard_cc {
 		return @return;
 	}
 
-	unless ($valid = luhn($num) || $force ) {
+	# UnionPay (cards that /^62/) does not enforce Luhn
+	# References:
+	# - http://code.google.com/p/chromium/issues/detail?id=242274
+	# - http://en.wikipedia.org/wiki/Bank_card_number
+	unless ($valid = luhn($num) || $force || $num =~ /^62/) {
 		my $msg = errmsg("Credit card number fails LUHN-10 check.");
 		$Vend::Session->{errors}{mv_credit_card_valid} = $msg;
 		push @return, $msg;



More information about the interchange-cvs mailing list