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 86% rename from PaymentKit Example/PaymentKit Test/PKCardNumberTest.m rename to PaymentKit Example/PaymentKit Test/PTKCardNumberTest.m index 70ce78b..15a1644 100644 --- a/PaymentKit Example/PaymentKit Test/PKCardNumberTest.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