public void ProcessPayment_Serialization()
        {
            var expected = new ProcessPaymentRequest
            {
                Amount = 100,
                CurrencyCode = CurrencyCode.USD,
                PaymentMethodToken = "Prxf2Ohv40L5j6SdTytuHCklwyF"
            };

            var xml = _service.Serialize<ProcessPaymentRequest>(expected);

            var actual = _service.Deserialize<ProcessPaymentRequest>(xml);

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Amount, actual.Amount);
            Assert.AreEqual(expected.CurrencyCode, actual.CurrencyCode);
            Assert.AreEqual(expected.PaymentMethodToken, actual.PaymentMethodToken);
        }
        public void ProcessPayment_3DSecure_Serialization()
        {
            var expected = new ProcessPaymentRequest
                {
                    Attempt3DSecure = true,
                    Amount = 100,
                    CurrencyCode = CurrencyCode.USD,
                    PaymentMethodToken = "payment_method_token",
                    RedirectUrl = "http://example.com/handle_redirect",
                    CallbackUrl = "http://example.com/handle_callback"
                };

            var xml = _service.Serialize<ProcessPaymentRequest>(expected);

            var actual = _service.Deserialize<ProcessPaymentRequest>(xml);

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Attempt3DSecure, actual.Attempt3DSecure);
            Assert.AreEqual(expected.Amount, actual.Amount);
            Assert.AreEqual(expected.PaymentMethodToken, actual.PaymentMethodToken);
            Assert.AreEqual(expected.RedirectUrl, actual.RedirectUrl);
            Assert.AreEqual(expected.CallbackUrl, actual.CallbackUrl);
        }