Ejemplo n.º 1
0
        public void GetChargeWithMultipleHistory()
        {
            // charge
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);
            var chargeResponse = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            // capture
            var chargeCaptureModel = TestHelper.GetChargeCaptureModel(chargeResponse.Model.Value);
            var captureResponse = CheckoutClient.ChargeService.CaptureCharge(chargeResponse.Model.Id, chargeCaptureModel);

            // refund
            var chargeRefundModel = TestHelper.GetChargeRefundModel(chargeResponse.Model.Value);
            var refundResponse = CheckoutClient.ChargeService.RefundCharge(captureResponse.Model.Id, chargeRefundModel);

            var response = CheckoutClient.ChargeService.GetChargeHistory(chargeResponse.Model.Id);

            Assert.NotNull(response);
            Assert.IsTrue(response.HttpStatusCode == System.Net.HttpStatusCode.OK);
            Assert.IsTrue(response.Model.Charges.Count == 3);

            Assert.IsTrue(response.Model.Charges[0].Id == refundResponse.Model.Id);
            Assert.IsTrue(response.Model.Charges[1].Id == captureResponse.Model.Id);
            Assert.IsTrue(response.Model.Charges[2].Id == chargeResponse.Model.Id);

            Assert.IsTrue(chargeResponse.Model.Id == captureResponse.Model.OriginalId);
            Assert.IsTrue(refundResponse.Model.OriginalId == captureResponse.Model.Id);
        }
Ejemplo n.º 2
0
        public void CreateChargeWithCard()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);
            var response        = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            //Check if charge details match
            response.Should().NotBeNull();
            response.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            response.Model.Id.Should().StartWith("charge_");

            response.Model.AutoCapTime.Should().Be(cardCreateModel.AutoCapTime);
            response.Model.AutoCapture.Should().BeEquivalentTo(cardCreateModel.AutoCapture);
            response.Model.Email.Should().BeEquivalentTo(cardCreateModel.Email);
            response.Model.Currency.Should().BeEquivalentTo(cardCreateModel.Currency);
            response.Model.Description.Should().BeEquivalentTo(cardCreateModel.Description);
            response.Model.Value.Should().Be(cardCreateModel.Value);
            response.Model.Status.Should().NotBeNullOrEmpty();
            response.Model.AuthCode.Should().NotBeNullOrEmpty();
            response.Model.ResponseCode.Should().NotBeNullOrEmpty();

            //Check if card details match
            response.Model.Card.Name.Should().Be(cardCreateModel.Card.Name);
            response.Model.Card.ExpiryMonth.Should().Be(cardCreateModel.Card.ExpiryMonth);
            response.Model.Card.ExpiryYear.Should().Be(cardCreateModel.Card.ExpiryYear);
            cardCreateModel.Card.Number.Should().EndWith(response.Model.Card.Last4);
            response.Model.Card.BillingDetails.ShouldBeEquivalentTo(cardCreateModel.Card.BillingDetails);

            //Check if shipping details match
            response.Model.Products.ShouldBeEquivalentTo(cardCreateModel.Products);

            //Check if metadatadetails match
            response.Model.Metadata.ShouldBeEquivalentTo(cardCreateModel.Metadata);
        }
Ejemplo n.º 3
0
        public void GetChargeHistory()
        {
            #region setup charge history

            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

            var chargeResponse = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            chargeResponse.Model.ResponseCode.Should().StartWith("10", "Charge must be 'Approved' first in order to be able to void");

            var chargeVoidModel = TestHelper.GetChargeVoidModel();

            var voidResponse = CheckoutClient.ChargeService.VoidCharge(chargeResponse.Model.Id, chargeVoidModel);

            #endregion

            var response = CheckoutClient.ChargeService.GetChargeHistory(voidResponse.Model.Id);

            response.Should().NotBeNull();
            response.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            response.Model.Charges.Should().HaveCount(2);

            response.Model.Charges[0].Id.Should().Be(voidResponse.Model.Id);
            response.Model.Charges[1].Id.Should().Be(chargeResponse.Model.Id);
        }
Ejemplo n.º 4
0
        public void GetChargeWithMultipleHistory()
        {
            // charge
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);
            var chargeResponse  = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            // capture
            var chargeCaptureModel = TestHelper.GetChargeCaptureModel(chargeResponse.Model.Value);
            var captureResponse    = CheckoutClient.ChargeService.CaptureCharge(chargeResponse.Model.Id, chargeCaptureModel);

            // refund
            var chargeRefundModel = TestHelper.GetChargeRefundModel(chargeResponse.Model.Value);
            var refundResponse    = CheckoutClient.ChargeService.RefundCharge(captureResponse.Model.Id, chargeRefundModel);

            var response = CheckoutClient.ChargeService.GetChargeHistory(chargeResponse.Model.Id);

            response.Should().NotBeNull();
            response.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            response.Model.Charges.Should().HaveCount(3);

            response.Model.Charges[0].Id.Should().Be(refundResponse.Model.Id);
            response.Model.Charges[1].Id.Should().Be(captureResponse.Model.Id);
            response.Model.Charges[2].Id.Should().Be(chargeResponse.Model.Id);

            chargeResponse.Model.Id.Should().Be(captureResponse.Model.OriginalId);
            refundResponse.Model.OriginalId.Should().Be(captureResponse.Model.Id);
        }
Ejemplo n.º 5
0
        public void CreateZeroAuthorisationCharge()
        {
            CardCharge cardChargeRequestModel = TestHelper.GetCardChargeCreateModel(customerEmail: TestHelper.RandomData.Email);

            var response = CheckoutClient.ChargeService.ChargeWithCard(cardChargeRequestModel);

            response.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            response.Model.Id.Should().StartWith("charge_test_");
            response.Model.Used.Should().Be(false);
        }
        public void CreateCharge_FailsWithError_IfCardNumberIsInvalid()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);;

            cardCreateModel.Card.Number = "4242424242424243";

            var response = new APIClient().ChargeService.ChargeWithCard(cardCreateModel);

            Assert.NotNull(response);
            Assert.IsTrue(response.HttpStatusCode != System.Net.HttpStatusCode.OK);
            Assert.IsTrue(response.HasError);
        }
Ejemplo n.º 7
0
        public void UpdateCharge()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);
            var charge          = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel).Model;

            var chargeUpdateModel = TestHelper.GetChargeUpdateModel();

            var response = CheckoutClient.ChargeService.UpdateCharge(charge.Id, chargeUpdateModel);

            response.Should().NotBeNull();
            response.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            response.Model.Message.Should().BeEquivalentTo("Ok");
        }
Ejemplo n.º 8
0
        public void CreateCharge_FailsWithError_IfCardNumberIsInvalid()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

            ;
            cardCreateModel.Card.Number = "4242424242424243";

            var response = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            response.Should().NotBeNull();
            response.HttpStatusCode.Should().NotBe(HttpStatusCode.OK);
            response.HasError.Should().BeTrue();
        }
Ejemplo n.º 9
0
         public void UpdateCharge()
         {
             var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);
             var charge = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel).Model;

             var chargeUpdateModel = TestHelper.GetChargeUpdateModel();

             var response = CheckoutClient.ChargeService.UpdateCharge(charge.Id, chargeUpdateModel);

             Assert.NotNull(response);
             Assert.IsTrue(response.HttpStatusCode == System.Net.HttpStatusCode.OK);
             Assert.IsTrue(response.Model.Message.Equals("Ok", System.StringComparison.OrdinalIgnoreCase));
         }
Ejemplo n.º 10
0
        public void GetChargeWithMultipleHistory()
        {
            // Collect charge IDs from charge, capture, refund
            List <string> responseIds = new List <string>();

            // charge
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);
            var chargeResponse  = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            responseIds.Add(chargeResponse.Model.Id);

            // capture
            var chargeCaptureModel = TestHelper.GetChargeCaptureModel(chargeResponse.Model.Value);
            var captureResponse    = CheckoutClient.ChargeService.CaptureCharge(chargeResponse.Model.Id, chargeCaptureModel);

            responseIds.Add(captureResponse.Model.Id);

            // refund
            var chargeRefundModel = TestHelper.GetChargeRefundModel(chargeResponse.Model.Value);
            var refundResponse    = CheckoutClient.ChargeService.RefundCharge(captureResponse.Model.Id, chargeRefundModel);

            responseIds.Add(refundResponse.Model.Id);

            var response = CheckoutClient.ChargeService.GetChargeHistory(chargeResponse.Model.Id);

            // Isolate charge IDs from GetChargeHistory()
            List <string> historyIds = new List <string>();

            for (int i = 0; i < response.Model.Charges.Count; i++)
            {
                historyIds.Add(response.Model.Charges[i].Id.ToString());
            }

            response.Should().NotBeNull();
            response.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            response.Model.Charges.Should().HaveCount(responseIds.Count);

            historyIds.Count.Should().Be(responseIds.Count);

            // Pre-sorting for index matching
            responseIds.Sort();
            historyIds.Sort();
            for (int i = 0; i < historyIds.Count; i++)
            {
                historyIds[i].Should().Be(responseIds[i]);
            }

            chargeResponse.Model.Id.Should().Be(captureResponse.Model.OriginalId);
            refundResponse.Model.OriginalId.Should().Be(captureResponse.Model.Id);
        }
Ejemplo n.º 11
0
        /// <summary>
        ///     Creates a new charge with default card and new track id and asserts that is not declined
        /// </summary>
        /// <param name="cardNumber"></param>
        /// <returns></returns>
        protected Charge CreateChargeWithNewTrackId(out string cardNumber)
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

            cardCreateModel.TrackId = "TRF" + Guid.NewGuid();
            var chargeResponse = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            chargeResponse.Should().NotBeNull();
            chargeResponse.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            chargeResponse.Model.Status.Should().NotBe("Declined");

            cardNumber = cardCreateModel.Card.Number;
            return(chargeResponse.Model);
        }
Ejemplo n.º 12
0
        public void CreateChargeWithCard_N3DChargeMode()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);
            var response        = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            response.Should().NotBeNull();
            response.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            response.Model.Id.Should().StartWith("charge_test");

            response.Model.ChargeMode.Should().Be(1);
            response.Model.AttemptN3D.Should().BeTrue();
            //response.Model.RedirectUrl.Should().StartWith("http"); // only use if redirect URL is configured
            response.Model.ResponseCode.Should().NotBeNullOrEmpty();
            response.Model.TrackId.ShouldBeEquivalentTo(cardCreateModel.TrackId);
        }
Ejemplo n.º 13
0
         public void CaptureCharge()
         {
             var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

             var charge = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel).Model;

             var chargeCaptureModel = TestHelper.GetChargeCaptureModel(charge.Value);

             var response = CheckoutClient.ChargeService.CaptureCharge(charge.Id, chargeCaptureModel);

             ////Check if charge details match
             Assert.NotNull(response);
             Assert.IsTrue(response.HttpStatusCode == System.Net.HttpStatusCode.OK);
             Assert.IsTrue(response.Model.OriginalId.Equals(charge.Id, System.StringComparison.OrdinalIgnoreCase));
         }
Ejemplo n.º 14
0
         public void GetCharge()
         {
             var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

             var chargeResponse = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

             var response = CheckoutClient.ChargeService.GetCharge(chargeResponse.Model.Id);

             //Check if charge details match
             Assert.NotNull(response);
             Assert.IsTrue(response.HttpStatusCode == System.Net.HttpStatusCode.OK);
             Assert.IsTrue(response.Model.Id.StartsWith("charge_"));

             Assert.IsTrue(chargeResponse.Model.Id == response.Model.Id);
         }
Ejemplo n.º 15
0
        public void VoidCharge()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

            var charge = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel).Model;

            var chargeVoidModel = TestHelper.GetChargeVoidModel();

            var response = CheckoutClient.ChargeService.VoidCharge(charge.Id, chargeVoidModel);

            //Check if charge details match
            response.Should().NotBeNull();
            response.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            response.Model.OriginalId.Should().Be(charge.Id);
        }
Ejemplo n.º 16
0
         public void VoidCharge()
         {
             var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

             var charge = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel).Model;

             var chargeVoidModel = TestHelper.GetChargeVoidModel();

             var response = CheckoutClient.ChargeService.VoidCharge(charge.Id, chargeVoidModel);

             //Check if charge details match
             Assert.NotNull(response);
             Assert.IsTrue(response.HttpStatusCode == System.Net.HttpStatusCode.OK);
             Assert.IsTrue(response.Model.OriginalId == charge.Id);
         }
Ejemplo n.º 17
0
        public void CreateChargeWithCard_FailsWithValidationError_IfDetailsInvalid()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel();

            cardCreateModel.Currency = string.Empty;
            cardCreateModel.Value    = "-100";

            var response = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            response.Should().NotBeNull();
            response.HttpStatusCode.Should().NotBe(HttpStatusCode.OK);
            response.HasError.Should().BeTrue();
            response.Error.ErrorCode.Should().Be("70000");
            response.Error.Message.Should().BeEquivalentTo("validation error");
        }
        public void CreateChargeWithCard_FailsWithValidationError_IfDetailsInvalid()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel();

            cardCreateModel.Currency = string.Empty;
            cardCreateModel.Value    = "-100";

            var response = new APIClient().ChargeService.ChargeWithCard(cardCreateModel);

            Assert.NotNull(response);
            Assert.IsTrue(response.HttpStatusCode != System.Net.HttpStatusCode.OK);
            Assert.IsTrue(response.HasError);
            Assert.IsTrue(response.Error.ErrorCode == "70000");
            Assert.IsTrue(response.Error.Message.ToLower() == "validation error");
        }
Ejemplo n.º 19
0
        public void GetCharge()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

            var chargeResponse = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            var response = CheckoutClient.ChargeService.GetCharge(chargeResponse.Model.Id);

            //Check if charge details match
            response.Should().NotBeNull();
            response.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            response.Model.Id.Should().StartWith("charge_");

            chargeResponse.Model.Id.Should().Be(response.Model.Id);
        }
Ejemplo n.º 20
0
        public void CreateChargeWithCard_3DChargeMode()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

            cardCreateModel.ChargeMode = 2;

            var response = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            //Check if charge details match
            response.Should().NotBeNull();
            response.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            response.Model.Id.Should().StartWith("pay_tok");

            response.Model.ChargeMode.Should().Be(2);
            response.Model.RedirectUrl.Should().StartWith("http");
            response.Model.ResponseCode.Should().NotBeNullOrEmpty();
            response.Model.TrackId.ShouldBeEquivalentTo(cardCreateModel.TrackId);
        }
Ejemplo n.º 21
0
        public void CreateChargeWithCard()
       {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);
            var response = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            //Check if charge details match
            Assert.NotNull(response);
            Assert.IsTrue(response.HttpStatusCode == System.Net.HttpStatusCode.OK);
            Assert.IsTrue(response.Model.Id.StartsWith("charge_"));
            
            Assert.IsTrue(response.Model.AutoCapTime == cardCreateModel.AutoCapTime);
            Assert.IsTrue(response.Model.AutoCapture.Equals(cardCreateModel.AutoCapture, System.StringComparison.OrdinalIgnoreCase));
            Assert.IsTrue(response.Model.Email.Equals(cardCreateModel.Email, System.StringComparison.OrdinalIgnoreCase));
            Assert.IsTrue(response.Model.Currency.Equals(cardCreateModel.Currency, System.StringComparison.OrdinalIgnoreCase));
            Assert.IsTrue(response.Model.Description.Equals(cardCreateModel.Description, System.StringComparison.OrdinalIgnoreCase));
            Assert.IsTrue(response.Model.Value == cardCreateModel.Value);
            Assert.IsNotNullOrEmpty(response.Model.Status);
            Assert.IsNotNullOrEmpty(response.Model.AuthCode);
            Assert.IsNotNullOrEmpty(response.Model.ResponseCode);

            //Check if card details match
            Assert.IsTrue(response.Model.Card.Name == cardCreateModel.Card.Name);
            Assert.IsTrue(response.Model.Card.ExpiryMonth == cardCreateModel.Card.ExpiryMonth);
            Assert.IsTrue(response.Model.Card.ExpiryYear == cardCreateModel.Card.ExpiryYear);
            Assert.IsTrue(cardCreateModel.Card.Number.EndsWith(response.Model.Card.Last4));
            var isCardBillingAddressSame = ReflectionHelper.CompareProperties(response.Model.Card.BillingDetails, cardCreateModel.Card.BillingDetails);
            Assert.IsTrue(isCardBillingAddressSame);

            //Check if shipping details match
            for (int i = 0; i < cardCreateModel.Products.Count; i++)
            {
              
                    var isProductSame = ReflectionHelper.CompareProperties(response.Model.Products[i], cardCreateModel.Products[i], "ProductId","customerId" );
                    Assert.IsTrue(isProductSame);
            }

            //Check if metadatadetails match
            foreach (string key in cardCreateModel.Metadata.Keys)
            {
                Assert.IsTrue(response.Model.Metadata[key].Equals(cardCreateModel.Metadata[key], System.StringComparison.OrdinalIgnoreCase));
            
            }
        }
Ejemplo n.º 22
0
         public void GetChargeHistory()
         {
             #region setup charge history
             var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

             var chargeResponse = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

             var chargeVoidModel = TestHelper.GetChargeVoidModel();

             var voidResponse = CheckoutClient.ChargeService.VoidCharge(chargeResponse.Model.Id, chargeVoidModel);
             #endregion

             var response = CheckoutClient.ChargeService.GetChargeHistory(voidResponse.Model.Id);

             Assert.NotNull(response);
             Assert.IsTrue(response.HttpStatusCode == System.Net.HttpStatusCode.OK);
             Assert.IsTrue(response.Model.Charges.Count ==2);

             Assert.IsTrue(response.Model.Charges[0].Id == voidResponse.Model.Id);
             Assert.IsTrue(response.Model.Charges[1].Id == chargeResponse.Model.Id);
         }
Ejemplo n.º 23
0
        /// <summary>
        ///     Creates a new charge with default card and new track id and asserts that is not declined
        /// </summary>
        /// <param name="cardNumber"></param>
        /// <returns></returns>
        protected Charge CreateChargeWithNewTrackId(out string cardNumber)
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

            cardCreateModel.TrackId = "TRF" + Guid.NewGuid();
            var chargeResponse = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel);

            chargeResponse.Should().NotBeNull();
            chargeResponse.HttpStatusCode.Should().Be(HttpStatusCode.OK);

            if (CheckoutClient.CheckoutConfiguration.DebugMode && chargeResponse.Model.ResponseCode != "10000")
            {
                Console.WriteLine(string.Format("\n** Charge status is not 'Approved' **\n** Charge status is '{0}' **", chargeResponse.Model.Status.ToUpper()));
                Console.WriteLine(string.Format("\n** Advanced Info ** {0}", chargeResponse.Model.ResponseAdvancedInfo));
            }
            ;
            chargeResponse.Model.Status.Should().NotBe("Declined", "CreateChargeWithNewTrackId(out string cardNumber) must create an authorized charge, you may re-run this test");

            cardNumber = cardCreateModel.Card.Number;
            return(chargeResponse.Model);
        }
Ejemplo n.º 24
0
        public void RefundCharge()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

            var charge = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel).Model;

            charge.ResponseCode.Should().StartWith("10", "Charge must be 'Approved' first in order to be able to capture");

            var chargeCaptureModel = TestHelper.GetChargeCaptureModel(charge.Value);

            var captureResponse = CheckoutClient.ChargeService.CaptureCharge(charge.Id, chargeCaptureModel);

            var chargeRefundModel = TestHelper.GetChargeRefundModel(charge.Value);

            var response = CheckoutClient.ChargeService.RefundCharge(captureResponse.Model.Id, chargeRefundModel);

            var refund = response.Model;

            //Check if charge details match
            response.Should().NotBeNull();
            response.HttpStatusCode.Should().Be(HttpStatusCode.OK);
            response.HasError.Should().BeFalse();
            refund.OriginalId.Should().Be(captureResponse.Model.Id);
        }
Ejemplo n.º 25
0
        public void SoftFailRefundCharge()
        {
            var cardCreateModel = TestHelper.GetCardChargeCreateModel(TestHelper.RandomData.Email);

            var charge = CheckoutClient.ChargeService.ChargeWithCard(cardCreateModel).Model;

            charge.ResponseCode.Should().StartWith("10", "Charge must be 'Approved' first in order to be able to capture");

            var chargeCaptureModel = TestHelper.GetChargeCaptureModel(charge.Value);

            var captureResponse = CheckoutClient.ChargeService.CaptureCharge(charge.Id, chargeCaptureModel);

            var chargeRefundModel = TestHelper.GetChargeRefundModel((Int32.Parse(charge.Value) + 1).ToString());

            var response = CheckoutClient.ChargeService.RefundCharge(captureResponse.Model.Id, chargeRefundModel);

            var refund = response.Error;

            //Check if charge details match
            response.Should().NotBeNull();
            response.HttpStatusCode.Should().Be(HttpStatusCode.BadRequest);
            response.HasError.Should().BeTrue();
            refund.ErrorCode.Should().Be("83024");
        }