protected async Task <PaymentResponse> Make3dsCardPayment(bool attemptN3d = false)
        {
            var requestCardSource = new RequestCardSource
            {
                Name           = TestCardSource.Visa.Name,
                Number         = TestCardSource.Visa.Number,
                ExpiryYear     = TestCardSource.Visa.ExpiryYear,
                ExpiryMonth    = TestCardSource.Visa.ExpiryMonth,
                Cvv            = TestCardSource.Visa.Cvv,
                BillingAddress = GetAddress(),
                Phone          = GetPhone()
            };

            var threeDsRequest = new ThreeDsRequest
            {
                Enabled    = true,
                AttemptN3D = attemptN3d,
                Eci        = attemptN3d ? "05" : null,
                Cryptogram = attemptN3d ? "AgAAAAAAAIR8CQrXcIhbQAAAAAA" : null,
                Xid        = attemptN3d ? "MDAwMDAwMDAwMDAwMDAwMzIyNzY=" : null,
                Version    = "2.0.1"
            };

            var customerRequest = new CustomerRequest {
                Email = GenerateRandomEmail(), Name = "Customer"
            };

            var paymentIndividualSender =
                new PaymentCorporateSender {
                CompanyName = "Testing Inc.", Address = GetAddress()
            };

            var paymentRequest = new PaymentRequest
            {
                Source     = requestCardSource,
                Capture    = false,
                Reference  = Guid.NewGuid().ToString(),
                Amount     = 10L,
                Currency   = Currency.USD,
                Customer   = customerRequest,
                ThreeDs    = threeDsRequest,
                Sender     = paymentIndividualSender,
                SuccessUrl = "https://test.checkout.com/success",
                FailureUrl = "https://test.checkout.com/failure"
            };

            var paymentResponse = await DefaultApi.PaymentsClient().RequestPayment(paymentRequest);

            paymentResponse.ShouldNotBeNull();
            return(paymentResponse);
        }
        public void ShouldDeserializeDefaultGetPaymentResponseCorporateSender()
        {
            var fileContent = GetJsonFileContent("./Resources/Sender/GetPaymentResponseCorporateSender.json");
            GetPaymentResponse getPaymentResponse =
                (GetPaymentResponse) new JsonSerializer().Deserialize(fileContent, typeof(GetPaymentResponse));

            getPaymentResponse.ShouldNotBeNull();
            getPaymentResponse.Sender.ShouldNotBeNull();
            getPaymentResponse.Sender.Type().ShouldBe(PaymentSenderType.Corporate);
            getPaymentResponse.Sender.ShouldBeAssignableTo(typeof(PaymentCorporateSender));
            PaymentCorporateSender sender = (PaymentCorporateSender)getPaymentResponse.Sender;

            sender.CompanyName.ShouldNotBeEmpty();
        }