/// <summary>
        /// Authorize Credit Card Async.
        /// </summary>
        /// <returns>ANetAuthorizeCreateTransactionResponse instance</returns>
        /// <param name="transaction">TransactionRequest.</param>
        /// <param name="refId">Reference identifier.</param>
        public async Task <ANetAuthorizeTransactionResponse> AuthorizeAsync(ANetAuthorizeTransactionRequest transaction, string refId)
        {
            var createRequest          = new ANetAuthorizeCreateTransactionRequest();
            var requestBody            = new ANetAuthorizeTransactionRequestBody();
            var merchantAuthentication = getMerchantAuthentication();

            transaction.TransactionType        = ANetTransactionType.authOnlyTransaction;
            requestBody.MerchantAuthentication = merchantAuthentication;
            requestBody.RefId = refId;
            requestBody.TransactionRequest         = transaction;
            createRequest.CreateTransactionRequest = requestBody;
            return(await authorizeAsync(createRequest));
        }
        /// <summary>
        /// Authorize Credit Card Async.
        /// </summary>
        /// <returns>ANetAuthorizeCreateTransactionResponse instance</returns>
        /// <param name="creditCard">Credit card</param>
        /// <param name="refId">Reference identifier</param>
        /// <param name="amount">Amount</param>
        public async Task <ANetAuthorizeTransactionResponse> AuthorizeAsync(ANetCreditCard creditCard, string refId, decimal amount)
        {
            var createRequest          = new ANetAuthorizeCreateTransactionRequest();
            var requestBody            = new ANetAuthorizeTransactionRequestBody();
            var merchantAuthentication = getMerchantAuthentication();
            var transaction            = new ANetAuthorizeTransactionRequest();
            var payment = new ANetPayment
            {
                CreditCard = creditCard
            };

            transaction.Payment                = payment;
            transaction.Amount                 = amount;
            transaction.TransactionType        = ANetTransactionType.authOnlyTransaction;
            requestBody.MerchantAuthentication = merchantAuthentication;
            requestBody.RefId = refId;
            requestBody.TransactionRequest         = transaction;
            createRequest.CreateTransactionRequest = requestBody;
            return(await authorizeAsync(createRequest));
        }