Skip to content

Commit

Permalink
Merge pull request #1081 from magento-okapis/MAGETWO-68868-1493844908
Browse files Browse the repository at this point in the history
[okapis] MAGETWO-68868: [Backport] Updated Discover and Maestro/Mastercard BINs - for 2.0.x
  • Loading branch information
paliarush authored May 4, 2017
2 parents 0aabab8 + 5736ce7 commit bc8e521
Show file tree
Hide file tree
Showing 7 changed files with 224 additions and 33 deletions.
2 changes: 1 addition & 1 deletion app/code/Magento/Authorizenet/Model/Source/Cctype.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ class Cctype extends PaymentCctype
*/
public function getAllowedTypes()
{
return ['VI', 'MC', 'AE', 'DI', 'OT'];
return ['VI', 'MC', 'AE', 'DI'];
}
}
21 changes: 10 additions & 11 deletions app/code/Magento/Payment/Model/Method/Cc.php
Original file line number Diff line number Diff line change
Expand Up @@ -133,21 +133,18 @@ public function validate()
// Visa
'VI' => '/^4[0-9]{12}([0-9]{3})?$/',
// Master Card
'MC' => '/^5[1-5][0-9]{14}$/',
'MC' => '/^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/',
// American Express
'AE' => '/^3[47][0-9]{13}$/',
// Discover
'DI' => '/^(30[0-5][0-9]{13}|3095[0-9]{12}|35(2[8-9][0-9]{12}|[3-8][0-9]{13})' .
'|36[0-9]{12}|3[8-9][0-9]{14}|6011(0[0-9]{11}|[2-4][0-9]{11}|74[0-9]{10}|7[7-9][0-9]{10}' .
'|8[6-9][0-9]{10}|9[0-9]{11})|62(2(12[6-9][0-9]{10}|1[3-9][0-9]{11}|[2-8][0-9]{12}' .
'|9[0-1][0-9]{11}|92[0-5][0-9]{10})|[4-6][0-9]{13}|8[2-8][0-9]{12})|6(4[4-9][0-9]{13}' .
'|5[0-9]{14}))$/',
'DI' => '/^(6011((0|9|[2-4])[0-9]{11,14}|(74|7[7-9]|8[6-9])[0-9]{10,13})' .
'|6(4[4-9][0-9]{13,16}|5[0-9]{14,17}))/',
'DN' => '/^3(0[0-5][0-9]{13,16}|095[0-9]{12,15}|(6|[8-9])[0-9]{14,17})/',
// UnionPay
'UN' => '/^622(1(2[6-9][0-9]{10,13}|[3-9][0-9]{11,14})|[3-8][0-9]{12,15}' .
'|9([[0-1][0-9]{11,14}|2[0-5][0-9]{10,13}))|62[4-6][0-9]{13,16}|628[2-8][0-9]{12,15}/',
// JCB
'JCB' => '/^(30[0-5][0-9]{13}|3095[0-9]{12}|35(2[8-9][0-9]{12}|[3-8][0-9]{13})|36[0-9]{12}' .
'|3[8-9][0-9]{14}|6011(0[0-9]{11}|[2-4][0-9]{11}|74[0-9]{10}|7[7-9][0-9]{10}' .
'|8[6-9][0-9]{10}|9[0-9]{11})|62(2(12[6-9][0-9]{10}|1[3-9][0-9]{11}|[2-8][0-9]{12}' .
'|9[0-1][0-9]{11}|92[0-5][0-9]{10})|[4-6][0-9]{13}|8[2-8][0-9]{12})|6(4[4-9][0-9]{13}' .
'|5[0-9]{14}))$/',
'JCB' => '/^35(2[8-9][0-9]{12,15}|[3-8][0-9]{13,16})/',
'MI' => '/^(5(0|[6-9])|63|67(?!59|6770|6774))[0-9]{10,17}/',
'MD' => '/^(6759(?!24|38|40|6[3-9]|70|76)[0-9]{8,15}|(676770|676774)[0-9]{6,13})/',
];
Expand Down Expand Up @@ -214,6 +211,8 @@ public function getVerificationRegEx()
'MC' => '/^[0-9]{3}$/',
'AE' => '/^[0-9]{4}$/',
'DI' => '/^[0-9]{3}$/',
'DN' => '/^[0-9]{3}$/',
'UN' => '/^[0-9]{3}$/',
'SS' => '/^[0-9]{3,4}$/',
'SM' => '/^[0-9]{3,4}$/',
'SO' => '/^[0-9]{3,4}$/',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ define(
{
title: 'MasterCard',
type: 'MC',
pattern: '^5([1-5]\\d*)?$',
pattern: '^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$',
gaps: [4, 8, 12],
lengths: [16],
code: {
Expand All @@ -49,9 +49,9 @@ define(
{
title: 'Diners',
type: 'DN',
pattern: '^3((0([0-5]\\d*)?)|[689]\\d*)?$',
pattern: '^(3(0[0-5]|095|6|[8-9]))\\d*$',
gaps: [4, 10],
lengths: [14],
lengths: [14, 16, 17, 18, 19],
code: {
name: 'CVV',
size: 3
Expand All @@ -60,9 +60,9 @@ define(
{
title: 'Discover',
type: 'DI',
pattern: '^6(0|01|011\\d*|5\\d*|4|4[4-9]\\d*)?$',
pattern: '^(6011(0|[2-4]|74|7[7-9]|8[6-9]|9)|6(4[4-9]|5))\\d*$',
gaps: [4, 8, 12],
lengths: [16],
lengths: [16, 17, 18, 19],
code: {
name: 'CID',
size: 3
Expand All @@ -71,9 +71,9 @@ define(
{
title: 'JCB',
type: 'JCB',
pattern: '^((2|21|213|2131\\d*)|(1|18|180|1800\\d*)|(3|35\\d*))$',
pattern: '^35(2[8-9]|[3-8])\\d*$',
gaps: [4, 8, 12],
lengths: [16],
lengths: [16, 17, 18, 19],
code: {
name: 'CVV',
size: 3
Expand All @@ -82,7 +82,7 @@ define(
{
title: 'UnionPay',
type: 'UN',
pattern: '^6(2\\d*)?$',
pattern: '^(622(1(2[6-9]|[3-9])|[3-8]|9([[0-1]|2[0-5]))|62[4-6]|628([2-8]))\\d*?$',
gaps: [4, 8, 12],
lengths: [16, 17, 18, 19],
code: {
Expand Down
4 changes: 2 additions & 2 deletions app/code/Magento/Paypal/Model/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -1265,7 +1265,7 @@ public function getWppCcTypesAsOptionArray()
public function getWppPeCcTypesAsOptionArray()
{
return $this->_cctypeFactory->create()->setAllowedTypes(
['VI', 'MC', 'SM', 'SO', 'OT', 'AE']
['VI', 'MC', 'SM', 'SO', 'AE']
)->toOptionArray();
}

Expand All @@ -1276,7 +1276,7 @@ public function getWppPeCcTypesAsOptionArray()
*/
public function getPayflowproCcTypesAsOptionArray()
{
return $this->_cctypeFactory->create()->setAllowedTypes(['AE', 'VI', 'MC', 'JCB', 'DI'])->toOptionArray();
return $this->_cctypeFactory->create()->setAllowedTypes(['AE', 'VI', 'MC', 'JCB', 'DI', 'DN'])->toOptionArray();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -414,24 +414,41 @@ test( "testValidateGroupedQty", function() {
});

test( "testValidateCCTypeSelect", function() {
expect(6);
expect(14);
var visaValid = $('<input id="visa-valid" type="text" value="4916808263499650"/>');
var visaInvalid = $('<input id="visa-invalid" type="text" value="1234567890123456"/>');
var mcValid = $('<input id="mc-valid" type="text" value="5203731841177490"/>');
var mcInvalid = $('<input id="mc-invalid" type="text" value="1111222233334444"/>');
var aeValid = $('<input id="ae-valid" type="text" value="376244899619217"/>');
var aeInvalid = $('<input id="ae-invalid" type="text" value="123451234512345"/>');

var diValid = $('<input id="di-valid" type="text" value="6011050000000009"/>');
var diInvalid = $('<input id="di-invalid" type="text" value="6011199900000005"/>');
var dnValid = $('<input id="dn-valid" type="text" value="3095434000000001"/>');
var dnInvalid = $('<input id="dn-invalid" type="text" value="3799999900000003"/>');
var jcbValid = $('<input id="jcb-valid" type="text" value="3528000000000007"/>');
var jcbInvalid = $('<input id="jcb-invalid" type="text" value="359000001111118"/>');
var upValid = $('<input id="up-valid" type="text" value="6221260000000000"/>');
var upInvalid = $('<input id="up-invalid" type="text" value="6229260000000002"/>');

ok($.validator.methods['validate-cc-type-select'].call(this, 'VI', null, visaValid));
ok(!$.validator.methods['validate-cc-type-select'].call(this, 'VI', null, visaInvalid));
ok($.validator.methods['validate-cc-type-select'].call(this, 'MC', null, mcValid));
ok(!$.validator.methods['validate-cc-type-select'].call(this, 'MC', null, mcInvalid));
ok($.validator.methods['validate-cc-type-select'].call(this, 'AE', null, aeValid));
ok(!$.validator.methods['validate-cc-type-select'].call(this, 'AE', null, aeInvalid));
ok($.validator.methods['validate-cc-type-select'].call(this, 'DI', null, diValid));
ok(!$.validator.methods['validate-cc-type-select'].call(this, 'DI', null, diInvalid));
ok($.validator.methods['validate-cc-type-select'].call(this, 'DN', null, dnValid));
ok(!$.validator.methods['validate-cc-type-select'].call(this, 'DN', null, dnInvalid));
ok($.validator.methods['validate-cc-type-select'].call(this, 'JCB', null, jcbValid));
ok(!$.validator.methods['validate-cc-type-select'].call(this, 'JCB', null, jcbInvalid));
ok($.validator.methods['validate-cc-type-select'].call(this, 'UP', null, upValid));
ok(!$.validator.methods['validate-cc-type-select'].call(this, 'UP', null, upInvalid));
});

test( "testValidateCCNumber", function() {
expect(8);
expect(37);
ok($.validator.methods['validate-cc-number'].call(this, '4916835098995909', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '5265071363284878', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '6011120623356953', null, null));
Expand All @@ -440,16 +457,48 @@ test( "testValidateCCNumber", function() {
ok(!$.validator.methods['validate-cc-number'].call(this, '5265071363284870', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '6011120623356951', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '371293266574619', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '2221220000000003', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '2721220000000008', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '601109020000000003', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '6011111144444444', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '6011222233334444', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '6011522233334447', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '601174455555553', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '6011745555555550', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '601177455555556', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '601182455555556', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '601187999555558', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '601287999555556', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '6444444444444443', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '6644444444444441', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '3044444444444444', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '3064444444444449', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '3095444444444442', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '3096444444444441', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '3696444444444445', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '3796444444444444', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '3896444444444443', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '3528444444444449', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '3529444444444448', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '6221262244444440', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '6229981111111111', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '6249981111111117', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '6279981111111110', null, null));
ok($.validator.methods['validate-cc-number'].call(this, '6282981111111115', null, null));
ok(!$.validator.methods['validate-cc-number'].call(this, '6289981111111118', null, null));
});

test( "testValidateCCType", function() {
expect(8);
expect(14);
var select = $('<select id="cc-type">' +
'<option value="">' +
'</option><option value="VI">' +
'</option><option value="MC">' +
'</option><option value="AE">' +
'</option><option value="DI">' +
'</option><option value="DN">' +
'</option><option value="JCB">' +
'</option><option value="UP">' +
'</option>' +
'</select>');

Expand All @@ -463,8 +512,17 @@ test( "testValidateCCType", function() {
ok($.validator.methods['validate-cc-type'].call(this, '371293266574617', null, select));
ok(!$.validator.methods['validate-cc-type'].call(this, '5265071363284878', null, select));
select.val('DI');
ok($.validator.methods['validate-cc-type'].call(this, '6011000990139424', null, select));
ok(!$.validator.methods['validate-cc-type'].call(this, '4916835098995909', null, select));
ok($.validator.methods['validate-cc-type'].call(this, '6011050000000009', null, select));
ok(!$.validator.methods['validate-cc-type'].call(this, '371293266574617', null, select));
select.val('DN');
ok($.validator.methods['validate-cc-type'].call(this, '3095434000000001', null, select));
ok(!$.validator.methods['validate-cc-type'].call(this, '6011050000000009', null, select));
select.val('JCB');
ok($.validator.methods['validate-cc-type'].call(this, '3528000000000007', null, select));
ok(!$.validator.methods['validate-cc-type'].call(this, '3095434000000001', null, select));
select.val('UP');
ok($.validator.methods['validate-cc-type'].call(this, '6221260000000000', null, select));
ok(!$.validator.methods['validate-cc-type'].call(this, '3528000000000007', null, select));
});

test( "testValidateCCExp", function() {
Expand Down
Loading

0 comments on commit bc8e521

Please sign in to comment.