/// <summary> /// Performs a Process Transaction request on First Data Gateway. /// </summary> /// <param name="request"></param> /// <returns></returns> public Response PerformAuthRequest(Request request) { //create our client TokenServicesClient client = new TokenServicesClient(); //create our token action ProcessTransationAction action = new ProcessTransationAction(); //your tokenex credentials action.APIKey = APIKey; action.TokenExID = TokenExID; //is the TransactionRequest json or xml; action.TransactionRequestFormat = TransactionRequestFormatEnum.XML; //what type of transaction we are performing action.TransactionType = TransactionTypeEnum.Authorize; //Get xml request string requestXML = RequestGenerator.GetAuthorizationRequest(request); requestXML = requestXML.Replace("[GATEWAYNAME]", GatewayName); requestXML = requestXML.Replace("[LOGIN]", GatewayLogin); requestXML = requestXML.Replace("[PASSWORD]", GatewayPassword); action.TransactionRequest = requestXML; //call the web service ResultOfProcessTransaction result = client.ProcessTransaction(action); //Generate and populate response object Response response = new Response(); response.GatewayRequestRaw = requestXML; response.GatewayResponseRaw = GetRawResponse(result); Dictionary <string, string> resultsparam = result.Params; //if our call was a success, save authorization code if (resultsparam.ContainsKey("transaction_tag")) { response.TransactionID = resultsparam["transaction_tag"].PadLeft(10, '0');; } // response.TransactionID = result.ReferenceNumber; response.AuthCode = result.Authorization; if (result.Success) { bool authApproved = false; try { if (resultsparam.ContainsKey("transaction_approved")) { authApproved = Convert.ToBoolean(resultsparam["transaction_approved"]); } if (authApproved) { response.ResponseType = TransactionResponseType.Approved; } else { response.ResponseType = TransactionResponseType.Denied; } } catch (Exception e) { response.ResponseType = TransactionResponseType.Error; response.ReasonText = e.InnerException.ToString(); } } else if (!string.IsNullOrEmpty(result.Error)) { response.ResponseType = TransactionResponseType.Error; response.ReasonText = result.Error; } else { response.ResponseType = TransactionResponseType.Denied; response.ReasonText = result.Error; } return(response); }