public void Sale_TransactUsBankAccountWithToken()
{
Result<Customer> result = gateway.Customer.Create(new CustomerRequest());
Assert.IsTrue(result.IsSuccess());
string nonce = TestHelper.GenerateValidUsBankAccountNonce(gateway);
var request = new PaymentMethodRequest
{
CustomerId = result.Target.Id,
PaymentMethodNonce = nonce
};
Result<PaymentMethod> paymentMethodResult = gateway.PaymentMethod.Create(request);
Assert.IsTrue(paymentMethodResult.IsSuccess());
Assert.IsInstanceOf(typeof(UsBankAccount), paymentMethodResult.Target);
UsBankAccount usBankAccount = (UsBankAccount) paymentMethodResult.Target;
var transactionRequest = new TransactionRequest
{
Amount = SandboxValues.TransactionAmount.AUTHORIZE,
MerchantAccountId = MerchantAccountIDs.US_BANK_MERCHANT_ACCOUNT_ID
};
UsBankAccountGateway usBankAccountGateway = new UsBankAccountGateway(gateway);
Result<Transaction> transactionResult = usBankAccountGateway.Sale(usBankAccount.Token, transactionRequest);
Assert.IsTrue(transactionResult.IsSuccess());
Transaction transaction = transactionResult.Target;
Assert.AreEqual(TransactionStatus.SETTLEMENT_PENDING, transaction.Status);
UsBankAccountDetails usBankAccountDetails = transaction.UsBankAccountDetails;
Assert.AreEqual(usBankAccount.RoutingNumber, usBankAccountDetails.RoutingNumber);
Assert.AreEqual(usBankAccount.Last4, usBankAccountDetails.Last4);
Assert.AreEqual(usBankAccount.AccountType, usBankAccountDetails.AccountType);
Assert.AreEqual(usBankAccount.AccountDescription, usBankAccountDetails.AccountDescription);
Assert.AreEqual(usBankAccount.AccountHolderName, usBankAccountDetails.AccountHolderName);
}