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); }
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); }
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); }
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); }
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); }
public DebitCardPayment(IChargable chargable, long charged, CardIssuer cardIssuer, string cardNumber, long basePoint) : base(chargable, charged, charged, basePoint) { _cardIssuer = cardIssuer; _cardNumber = cardNumber; }
public static bool IsAValidLength(CardIssuer brand, int length) { var rule = CreditCardData.BrandsData[brand].Rules.First(); return(rule.Lengths.Contains(length)); }
public static bool IsAccepted(this CardIssuer issuer) => acceptedCardIssuers.Contains(issuer);
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); } }
public static ImageSource GetIconImageSource(CardIssuer issuer) => ImageSource.FromFile( issuer.IsAccepted() ? issuer.ToString().PascalToSnakeCase() : (ThemeEngine.IsEffectivelyLight ? "unknown_light" : "unknown_dark") + ".png");
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); }