public void GatewayRejectionReason_ExposedOnVerification() { BraintreeGateway processingRulesGateway = new BraintreeGateway { Environment = Environment.DEVELOPMENT, MerchantId = "processing_rules_merchant_id", PublicKey = "processing_rules_public_key", PrivateKey = "processing_rules_private_key" }; Customer customer = processingRulesGateway.Customer.Create(new CustomerRequest()).Target; CreditCardRequest request = new CreditCardRequest { CustomerId = customer.Id, CardholderName = "John Doe", CVV = "200", Number = "4111111111111111", ExpirationDate = "05/12", Options = new CreditCardOptionsRequest { VerifyCard = true } }; Result <CreditCard> result = processingRulesGateway.CreditCard.Create(request); Assert.IsFalse(result.IsSuccess()); CreditCardVerification verification = result.CreditCardVerification; Assert.AreEqual(TransactionGatewayRejectionReason.CVV, verification.GatewayRejectionReason); }
public void ConstructFromResponse() { StringBuilder builder = new StringBuilder(); builder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); builder.Append("<api-error-response>"); builder.Append(" <verification>"); builder.Append(" <avs-error-response-code nil=\"true\"></avs-error-response-code>"); builder.Append(" <avs-postal-code-response-code>I</avs-postal-code-response-code>"); builder.Append(" <status>processor_declined</status>"); builder.Append(" <processor-response-code>2000</processor-response-code>"); builder.Append(" <avs-street-address-response-code>I</avs-street-address-response-code>"); builder.Append(" <processor-response-text>Do Not Honor</processor-response-text>"); builder.Append(" <cvv-response-code>M</cvv-response-code>"); builder.Append(" </verification>"); builder.Append(" <errors>"); builder.Append(" <errors type=\"array\"/>"); builder.Append(" </errors>"); builder.Append("</api-error-response>"); XmlDocument doc = new XmlDocument(); doc.LoadXml(builder.ToString()); CreditCardVerification verification = new CreditCardVerification(new NodeWrapper(doc).GetNode("//verification"), gateway); Assert.AreEqual(null, verification.AvsErrorResponseCode); Assert.AreEqual("I", verification.AvsPostalCodeResponseCode); Assert.AreEqual(VerificationStatus.PROCESSOR_DECLINED, verification.Status); Assert.AreEqual("2000", verification.ProcessorResponseCode); Assert.AreEqual("I", verification.AvsStreetAddressResponseCode); Assert.AreEqual("Do Not Honor", verification.ProcessorResponseText); Assert.AreEqual("M", verification.CvvResponseCode); }
public void VerifyValidCreditCardWithVerificationRiskData() { Customer customer = gateway.Customer.Create(new CustomerRequest()).Target; CreditCardRequest request = new CreditCardRequest { CustomerId = customer.Id, CardholderName = "John Doe", CVV = "123", Number = "4111111111111111", ExpirationDate = "05/12", Options = new CreditCardOptionsRequest { VerifyCard = true } }; Result <CreditCard> result = gateway.CreditCard.Create(request); Assert.IsTrue(result.IsSuccess()); CreditCard card = result.Target; CreditCardVerification verification = card.Verification; Assert.IsNotNull(verification); Assert.IsNotNull(verification.RiskData); }
public void Create_ReturnsSuccessfulResponseWithNetworkResponseCodeText() { var request = new CreditCardVerificationRequest { CreditCard = new CreditCardVerificationCreditCardRequest { Number = SandboxValues.CreditCardNumber.VISA, ExpirationDate = "05/2009", BillingAddress = new CreditCardAddressRequest { CountryName = "Greece", CountryCodeAlpha2 = "GR", CountryCodeAlpha3 = "GRC", CountryCodeNumeric = "300" } }, Options = new CreditCardVerificationOptionsRequest { MerchantAccountId = MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID, Amount = "5.00" } }; Result<CreditCardVerification> result = gateway.CreditCardVerification.Create(request); Assert.IsTrue(result.IsSuccess()); CreditCardVerification verification = result.Target; Assert.AreEqual(verification.MerchantAccountId, MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID); Assert.AreEqual("1000", verification.ProcessorResponseCode); Assert.AreEqual("Approved", verification.ProcessorResponseText); Assert.AreEqual(ProcessorResponseType.APPROVED, verification.ProcessorResponseType); Assert.AreEqual("XX", verification.NetworkResponseCode); Assert.AreEqual("sample network response text", verification.NetworkResponseText); }
public void ConstructFromResponseWithNoVerification() { StringBuilder builder = new StringBuilder(); builder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); builder.Append("<api-error-response>"); builder.Append(" <errors>"); builder.Append(" <errors type=\"array\"/>"); builder.Append(" </errors>"); builder.Append("</api-error-response>"); XmlDocument doc = new XmlDocument(); doc.LoadXml(builder.ToString()); CreditCardVerification verification = new CreditCardVerification(new NodeWrapper(doc).GetNode("//verification"), gateway); Assert.AreEqual(null, verification.Amount); Assert.AreEqual(null, verification.CurrencyIsoCode); Assert.AreEqual(null, verification.AvsErrorResponseCode); Assert.AreEqual(null, verification.AvsPostalCodeResponseCode); Assert.AreEqual(null, verification.Status); Assert.AreEqual(null, verification.ProcessorResponseCode); Assert.AreEqual(null, verification.AvsStreetAddressResponseCode); Assert.AreEqual(null, verification.ProcessorResponseText); Assert.AreEqual(null, verification.CvvResponseCode); }
public void Create_ReturnsSuccessfulResponse() { var request = new CreditCardVerificationRequest { CreditCard = new CreditCardVerificationCreditCardRequest { Number = SandboxValues.CreditCardNumber.VISA, ExpirationDate = "05/2009", BillingAddress = new CreditCardAddressRequest { CountryName = "Greece", CountryCodeAlpha2 = "GR", CountryCodeAlpha3 = "GRC", CountryCodeNumeric = "300" } }, Options = new CreditCardVerificationOptionsRequest { MerchantAccountId = MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID, Amount = "5.00" } }; Result <CreditCardVerification> result = gateway.CreditCardVerification.Create(request); Assert.IsTrue(result.IsSuccess()); CreditCardVerification verification = result.Target; Assert.AreEqual(verification.MerchantAccountId, MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID); }
public void Create_HandlesInvalidResponse() { var request = new CreditCardVerificationRequest { CreditCard = new CreditCardVerificationCreditCardRequest { Number = SandboxValues.CreditCardNumber.VISA, ExpirationDate = "05/2009", BillingAddress = new CreditCardAddressRequest { CountryName = "Greece", CountryCodeAlpha2 = "GR", CountryCodeAlpha3 = "GRC", CountryCodeNumeric = "300" } }, Options = new CreditCardVerificationOptionsRequest { MerchantAccountId = MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID, Amount = "-5.00" } }; Result<CreditCardVerification> result = gateway.CreditCardVerification.Create(request); Assert.IsFalse(result.IsSuccess()); CreditCardVerification verification = result.Target; Assert.AreEqual(ValidationErrorCode.VERIFICATION_OPTIONS_AMOUNT_CANNOT_BE_NEGATIVE, result.Errors.ForObject("Verification").ForObject("Options").OnField("Amount")[0].Code); }
public void CardTypeIndicators() { string name = Guid.NewGuid().ToString("n"); var createRequest = new CustomerRequest { CreditCard = new CreditCardRequest { CardholderName = name, Number = CreditCardNumbers.CardTypeIndicators.Unknown, ExpirationDate = "05/12", Options = new CreditCardOptionsRequest { VerifyCard = true } } }; gateway.Customer.Create(createRequest); CreditCardVerificationSearchRequest searchRequest = new CreditCardVerificationSearchRequest(). CreditCardCardholderName.Is(name); ResourceCollection <CreditCardVerification> collection = gateway.CreditCardVerification.Search(searchRequest); CreditCardVerification verification = collection.FirstItem; Assert.AreEqual(verification.CreditCard.Prepaid, Braintree.CreditCardPrepaid.UNKNOWN); Assert.AreEqual(verification.CreditCard.Debit, Braintree.CreditCardDebit.UNKNOWN); Assert.AreEqual(verification.CreditCard.DurbinRegulated, Braintree.CreditCardDurbinRegulated.UNKNOWN); Assert.AreEqual(verification.CreditCard.Commercial, Braintree.CreditCardCommercial.UNKNOWN); Assert.AreEqual(verification.CreditCard.Healthcare, Braintree.CreditCardHealthcare.UNKNOWN); Assert.AreEqual(verification.CreditCard.Payroll, Braintree.CreditCardPayroll.UNKNOWN); }
public void Create_ReturnsUnsuccessfulResponse() { var request = new CreditCardVerificationRequest { CreditCard = new CreditCardVerificationCreditCardRequest { Number = SandboxValues.CreditCardNumber.FailsVerification.VISA, ExpirationDate = "05/2009", BillingAddress = new CreditCardAddressRequest { CountryName = "Greece", CountryCodeAlpha2 = "GR", CountryCodeAlpha3 = "GRC", CountryCodeNumeric = "300" } }, Options = new CreditCardVerificationOptionsRequest { MerchantAccountId = MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID, Amount = "3000.00" } }; Result<CreditCardVerification> result = gateway.CreditCardVerification.Create(request); Assert.IsFalse(result.IsSuccess()); CreditCardVerification verification = result.CreditCardVerification; Assert.AreEqual("2000", verification.ProcessorResponseCode); Assert.AreEqual("Do Not Honor", verification.ProcessorResponseText); Assert.AreEqual(ProcessorResponseType.SOFT_DECLINED, verification.ProcessorResponseType); }
public void SearchAsync_OnMultipleValueFields() { Task.Run(async () => #endif { var createRequest = new CustomerRequest { CreditCard = new CreditCardRequest { Number = TestUtil.CreditCardNumbers.FailsSandboxVerification.Visa, ExpirationDate = "05/12", Options = new CreditCardOptionsRequest { VerifyCard = true } } }; Result<Customer> result = await gateway.Customer.CreateAsync(createRequest); CreditCardVerification verification1 = gateway.CreditCardVerification.Find(result.CreditCardVerification.Id); createRequest = new CustomerRequest { CreditCard = new CreditCardRequest { Number = TestUtil.CreditCardNumbers.FailsSandboxVerification.MasterCard, ExpirationDate = "05/12", Options = new CreditCardOptionsRequest { VerifyCard = true } } }; result = await gateway.Customer.CreateAsync(createRequest); CreditCardVerification verification2 = gateway.CreditCardVerification.Find(result.CreditCardVerification.Id); CreditCardVerificationSearchRequest searchRequest = new CreditCardVerificationSearchRequest(). CreditCardCardType.IncludedIn(CreditCardCardType.VISA, CreditCardCardType.MASTER_CARD). Ids.IncludedIn(verification1.Id, verification2.Id). Status.IncludedIn(verification1.Status); ResourceCollection<CreditCardVerification> collection = await gateway.CreditCardVerification.SearchAsync(searchRequest); Assert.AreEqual(2, collection.MaximumCount); } #if net452 ).GetAwaiter().GetResult(); }
public void ConstructFromResponse() { StringBuilder builder = new StringBuilder(); builder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); builder.Append("<api-error-response>"); builder.Append(" <verification>"); builder.Append(" <amount>1.02</amount>"); builder.Append(" <currency-iso-code>USD</currency-iso-code>"); builder.Append(" <avs-error-response-code nil=\"true\"></avs-error-response-code>"); builder.Append(" <avs-postal-code-response-code>I</avs-postal-code-response-code>"); builder.Append(" <status>processor_declined</status>"); builder.Append(" <processor-response-code>2000</processor-response-code>"); builder.Append(" <avs-street-address-response-code>I</avs-street-address-response-code>"); builder.Append(" <processor-response-text>Do Not Honor</processor-response-text>"); builder.Append(" <network-response-code>05</network-response-code>"); builder.Append(" <network-response-text>Do not Honor</network-response-text>"); builder.Append(" <network-transaction-id>123456789012345</network-transaction-id>"); builder.Append(" <cvv-response-code>M</cvv-response-code>"); builder.Append(" </verification>"); builder.Append(" <errors>"); builder.Append(" <errors type=\"array\"/>"); builder.Append(" </errors>"); builder.Append("</api-error-response>"); XmlDocument doc = new XmlDocument(); doc.LoadXml(builder.ToString()); CreditCardVerification verification = new CreditCardVerification(new NodeWrapper(doc).GetNode("//verification"), gateway); Assert.AreEqual(decimal.Parse("1.02"), verification.Amount); Assert.AreEqual("USD", verification.CurrencyIsoCode); Assert.AreEqual(null, verification.AvsErrorResponseCode); Assert.AreEqual("I", verification.AvsPostalCodeResponseCode); Assert.AreEqual(VerificationStatus.PROCESSOR_DECLINED, verification.Status); Assert.AreEqual("2000", verification.ProcessorResponseCode); Assert.AreEqual("I", verification.AvsStreetAddressResponseCode); Assert.AreEqual("Do Not Honor", verification.ProcessorResponseText); Assert.AreEqual("M", verification.CvvResponseCode); Assert.AreEqual("05", verification.NetworkResponseCode); Assert.AreEqual("Do not Honor", verification.NetworkResponseText); Assert.AreEqual("123456789012345", verification.NetworkTransactionId); }
/// <summary> /// Checks if the property's value is a valid credit card using the Luhn algorithm (Mod 10). /// <para>Supported Data Types: Strings, Integers.</para> /// </summary> /// <param name="validator">The validator to add more validations or sanitization.</param> /// <param name="errorMessage">An optional validation error message.</param> /// <returns>A Validator.</returns> public static Validator IsCreditCard(this Validator validator, string errorMessage = null) { try { var value = validator.GetValue(); if (!validator.IsOptional || value != null) { if (!CreditCardVerification.IsValidCardNumber(value.ToString())) { validator.AddError(errorMessage ?? DefaultErrorMessages.IsCreditCard); } } } catch (Exception) { validator.AddError(errorMessage ?? DefaultErrorMessages.IsCreditCard); } return(validator); }
public ActionResult Index(Pack pack, string creditCardNumber = "") { int currencyDifference = UserManager.GetUserByUserEmail(User.Identity.Name).currencybalance - (int)pack.Packprice; if (currencyDifference >= 0) { if (creditCardNumber == "") { int userID = UserManager.GetUserByUserEmail(User.Identity.Name).idperson; var pid = pack.IdPack; ShopManager.ExecuteOrder(userID, pid, creditCardNumber); TempData["orderComplete"] = "purchase complete!"; return(RedirectToAction("Index")); } else { if (CreditCardVerification.IsValidCardNumber(creditCardNumber)) { int userID = UserManager.GetUserByUserEmail(User.Identity.Name).idperson; var pid = pack.IdPack; ShopManager.ExecuteOrder(userID, pid, creditCardNumber); TempData["orderComplete"] = "purchase complete!"; return(RedirectToAction("Index")); } else { TempData["orderAbort"] = "Creditcard data wrong!"; return(RedirectToAction("Index")); } } } else { TempData["orderAbort"] = "not enough currency!"; return(RedirectToAction("Index")); } }
public void Create_WithAccountTypeDebit() { var request = new CreditCardVerificationRequest { CreditCard = new CreditCardVerificationCreditCardRequest { Number = SandboxValues.CreditCardNumber.HIPER, ExpirationDate = "05/2009", }, Options = new CreditCardVerificationOptionsRequest { MerchantAccountId = MerchantAccountIDs.BRAZIL_MERCHANT_ACCOUNT_ID, AccountType = "debit", } }; Result<CreditCardVerification> result = gateway.CreditCardVerification.Create(request); Assert.IsTrue(result.IsSuccess()); CreditCardVerification verification = result.Target; Assert.AreEqual(verification.CreditCard.AccountType, "debit"); }
public void Search_OnTextFields() { var createRequest = new CustomerRequest { Email = "*****@*****.**", CreditCard = new CreditCardRequest { Number = "4111111111111111", ExpirationDate = "05/12", BillingAddress = new CreditCardAddressRequest { PostalCode = "44444" }, Options = new CreditCardOptionsRequest { VerifyCard = true } } }; Result<Customer> result = gateway.Customer.Create(createRequest); string token = result.Target.CreditCards[0].Token; string postalCode = result.Target.CreditCards[0].BillingAddress.PostalCode; string customerId = result.Target.Id; string customerEmail = result.Target.Email; CreditCardVerificationSearchRequest searchRequest = new CreditCardVerificationSearchRequest(). PaymentMethodToken.Is(token). BillingAddressDetailsPostalCode.Is(postalCode). CustomerId.Is(customerId). CustomerEmail.Is(customerEmail); ResourceCollection<CreditCardVerification> collection = gateway.CreditCardVerification.Search(searchRequest); CreditCardVerification verification = collection.FirstItem; Assert.AreEqual(1, collection.MaximumCount); Assert.AreEqual(token, verification.CreditCard.Token); Assert.AreEqual(postalCode, verification.BillingAddress.PostalCode); }
public void ConstructFromResponseWithNoVerification() { StringBuilder builder = new StringBuilder(); builder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); builder.Append("<api-error-response>"); builder.Append(" <errors>"); builder.Append(" <errors type=\"array\"/>"); builder.Append(" </errors>"); builder.Append("</api-error-response>"); XmlDocument doc = new XmlDocument(); doc.LoadXml(builder.ToString()); CreditCardVerification verification = new CreditCardVerification(new NodeWrapper(doc).GetNode("//verification"), gateway); Assert.AreEqual(null, verification.AvsErrorResponseCode); Assert.AreEqual(null, verification.AvsPostalCodeResponseCode); Assert.AreEqual(null, verification.Status); Assert.AreEqual(null, verification.ProcessorResponseCode); Assert.AreEqual(null, verification.AvsStreetAddressResponseCode); Assert.AreEqual(null, verification.ProcessorResponseText); Assert.AreEqual(null, verification.CvvResponseCode); }
public void Create_WithMasterCardReturnsNetworkTransactionIdentifier() { var request = new CreditCardVerificationRequest { CreditCard = new CreditCardVerificationCreditCardRequest { Number = SandboxValues.CreditCardNumber.MASTER_CARD, ExpirationDate = "05/2009", }, Options = new CreditCardVerificationOptionsRequest { MerchantAccountId = MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID, Amount = "5.00" } }; Result<CreditCardVerification> result = gateway.CreditCardVerification.Create(request); Assert.IsTrue(result.IsSuccess()); CreditCardVerification verification = result.Target; Assert.IsNotNull(verification.NetworkTransactionId); }
public void VerifyInvalidCreditCard() { Customer customer = gateway.Customer.Create(new CustomerRequest()).Target; CreditCardRequest request = new CreditCardRequest { CustomerId = customer.Id, CardholderName = "John Doe", CVV = "123", Number = "5105105105105100", ExpirationDate = "05/12", Options = new CreditCardOptionsRequest { VerifyCard = true } }; Result <CreditCard> result = gateway.CreditCard.Create(request); Assert.IsFalse(result.IsSuccess()); CreditCardVerification verification = result.CreditCardVerification; Assert.AreEqual(VerificationStatus.PROCESSOR_DECLINED, verification.Status); Assert.IsNull(verification.GatewayRejectionReason); }