public void Refund_MultipleRefundsWithPartialAmounts()
{
TransactionRequest request = new TransactionRequest
{
Amount = SandboxValues.TransactionAmount.AUTHORIZE,
CreditCard = new TransactionCreditCardRequest
{
Number = SandboxValues.CreditCardNumber.VISA,
ExpirationDate = "05/2008"
},
Options = new TransactionOptionsRequest
{
SubmitForSettlement = true
}
};
Transaction transaction = gateway.Transaction.Sale(request).Target;
gateway.TestTransaction.Settle(transaction.Id);
Transaction refund1 = gateway.Transaction.Refund(transaction.Id, 500M).Target;
Assert.AreEqual(TransactionType.CREDIT, refund1.Type);
Assert.AreEqual(500M, refund1.Amount);
Transaction refund2 = gateway.Transaction.Refund(transaction.Id, 500M).Target;
Assert.AreEqual(TransactionType.CREDIT, refund2.Type);
Assert.AreEqual(500M, refund2.Amount);
Transaction refundedTransaction = gateway.Transaction.Find(transaction.Id);
Assert.AreEqual(2, refundedTransaction.RefundIds.Count);
Assert.Contains(refund1.Id, refundedTransaction.RefundIds);
Assert.Contains(refund2.Id, refundedTransaction.RefundIds);
}