From 1239527056cabc733facded27733a5aa3718f61e Mon Sep 17 00:00:00 2001 From: Mindaugas Vaiciunas Date: Tue, 16 Dec 2014 10:49:48 +0200 Subject: [PATCH 1/2] Fix test files naming --- .../PaymentKit Test/{PKCardCVCTest.h => PTKCardCVCTest.h} | 0 .../PaymentKit Test/{PKCardCVCTest.m => PTKCardCVCTest.m} | 0 .../PaymentKit Test/{PKCardExpiryTest.h => PTKCardExpiryTest.h} | 0 .../PaymentKit Test/{PKCardExpiryTest.m => PTKCardExpiryTest.m} | 0 .../PaymentKit Test/{PKCardNumberTest.h => PTKCardNumberTest.h} | 0 .../PaymentKit Test/{PKCardNumberTest.m => PTKCardNumberTest.m} | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename PaymentKit Example/PaymentKit Test/{PKCardCVCTest.h => PTKCardCVCTest.h} (100%) rename PaymentKit Example/PaymentKit Test/{PKCardCVCTest.m => PTKCardCVCTest.m} (100%) rename PaymentKit Example/PaymentKit Test/{PKCardExpiryTest.h => PTKCardExpiryTest.h} (100%) rename PaymentKit Example/PaymentKit Test/{PKCardExpiryTest.m => PTKCardExpiryTest.m} (100%) rename PaymentKit Example/PaymentKit Test/{PKCardNumberTest.h => PTKCardNumberTest.h} (100%) rename PaymentKit Example/PaymentKit Test/{PKCardNumberTest.m => PTKCardNumberTest.m} (100%) diff --git a/PaymentKit Example/PaymentKit Test/PKCardCVCTest.h b/PaymentKit Example/PaymentKit Test/PTKCardCVCTest.h similarity index 100% rename from PaymentKit Example/PaymentKit Test/PKCardCVCTest.h rename to PaymentKit Example/PaymentKit Test/PTKCardCVCTest.h diff --git a/PaymentKit Example/PaymentKit Test/PKCardCVCTest.m b/PaymentKit Example/PaymentKit Test/PTKCardCVCTest.m similarity index 100% rename from PaymentKit Example/PaymentKit Test/PKCardCVCTest.m rename to PaymentKit Example/PaymentKit Test/PTKCardCVCTest.m diff --git a/PaymentKit Example/PaymentKit Test/PKCardExpiryTest.h b/PaymentKit Example/PaymentKit Test/PTKCardExpiryTest.h similarity index 100% rename from PaymentKit Example/PaymentKit Test/PKCardExpiryTest.h rename to PaymentKit Example/PaymentKit Test/PTKCardExpiryTest.h diff --git a/PaymentKit Example/PaymentKit Test/PKCardExpiryTest.m b/PaymentKit Example/PaymentKit Test/PTKCardExpiryTest.m similarity index 100% rename from PaymentKit Example/PaymentKit Test/PKCardExpiryTest.m rename to PaymentKit Example/PaymentKit Test/PTKCardExpiryTest.m diff --git a/PaymentKit Example/PaymentKit Test/PKCardNumberTest.h b/PaymentKit Example/PaymentKit Test/PTKCardNumberTest.h similarity index 100% rename from PaymentKit Example/PaymentKit Test/PKCardNumberTest.h rename to PaymentKit Example/PaymentKit Test/PTKCardNumberTest.h diff --git a/PaymentKit Example/PaymentKit Test/PKCardNumberTest.m b/PaymentKit Example/PaymentKit Test/PTKCardNumberTest.m similarity index 100% rename from PaymentKit Example/PaymentKit Test/PKCardNumberTest.m rename to PaymentKit Example/PaymentKit Test/PTKCardNumberTest.m From 188493cdab0cab6ed13c698712ff7ad0b57088ca Mon Sep 17 00:00:00 2001 From: Mindaugas Vaiciunas Date: Wed, 17 Dec 2014 11:01:42 +0200 Subject: [PATCH 2/2] Add Maestro card type recognition --- .../PaymentKit Test/PTKCardNumberTest.m | 20 +++++++++++++++++++ PaymentKit/PTKCardNumber.m | 4 +++- PaymentKit/PTKCardType.h | 3 ++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/PaymentKit Example/PaymentKit Test/PTKCardNumberTest.m b/PaymentKit Example/PaymentKit Test/PTKCardNumberTest.m index 70ce78b..15a1644 100644 --- a/PaymentKit Example/PaymentKit Test/PTKCardNumberTest.m +++ b/PaymentKit Example/PaymentKit Test/PTKCardNumberTest.m @@ -14,15 +14,35 @@ @implementation PTKCardNumberTest - (void)testCardType { + // Amex card detection XCTAssertEqual([CNUMBER(@"378282246310005") cardType], PTKCardTypeAmex, @"Detects Amex"); XCTAssertEqual([CNUMBER(@"371449635398431") cardType], PTKCardTypeAmex, @"Detects Amex"); + + // Diners club detection XCTAssertEqual([CNUMBER(@"30569309025904") cardType], PTKCardTypeDinersClub, @"Detects Diners Club"); + + // Discover card detection XCTAssertEqual([CNUMBER(@"6011111111111117") cardType], PTKCardTypeDiscover, @"Detects Discover"); XCTAssertEqual([CNUMBER(@"6011000990139424") cardType], PTKCardTypeDiscover, @"Detects Discover"); + XCTAssertEqual([CNUMBER(@"6441234567890123") cardType], PTKCardTypeDiscover, @"Detects Discover"); + XCTAssertEqual([CNUMBER(@"6481234567890123") cardType], PTKCardTypeDiscover, @"Detects Discover"); + XCTAssertEqual([CNUMBER(@"6491234567890123") cardType], PTKCardTypeDiscover, @"Detects Discover"); + + // JCB detection XCTAssertEqual([CNUMBER(@"3530111333300000") cardType], PTKCardTypeJCB, @"Detects JCB"); + + // MasterCard detection XCTAssertEqual([CNUMBER(@"5555555555554444") cardType], PTKCardTypeMasterCard, @"Detects MasterCard"); + + // Visa detection XCTAssertEqual([CNUMBER(@"4111111111111111") cardType], PTKCardTypeVisa, @"Detects Visa"); XCTAssertEqual([CNUMBER(@"4012888888881881") cardType], PTKCardTypeVisa, @"Detects Visa"); + + // Maestro card detection + XCTAssertEqual([CNUMBER(@"5012345678901234") cardType], PTKCardTypeMaestro, @"Detects Maestro"); + XCTAssertEqual([CNUMBER(@"6759649826438453") cardType], PTKCardTypeMaestro, @"Detects Maestro"); + XCTAssertEqual([CNUMBER(@"5659649826438453") cardType], PTKCardTypeMaestro, @"Detects Maestro"); + XCTAssertEqual([CNUMBER(@"6959649826438453") cardType], PTKCardTypeMaestro, @"Detects Maestro"); } - (void)testLast4 diff --git a/PaymentKit/PTKCardNumber.m b/PaymentKit/PTKCardNumber.m index 8edb857..2e5c53a 100644 --- a/PaymentKit/PTKCardNumber.m +++ b/PaymentKit/PTKCardNumber.m @@ -41,7 +41,7 @@ - (PTKCardType)cardType if (range >= 40 && range <= 49) { return PTKCardTypeVisa; - } else if (range >= 50 && range <= 59) { + } else if (range >= 51 && range <= 55) { return PTKCardTypeMasterCard; } else if (range == 34 || range == 37) { return PTKCardTypeAmex; @@ -51,6 +51,8 @@ - (PTKCardType)cardType return PTKCardTypeJCB; } else if (range == 30 || range == 36 || range == 38 || range == 39) { return PTKCardTypeDinersClub; + } else if (range == 50 || (range >= 56 && range <= 69)) { + return PTKCardTypeMaestro; } else { return PTKCardTypeUnknown; } diff --git a/PaymentKit/PTKCardType.h b/PaymentKit/PTKCardType.h index a761ebd..b78cd31 100644 --- a/PaymentKit/PTKCardType.h +++ b/PaymentKit/PTKCardType.h @@ -16,7 +16,8 @@ typedef enum { PTKCardTypeDiscover, PTKCardTypeJCB, PTKCardTypeDinersClub, - PTKCardTypeUnknown + PTKCardTypeMaestro, + PTKCardTypeUnknown, } PTKCardType; #endif