コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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();
        }
コード例 #12
0
        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);
        }
コード例 #13
0
 /// <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);
 }
コード例 #14
0
        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"));
            }
        }
コード例 #15
0
        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");
        }
コード例 #16
0
        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);
        }
コード例 #17
0
        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);
        }
コード例 #19
0
        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);
        }