From bf59e6d1c2bb31bc37238022631e2f68632adf75 Mon Sep 17 00:00:00 2001 From: Adam Dunkley Date: Mon, 19 Jan 2015 01:40:13 +0000 Subject: [PATCH 1/2] Ensuring card length is correct Otherwise this will validate early (for instance card number `4242 4242 4242 4242` will pass luhn validation at `4242 4242 4242 42` --- src/validate.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/validate.js b/src/validate.js index ecf412c..2b4242b 100644 --- a/src/validate.js +++ b/src/validate.js @@ -98,7 +98,14 @@ angular.module('angularPayments') typeModel.assign(scope, card.type); } - ret = (ref = num.length, __indexOf.call(card.length, ref) >= 0) && (card.luhn === false || _luhnCheck(num)); + var length = 16; + switch (card.type) { + case 'amex': + length = 15; + break; + } + + ret = (ref = num.length, __indexOf.call(card.length, ref) >= 0) && num.length == length && (card.luhn === false || _luhnCheck(num)); return ret; } From 1b5cb4b707948f61814018cf773a518c97603be7 Mon Sep 17 00:00:00 2001 From: Adam Dunkley Date: Mon, 19 Jan 2015 01:41:33 +0000 Subject: [PATCH 2/2] Updating lib Sorry I haven't minified as I am doing this within github as I am lazy, also don't know what minification settings you use --- lib/angular-payments.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/angular-payments.js b/lib/angular-payments.js index 9e7bb49..fb2a94d 100755 --- a/lib/angular-payments.js +++ b/lib/angular-payments.js @@ -617,7 +617,14 @@ angular.module('angularPayments', []);angular.module('angularPayments') typeModel.assign(scope, card.type); } - ret = (ref = num.length, __indexOf.call(card.length, ref) >= 0) && (card.luhn === false || _luhnCheck(num)); + var length = 16; + switch (card.type) { + case 'amex': + length = 15; + break; + } + + ret = (ref = num.length, __indexOf.call(card.length, ref) >= 0) && num.length == length && (card.luhn === false || _luhnCheck(num)); return ret; }