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 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 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 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 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_HandlesErrorAccountTypeNotSupported()
        {
            var request = new CreditCardVerificationRequest
            {
                CreditCard = new CreditCardVerificationCreditCardRequest
                {
                    Number = SandboxValues.CreditCardNumber.VISA,
                    ExpirationDate = "05/2009",
                },
                Options = new CreditCardVerificationOptionsRequest
                {
                    AccountType = "credit",
                }
            };

            Result<CreditCardVerification> result = gateway.CreditCardVerification.Create(request);
            Assert.IsFalse(result.IsSuccess());
            Assert.AreEqual(ValidationErrorCode.VERIFICATION_OPTIONS_ACCOUNT_TYPE_NOT_SUPPORTED,
                            result.Errors.ForObject("Verification").ForObject("Options").OnField("AccountType")[0].Code);
        }
        public void Create_HandlesErrorAccountTypeInvalid()
        {
            var request = new CreditCardVerificationRequest
            {
                CreditCard = new CreditCardVerificationCreditCardRequest
                {
                    Number = SandboxValues.CreditCardNumber.HIPER,
                    ExpirationDate = "05/2009",
                },
                Options = new CreditCardVerificationOptionsRequest
                {
                    MerchantAccountId = MerchantAccountIDs.BRAZIL_MERCHANT_ACCOUNT_ID,
                    AccountType = "ach",
                }
            };

            Result<CreditCardVerification> result = gateway.CreditCardVerification.Create(request);
            Assert.IsFalse(result.IsSuccess());
            Assert.AreEqual(ValidationErrorCode.VERIFICATION_OPTIONS_ACCOUNT_TYPE_IS_INVALID,
                            result.Errors.ForObject("Verification").ForObject("Options").OnField("AccountType")[0].Code);
        }
        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 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);
        }