public void CreateFromPaymentMethodNonce()
        {
            Result <Customer> result = gateway.Customer.Create(new CustomerRequest());

            Assert.IsTrue(result.IsSuccess());

            string nonce   = Braintree.Test.Nonce.VisaCheckoutDiscover;
            var    request = new PaymentMethodRequest
            {
                CustomerId         = result.Target.Id,
                PaymentMethodNonce = nonce
            };
            Result <PaymentMethod> paymentMethodResult = gateway.PaymentMethod.Create(request);

            Assert.IsTrue(paymentMethodResult.IsSuccess());

            Assert.IsInstanceOf(typeof(VisaCheckoutCard), paymentMethodResult.Target);
            VisaCheckoutCard visaCheckoutCard = (VisaCheckoutCard)paymentMethodResult.Target;

            Assert.AreEqual("abc123", visaCheckoutCard.CallId);
            Assert.IsNotNull(visaCheckoutCard.BillingAddress);
            Assert.IsNotNull(visaCheckoutCard.Bin);
            Assert.IsNotNull(visaCheckoutCard.CardType);
            Assert.IsNotNull(visaCheckoutCard.CardholderName);
            Assert.IsNotNull(visaCheckoutCard.Commercial);
            Assert.IsNotNull(visaCheckoutCard.CountryOfIssuance);
            Assert.IsNotNull(visaCheckoutCard.CreatedAt);
            Assert.IsNotNull(visaCheckoutCard.CustomerId);
            Assert.IsNotNull(visaCheckoutCard.CustomerLocation);
            Assert.IsNotNull(visaCheckoutCard.Debit);
            Assert.IsNotNull(visaCheckoutCard.IsDefault);
            Assert.IsNotNull(visaCheckoutCard.DurbinRegulated);
            Assert.IsNotNull(visaCheckoutCard.ExpirationDate);
            Assert.IsNotNull(visaCheckoutCard.ExpirationMonth);
            Assert.IsNotNull(visaCheckoutCard.ExpirationYear);
            Assert.IsNotNull(visaCheckoutCard.IsExpired);
            Assert.IsNotNull(visaCheckoutCard.Healthcare);
            Assert.IsNotNull(visaCheckoutCard.ImageUrl);
            Assert.IsNotNull(visaCheckoutCard.IssuingBank);
            Assert.IsNotNull(visaCheckoutCard.LastFour);
            Assert.IsNotNull(visaCheckoutCard.MaskedNumber);
            Assert.IsNotNull(visaCheckoutCard.Payroll);
            Assert.IsNotNull(visaCheckoutCard.Prepaid);
            Assert.IsNotNull(visaCheckoutCard.ProductId);
            Assert.IsNotNull(visaCheckoutCard.Subscriptions);
            Assert.IsNotNull(visaCheckoutCard.Token);
            Assert.IsNotNull(visaCheckoutCard.UniqueNumberIdentifier);
            Assert.IsNotNull(visaCheckoutCard.UpdatedAt);
        }
        public void CreateWithVerification()
        {
            Result <Customer> result = gateway.Customer.Create(new CustomerRequest());

            Assert.IsTrue(result.IsSuccess());

            string nonce   = Braintree.Test.Nonce.VisaCheckoutDiscover;
            var    request = new PaymentMethodRequest
            {
                CustomerId         = result.Target.Id,
                PaymentMethodNonce = nonce,
                Options            = new PaymentMethodOptionsRequest()
                {
                    VerifyCard = true
                }
            };
            Result <PaymentMethod> paymentMethodResult = gateway.PaymentMethod.Create(request);

            Assert.IsTrue(paymentMethodResult.IsSuccess());

            VisaCheckoutCard visaCheckoutCard = (VisaCheckoutCard)paymentMethodResult.Target;

            Assert.AreEqual(VerificationStatus.VERIFIED, visaCheckoutCard.Verification.Status);
        }