public void CloneTransaction()
{
TransactionRequest request = new TransactionRequest
{
Amount = SandboxValues.TransactionAmount.AUTHORIZE,
CreditCard = new TransactionCreditCardRequest
{
Number = SandboxValues.CreditCardNumber.VISA,
ExpirationDate = "05/2009",
},
Customer = new CustomerRequest
{
FirstName = "Dan",
},
BillingAddress = new AddressRequest
{
FirstName = "Carl",
},
ShippingAddress = new AddressRequest
{
FirstName = "Andrew",
}
};
Result<Transaction> result = gateway.Transaction.Sale(request);
Assert.IsTrue(result.IsSuccess());
Transaction transaction = result.Target;
TransactionCloneRequest cloneRequest = new TransactionCloneRequest
{
Amount = 123.45M,
Channel = "MyShoppingCartProvider",
Options = new TransactionOptionsCloneRequest
{
SubmitForSettlement = false
}
};
Result<Transaction> cloneResult = gateway.Transaction.CloneTransaction(transaction.Id, cloneRequest);
Assert.IsTrue(cloneResult.IsSuccess());
Transaction cloneTransaction = cloneResult.Target;
Assert.AreEqual(123.45, cloneTransaction.Amount);
Assert.AreEqual("MyShoppingCartProvider", cloneTransaction.Channel);
Assert.AreEqual(TransactionStatus.AUTHORIZED, cloneTransaction.Status);
Assert.IsNull(cloneTransaction.GetVaultCreditCard());
Assert.IsNull(cloneTransaction.GetVaultCustomer());
Assert.IsNull(cloneTransaction.GetVaultCreditCard());
Assert.IsNull(cloneTransaction.GetVaultBillingAddress());
Assert.IsNull(cloneTransaction.GetVaultShippingAddress());
CreditCard creditCard = cloneTransaction.CreditCard;
Assert.AreEqual("411111", creditCard.Bin);
Assert.AreEqual("1111", creditCard.LastFour);
Assert.AreEqual("05/2009", creditCard.ExpirationDate);
Assert.AreEqual("Dan", cloneTransaction.Customer.FirstName);
Assert.AreEqual("Carl", cloneTransaction.BillingAddress.FirstName);
Assert.AreEqual("Andrew", cloneTransaction.ShippingAddress.FirstName);
}