public void Sale_WithStoreInVaultForBillingAndShipping()
{
TransactionRequest request = new TransactionRequest
{
Amount = SandboxValues.TransactionAmount.AUTHORIZE,
CreditCard = new TransactionCreditCardRequest
{
Number = SandboxValues.CreditCardNumber.VISA,
ExpirationDate = "05/2009",
},
BillingAddress = new AddressRequest
{
FirstName = "Carl",
},
ShippingAddress = new AddressRequest
{
FirstName = "Andrew"
},
Options = new TransactionOptionsRequest
{
StoreInVault = true,
AddBillingAddressToPaymentMethod = true,
StoreShippingAddressInVault = true
}
};
Result<Transaction> result = gateway.Transaction.Sale(request);
Assert.IsTrue(result.IsSuccess());
Transaction transaction = result.Target;
CreditCard creditCard = transaction.GetVaultCreditCard();
Assert.AreEqual("Carl", creditCard.BillingAddress.FirstName);
Assert.AreEqual("Carl", transaction.GetVaultBillingAddress().FirstName);
Assert.AreEqual("Andrew", transaction.GetVaultShippingAddress().FirstName);
Customer customer = transaction.GetVaultCustomer();
Assert.AreEqual(2, customer.Addresses.Length);
Assert.AreEqual("Carl", customer.Addresses[0].FirstName);
Assert.AreEqual("Andrew", customer.Addresses[1].FirstName);
Assert.IsNotNull(transaction.BillingAddress.Id);
Assert.IsNotNull(transaction.ShippingAddress.Id);
}