/// <summary>
        /// Get transaction information from the vendor's txid
        /// </summary>
        /// <param name="vendorTxId">txid for transaction</param>
        /// <returns>new SagePayTransactionDetails with details</returns>
        public SagePayTransactionDetails GetTransactionDetails(string vendorTxId)
        {
            // call the API and check for error
            SagePayResponse response = ProcessAPI(COMMAND_GETTRANSACTIONDETAIL, "<vendortxcode>" + vendorTxId + "</vendortxcode>");

            if (response.ErrorCode != 0)
            {
                throw new SagePageErrorException(response.ErrorCode, response.ErrorText);
            }

            // build an info object and fill from response
            SagePayTransactionDetails td = new SagePayTransactionDetails();

            td.TxID         = response["vpstxid"];
            td.VendorTxCode = response["vendortxcode"];
            td.TxType       = response["transactiontype"];
            td.TxStateId    = Converter.ToTxState(response["txstateid"]);
            td.Status       = response["status"];
            //
            td.RelatedTxId         = response["relatedtransactionid"];
            td.RelatedVendorTxCode = response["relatedvendortxcode"];
            td.RelatedAmount       = Converter.ToDecimal(response["relatedamount"]);
            td.RelatedCurrency     = response["relatedcurrency"];
            td.RelatedStarted      = Converter.ToDateTime(response["relatedstarted"], DateTime.MinValue);
            //
            td.Description = response["description"];
            td.Amount      = Converter.ToDecimal(response["amount"]);
            td.Currency    = response["currency"];
            td.Started     = Converter.ToDateTime(response["started"], DateTime.MinValue);
            td.Completed   = Converter.ToDateTime(response["completed"], DateTime.MinValue);
            //
            td.SecurityKey          = response["securitykey"];
            td.ClientIP             = response["clientip"];
            td.GiftAid              = response["giftaid"];
            td.PaymentSystem        = response["paymentsystem"];
            td.PaymentSystemDetails = response["paymentsystemdetails"];
            td.StartDate            = response["startdate"];
            td.ExpiryDate           = response["expirydate"];
            td.Last4Digits          = response["last4digits"];
            td.AuthProcessor        = response["authprocessor"];
            td.MerchantNumber       = response["merchantnumber"];
            td.AccountType          = Converter.ToAccountType(response["accounttype"]);
            td.AuthCode             = Converter.ToLong(response["vpsauthcode"]);
            td.BankAuthCode         = response["bankauthcode"];
            td.BatchId              = Converter.ToInt(response["batchid"]);
            //
            td.CV2Result      = Converter.ToCheckResult(response["cv2result"]);
            td.AddressResult  = Converter.ToCheckResult(response["addressresult"]);
            td.PostcodeResult = Converter.ToCheckResult(response["postcoderesult"]);
            //
            td.Secure3DAttempts = Converter.ToInt(response["threedattempt"]);
            td.Secure3DResult   = Converter.ToSecure3DResult(response["threedresult"]);
            td.T3MScore         = Converter.ToInt(response["t3mscore"]);
            td.T3MAction        = response["t3maction"];

            return(td);
        }
		/// <summary>
		/// Get transaction information from the vendor's txid
		/// </summary>
		/// <param name="vendorTxId">txid for transaction</param>
		/// <returns>new SagePayTransactionDetails with details</returns>
		public SagePayTransactionDetails GetTransactionDetails(string vendorTxId)
		{
			// call the API and check for error
			SagePayResponse response = ProcessAPI(COMMAND_GETTRANSACTIONDETAIL, "<vendortxcode>" + vendorTxId + "</vendortxcode>");
			if (response.ErrorCode != 0)
			{
				throw new SagePageErrorException(response.ErrorCode, response.ErrorText);
			}

			// build an info object and fill from response
			SagePayTransactionDetails td = new SagePayTransactionDetails();
			td.TxID = response["vpstxid"];
			td.VendorTxCode = response["vendortxcode"];
			td.TxType = response["transactiontype"];
			td.TxStateId = Converter.ToTxState(response["txstateid"]);
			td.Status = response["status"];
			//
			td.RelatedTxId = response["relatedtransactionid"];
			td.RelatedVendorTxCode = response["relatedvendortxcode"];
			td.RelatedAmount = Converter.ToDecimal(response["relatedamount"]);
			td.RelatedCurrency= response["relatedcurrency"];
			td.RelatedStarted = Converter.ToDateTime(response["relatedstarted"], DateTime.MinValue);
			//
			td.Description = response["description"];
			td.Amount = Converter.ToDecimal(response["amount"]);
			td.Currency = response["currency"];
			td.Started = Converter.ToDateTime(response["started"], DateTime.MinValue);
			td.Completed = Converter.ToDateTime(response["completed"], DateTime.MinValue);
			//
			td.SecurityKey = response["securitykey"];
			td.ClientIP = response["clientip"];
			td.GiftAid = response["giftaid"];
			td.PaymentSystem = response["paymentsystem"];
			td.PaymentSystemDetails = response["paymentsystemdetails"];
			td.StartDate = response["startdate"];
			td.ExpiryDate = response["expirydate"];
			td.Last4Digits = response["last4digits"];
			td.AuthProcessor = response["authprocessor"];
			td.MerchantNumber = response["merchantnumber"];
			td.AccountType = Converter.ToAccountType(response["accounttype"]);
			td.AuthCode = Converter.ToLong(response["vpsauthcode"]);
			td.BankAuthCode = response["bankauthcode"];
			td.BatchId = Converter.ToInt(response["batchid"]);
			//
			td.CV2Result = Converter.ToCheckResult(response["cv2result"]);
			td.AddressResult = Converter.ToCheckResult(response["addressresult"]);
			td.PostcodeResult = Converter.ToCheckResult(response["postcoderesult"]);
			//
			td.Secure3DAttempts = Converter.ToInt(response["threedattempt"]);
			td.Secure3DResult = Converter.ToSecure3DResult(response["threedresult"]);
			td.T3MScore = Converter.ToInt(response["t3mscore"]);
			td.T3MAction = response["t3maction"];

			return td;
		}