private int SetEmisor(CardIssuer tipo)
        {
            int localtipo = 0;

            switch (tipo)
            {
            case CardIssuer.AmericanExpress:
                localtipo = 3; break;

            case CardIssuer.DinersClub:
                localtipo = 7; break;

            case CardIssuer.Discover:
                localtipo = 6; break;

            case CardIssuer.MasterCard:
                localtipo = 5; break;

            case CardIssuer.Unknown:
                localtipo = 98; break;

            case CardIssuer.Visa:
                localtipo = 4; break;

            default:
                localtipo = 98; break;
            }
            return(localtipo);
        }
Exemplo n.º 2
0
        public static string RandomCardNumber(CardIssuer brand, int length = 0)
        {
            if (length > 0 && !ValidationHelper.IsAValidLength(brand, length))
            {
                throw new ArgumentException(String.Format("{0} is not valid length for card issuer {1}", length, brand));
            }

            string number = "";

            var rule = CreditCardData.BrandsData[brand].Rules.First();

            length = length > 0 ? length : rule.Lengths.First();

            if (brand != CardIssuer.Unknown)
            {
                number += rule.Prefixes[RandomNumber.Next(0, rule.Prefixes.Count)];
            }

            var numberLength = number.Length;

            for (int i = 0; i < length - 1 - numberLength; i++)
            {
                number += RandomNumber.Next(0, 10);
            }

            number += Luhn.CreateCheckDigit(number);

            return(number);
        }
Exemplo n.º 3
0
 public CreditCardPayment(IChargable chargable, long charged, CreditCardType creditCardType, string cardNumber, CardIssuer cardIssuer, long basePoint)
     : base(chargable, charged, charged, basePoint)
 {
     _creditCardType = creditCardType;
     _cardIssuer = cardIssuer;
     _cardNumber = cardNumber;
 }
        public static string RandomCardNumber(CardIssuer cardIssuer, int length)
        {
            var rules = ValidationHelper.GetRulesByLength(cardIssuer, length);

            if (length > 0 && rules.Count == 0)
            {
                throw new ArgumentException($"The card number length [{length}] is not valid for the card issuer [{cardIssuer}].");
            }

            string number = "";

            var rule = rules.Count == 0 ? CreditCardData.BrandsData[cardIssuer].Rules.First() : rules.First();

            length = length > 0 ? length : rule.Lengths.First();

            number += rule.Prefixes[RandomNumber.Value.Next(0, rule.Prefixes.Count)];

            var numberLength = number.Length;

            for (int i = 0; i < length - 1 - numberLength; i++)
            {
                number += RandomNumber.Value.Next(0, 10);
            }

            number += Luhn.CreateCheckDigit(number);

            return(number);
        }
Exemplo n.º 5
0
        public void PaymentResponseXmlTest()
        {
            PaymentResponse response = new PaymentResponse();

            response.Account          = sx.ACCOUNT;
            response.AcquirerResponse = sx.ACQUIRER_RESPONSE;
            response.AuthCode         = sx.AUTH_CODE;
            response.AuthTimeTaken    = sx.AUTH_TIME_TAKEN;
            response.BatchId          = sx.BATCH_ID.ToString();

            CardIssuer cardIssuer = new CardIssuer();

            cardIssuer.Bank        = sx.BANK;
            cardIssuer.Country     = sx.COUNTRY;
            cardIssuer.CountryCode = sx.COUNTRY_CODE;
            cardIssuer.Region      = sx.REGION;
            response.CardIssuer    = cardIssuer;

            response.CvnResult         = sx.CVN_RESULT;
            response.MerchantId        = sx.MERCHANT_ID;
            response.Message           = sx.MESSAGE;
            response.OrderId           = sx.ORDER_ID;
            response.PaymentsReference = sx.PASREF;
            response.Result            = sx.RESULT_SUCCESS;
            response.Hash      = sx.RESPONSE_HASH;
            response.Timestamp = sx.TIMESTAMP_RESPONSE;
            response.TimeTaken = sx.TIME_TAKEN;

            TssResult tssResult = new TssResult();

            tssResult.Result = sx.TSS_RESULT;

            List <TssResultCheck> checks = new List <TssResultCheck>();
            TssResultCheck        check  = new TssResultCheck();

            check.Id    = sx.TSS_RESULT_CHECK1_ID;
            check.Value = sx.TSS_RESULT_CHECK1_VALUE;
            checks.Add(check);
            check       = new TssResultCheck();
            check.Id    = sx.TSS_RESULT_CHECK2_ID;
            check.Value = sx.TSS_RESULT_CHECK2_VALUE;
            checks.Add(check);

            tssResult.Checks   = checks;
            response.TssResult = tssResult;

            response.AvsAddressResponse  = sx.AVS_ADDRESS;
            response.AvsPostcodeResponse = sx.AVS_POSTCODE;

            //marshal to XML
            string xml = response.ToXml();

            //unmarshal back to response
            PaymentResponse fromXmlResponse = new PaymentResponse().FromXml(xml);

            sx.checkUnmarshalledPaymentResponse(fromXmlResponse);
        }
        public void CheckRanges()
        {
            foreach (var range in this.Ranges)
            {
                CardIssuer ci = range.Range.CreditCardBrandIgnoreLength();

                (ci.ToString().ToLower() == range.CardIssuer.ToLower()).ShouldBe(true);
            }
        }
        public void CheckRanges()
        {
            foreach (var range in this.Ranges)
            {
                CardIssuer ci = range.Range.CreditCardBrandIgnoreLength();

                (ci.ToString().ToLower() == range.CardIssuer.ToLower()).ShouldBe(true);
                //if (cardDetector.Brand.ToString().ToLower() != range.CardIssuer.ToLower())
                //    throw new Exception();
            }
        }
        public static List <int> Lengths(CardIssuer cardIssuer)
        {
            var lengths = new List <int>();

            foreach (var item in Lengths()
                     .SelectMany(item => item.Cast <KeyValuePair <string, List <int> > >())
                     .Where(x => x.Key.Equals(cardIssuer.ToString(), StringComparison.OrdinalIgnoreCase)))
            {
                lengths = item.Value;
            }

            return(lengths);
        }
        public static TheoryData <KeyValuePair <string, string[]> > CreditCards(CardIssuer cardIssuer)
        {
            var theoryData = new TheoryData <KeyValuePair <string, string[]> >();

            foreach (var creditCard in CreditCards()
                     .SelectMany(item => item.Cast <KeyValuePair <string, string[]> >())
                     .Where(x => x.Key.Equals(cardIssuer.ToString(), StringComparison.OrdinalIgnoreCase)))
            {
                theoryData.Add(creditCard);
            }

            return(theoryData);
        }
            public void GivenACardIssuer_RandomCardNumber_ReturnsAValidCard(CardIssuer cardIssuer)
            {
                // Arrange.

                // Act.
                var number = CreditCardFactory.RandomCardNumber(cardIssuer);

                // Assert.
                var detector = new CreditCardDetector(number);
                detector.Brand.ShouldBe(cardIssuer);
                detector.IsValid(cardIssuer).ShouldBe(true);
                detector.IsValid().ShouldBe(true);
            }
            public void GivenACardIssuer_RandomCardNumber_ReturnsAValidCard(CardIssuer cardIssuer)
            {
                // Arrange.

                // Act.
                var number = CreditCardFactory.RandomCardNumber(cardIssuer);

                // Assert.
                var detector = new CreditCardDetector(number);

                detector.Brand.ShouldBe(cardIssuer);
                detector.IsValid(cardIssuer).ShouldBe(true);
                detector.IsValid().ShouldBe(true);
            }
Exemplo n.º 12
0
        internal static List <Rule> GetRulesByLength(CardIssuer cardIssuer, int length)
        {
            var rules = CreditCardData.BrandsData[cardIssuer].Rules;

            var result = new List <Rule>();

            foreach (var rule in rules)
            {
                if (rule.Lengths.Contains(length))
                {
                    result.Add(rule);
                }
            }

            return(result);
        }
        public static String RandomCardNumber(CardIssuer brand)
        {
            String number = "";
            var rule = CreditCardData.BrandsData[brand].Rules.First();

            if (brand != CardIssuer.Unknown)
                number += rule.Prefixes[rnd.Next(0, rule.Prefixes.Count)];

            var numberLength = number.Length;
            for (int i = 0; i < rule.Lengths.First() - 1 - numberLength; i++)
            {
                number += rnd.Next(0, 10);
            }

            number += Luhn.CreateCheckDigit(number);

            return number;
        }
        public static string RandomCardNumber(CardIssuer brand)
        {
            string number = "";
            var    rule   = CreditCardData.BrandsData[brand].Rules.First();

            if (brand != CardIssuer.Unknown)
            {
                number += rule.Prefixes[RandomNumber.Next(0, rule.Prefixes.Count)];
            }

            var numberLength = number.Length;

            for (int i = 0; i < rule.Lengths.First() - 1 - numberLength; i++)
            {
                number += RandomNumber.Next(0, 10);
            }

            number += Luhn.CreateCheckDigit(number);

            return(number);
        }
        private void LoadCard()
        {
            foreach (var brandData in CreditCardData.BrandsData)
            {
                //cardInfo from one brand.
                var cardInfo = brandData.Value;

                foreach (var rule in cardInfo.Rules)
                {
                    if (rule.Lengths.Any(c => c == _cardNumber.Length) && rule.Prefixes.Any(c => _cardNumber.StartsWith(c)))
                    {
                        _cardIssuer = brandData.Key;
                        _brandName = cardInfo.BrandName;
                        return;
                    }
                }
            }

            _cardIssuer = CardIssuer.Unknown;
            _brandName = CardIssuer.Unknown.ToString();
        }
 public static string RandomCardNumber(CardIssuer brand)
 {
     return(RandomCardNumber(brand, 0));
 }
        public static TheoryData<KeyValuePair<string, string[]>> CreditCards(CardIssuer cardIssuer)
        {
            var theoryData = new TheoryData<KeyValuePair<string, string[]>>();
            foreach (var creditCard in CreditCards()
                .SelectMany(item => item.Cast<KeyValuePair<string, string[]>>())
                .Where(x => x.Key.Equals(cardIssuer.ToString(), StringComparison.OrdinalIgnoreCase)))
            {
                theoryData.Add(creditCard);
            }

            return theoryData;
        }
            public void GivenACardIssuer_RandomCardNumber_ReturnsAValidCard_Length_Invalid(CardIssuer cardIssuer)
            {
                // Arrange.
                string    number = "";
                Exception e      = new Exception();
                int       length = 99;

                // Act.
                try
                {
                    number = CreditCardFactory.RandomCardNumber(cardIssuer, length);
                }
                catch (Exception ex)
                {
                    e = ex;
                }

                // Assert
                e.ShouldBeOfType <ArgumentException>();
                e.Message.ShouldBe($"The card number length [{length}] is not valid for the card issuer [{cardIssuer}].");
                number.Length.ShouldBe(0);
            }
            public void GivenACardIssuer_RandomCardNumber_ReturnsAValidCard_Length_MaxLength(CardIssuer cardIssuer)
            {
                // Arrange.
                var maxLength = TestHelperUtilities.Lengths(cardIssuer).Last();

                // Act.
                var number = CreditCardFactory.RandomCardNumber(cardIssuer, maxLength);

                // Assert.
                var detector = new CreditCardDetector(number);

                number.Length.ShouldBe(maxLength);
                detector.Brand.ShouldBe(cardIssuer);
                detector.IsValid(cardIssuer).ShouldBe(true);
                detector.IsValid().ShouldBe(true);
            }
Exemplo n.º 20
0
 public DebitCardPayment(IChargable chargable, long charged, CardIssuer cardIssuer, string cardNumber, long basePoint) : base(chargable, charged, charged, basePoint)
 {
     _cardIssuer = cardIssuer;
     _cardNumber = cardNumber;
 }
Exemplo n.º 21
0
        public static bool IsAValidLength(CardIssuer brand, int length)
        {
            var rule = CreditCardData.BrandsData[brand].Rules.First();

            return(rule.Lengths.Contains(length));
        }
Exemplo n.º 22
0
 public static bool IsAccepted(this CardIssuer issuer) => acceptedCardIssuers.Contains(issuer);
Exemplo n.º 23
0
 public DebitCardPayment(IChargable chargable, long charged, CardIssuer cardIssuer, string cardNumber, long basePoint)
     : base(chargable, charged, charged, basePoint)
 {
     _cardIssuer = cardIssuer;
     _cardNumber = cardNumber;
 }
            public void GivenACardIssuer_RandomCardNumber_ReturnsAValidCard_Length_MinLength(CardIssuer cardIssuer)
            {
                // Arrange.
                var lengths = TestHelperUtilities.Lengths(cardIssuer);

                foreach (var len in lengths)
                {
                    // Act.
                    var number = CreditCardFactory.RandomCardNumber(cardIssuer, len);

                    // Assert.
                    var detector = new CreditCardDetector(number);
                    number.Length.ShouldBe(len);
                    detector.Brand.ShouldBe(cardIssuer);
                    detector.IsValid(cardIssuer).ShouldBe(true);
                    detector.IsValid().ShouldBe(true);
                }
            }
Exemplo n.º 25
0
 public static ImageSource GetIconImageSource(CardIssuer issuer) => ImageSource.FromFile(
     issuer.IsAccepted() ? issuer.ToString().PascalToSnakeCase() : (ThemeEngine.IsEffectivelyLight ? "unknown_light" : "unknown_dark") + ".png");
Exemplo n.º 26
0
            public void GivenACardIssuer_RandomCardNumber_ReturnsAValidCard_Length_Invalid(CardIssuer cardIssuer)
            {
                // Arrange.
                string    number = "";
                Exception e      = new Exception();

                // Act.
                try
                {
                    number = CreditCardFactory.RandomCardNumber(cardIssuer, 99);
                }
                catch (Exception ex)
                {
                    e = ex;
                }

                // Assert
                e.ShouldBeOfType <ArgumentException>();
                e.Message.ShouldBe("99 is not valid length for card issuer " + cardIssuer.ToString());
                number.Length.ShouldBe(0);
            }
Exemplo n.º 27
0
 public CreditCardPayment(IChargable chargable, long charged, CreditCardType creditCardType, string cardNumber, CardIssuer cardIssuer, long basePoint) : base(chargable, charged, charged, basePoint)
 {
     _creditCardType = creditCardType;
     _cardIssuer     = cardIssuer;
     _cardNumber     = cardNumber;
 }