public void Should_Successfully_Process_And_Void_Credit_Card() { var amount = System.Math.Round(new System.Random().NextDouble() * 100, 2); var postTransactionRequestModel = new PostTransactionRequestModel { Payer = "John Smith", EmailAddress = "*****@*****.**", Amount = amount, CreditCardInformation = new CreditCardInformationModel { AccountHolder = "John Smith", CardNumber = "4242424242424242", Cvc = "123", Month = 12, Year = System.DateTime.Now.Year + 2, PostalCode = "54321" }, AttributeValues = new System.Collections.Generic.Dictionary <string, string> { { "phoneNumber", "512-234-1233" }, { "agentCode", "213498" } }, Comments = "Sample comments", PayerFee = amount * .10 }; var response = _transactionsApi.TransactionsPost(postTransactionRequestModel, null); // Should return a valid Id. Assert.IsTrue(response.Id > 0); // Should successfully void a transaction. Assert.AreEqual(ReversalResponseCode.Success, _transactionsApi.TransactionsVoid(response.Id.Value, new PostVoidTransactionRequestModel { SendReceipt = false }).ReversalResponseCode); var getTransactionResponseModel = _transactionsApi.TransactionsGet(response.Id.Value); Assert.IsNotNull(getTransactionResponseModel); Assert.AreEqual("512-234-1233", getTransactionResponseModel.AttributeValues.Single(x => x.ParameterName == "phoneNumber").Value); Assert.IsNotNull(getTransactionResponseModel.Events.SingleOrDefault(x => x.EventType == EventType.Sale)); Assert.IsNotNull(getTransactionResponseModel.Events.SingleOrDefault(x => x.EventType == EventType.Void)); // Should not be able to void the transaction more than once. Assert.AreEqual(ReversalResponseCode.PreviouslyVoided, _transactionsApi.TransactionsVoid(response.Id.Value, new PostVoidTransactionRequestModel { SendReceipt = false }).ReversalResponseCode); }