public override Response PerformRequest(Request request)
        {
            Response response = new Response();

            if (gatewaySettings == null)
            {
                //Load settings if they have not been loaded
                OrbitalChasePayment.GetSettings();
            }
            PaymentechGateway server = new PaymentechGateway();

            server.Url = objProvider.transactionUrl;
            NewOrderRequestElement authBean = new NewOrderRequestElement();

            //Default values coming from config file.
            authBean.merchantID   = objProvider.MerchantId;
            authBean.terminalID   = objProvider.TerminalId;
            authBean.industryType = objProvider.IndustryType;
            authBean.bin          = objProvider.Bin;

            //Specific values per customer.
            authBean.orderID         = request.InvoiceNumber;
            authBean.transType       = request.RequestType.ToString();
            authBean.amount          = (request.Amount * 100).ToString();
            authBean.ccAccountNum    = request.CardNumber;
            authBean.ccExp           = request.ExpireDate;
            authBean.ccCardVerifyNum = request.CardCvv;
            authBean.avsName         = request.FirstName + " " + request.LastName;
            authBean.avsAddress1     = request.Address1;
            authBean.avsCity         = request.City;
            authBean.avsZip          = request.ZipCode;
            authBean.avsCountryCode  = request.Country;
            authBean.customerPhone   = request.Phone;
            authBean.customerName    = request.FirstName + " " + request.LastName;
            authBean.customerEmail   = request.Email;


            try
            {
                NewOrderResponseElement responseBean =
                    server.NewOrder(authBean);
                Console.WriteLine("ProcStatus: " +
                                  responseBean.procStatus);
                Console.WriteLine("ApprovalStatus: " +
                                  responseBean.approvalStatus);

                if (responseBean.respCode.Equals("00") && responseBean.approvalStatus.Equals("1"))
                {
                    response.ResponseType = TransactionResponseType.Approved;
                }
                else if (responseBean.approvalStatus.Equals("0"))
                {
                    response.ResponseType = TransactionResponseType.Denied;
                }
                else
                {
                    response.ResponseType = TransactionResponseType.Error;
                }
                response.ReasonText    = responseBean.respCodeMessage;
                response.TransactionID = responseBean.txRefNum;
                response.AuthCode      = responseBean.authorizationCode;
                response.AvsResponse   = TransactionAvsResponse.Match;
            }
            catch (System.Web.Services.Protocols.SoapException ex)
            {
                Console.WriteLine(ex.Message);
                response.ResponseType = TransactionResponseType.Error;
            }
            return(response);
        }
Example #2
0
        public Response PerformValidationRequest(Request request)
        {
            Response response = new Response();


            PaymentechGateway server = new PaymentechGateway();

            server.Url = gatewaySettings.TransactionURL;


            SafetechFraudAnalysisRequestElement authBean1 = new SafetechFraudAnalysisRequestElement();
            NewOrderRequestElement authBean = new NewOrderRequestElement();

            //Default values coming from config file.
            authBean1.merchantID = gatewaySettings.MerchantId;
            authBean1.terminalID = gatewaySettings.TerminalId;

            authBean1.bin     = gatewaySettings.Bin;
            authBean1.version = gatewaySettings.Version;
            if (gatewaySettings.User.Length > 0)
            {
                authBean1.orbitalConnectionUsername = gatewaySettings.User;
            }
            if (gatewaySettings.Password.Length > 0)
            {
                authBean1.orbitalConnectionPassword = gatewaySettings.Password;
            }

            //Specific values per customer.

            BaseElementsType  bs  = new BaseElementsType();
            FraudAnalysisType fat = new FraudAnalysisType();


            bs.orderID            = request.CustomerID;
            bs.amount             = (request.Amount * 100).ToString();
            bs.ccAccountNum       = request.CardNumber;
            bs.ccExp              = request.ExpireDate.ToString("yyyyMM");
            bs.ccCardVerifyNum    = request.CardCvv;
            bs.avsName            = request.FirstName + " " + request.LastName;
            bs.avsAddress1        = request.Address1;
            bs.avsCity            = request.City;
            bs.avsZip             = request.ZipCode;
            bs.avsState           = request.State;
            bs.comments           = request.TransactionDescription;
            bs.avsCountryCode     = request.Country;
            bs.customerEmail      = request.Email;
            bs.avsPhone           = request.Phone;
            bs.avsDestPhoneNum    = request.Phone;
            bs.avsDestName        = request.ShipToFirstName + " " + request.ShipToLastName;
            bs.avsDestAddress1    = request.Address1;
            bs.avsDestCity        = request.ShipToCity;
            bs.avsDestCountryCode = request.ShipToCountry;
            bs.avsDestZip         = request.ShipToZipCode;
            bs.customerIpAddress  = request.IPAddress;

            fat.fraudScoreIndicator = "1";
            fat.rulesTrigger        = "Y";
            fat.safetechMerchantID  = gatewaySettings.SafetechMerchantId;

            fat.cashValueOfFencibleItems = (request.Amount * 100).ToString();

            authBean1.baseElements  = bs;
            authBean1.fraudAnalysis = fat;
            string s = Serialize(authBean1);

            //System.IO.File.WriteAllText(@"c:\BatchProcesses\StonedineSafetTechTest\WriteReq.txt", s);
            try
            {
                SafetechFraudAnalysisResponseElement responseBean1 = server.SafetechFraudAnalysis(authBean1);


                string s2 = Serialize(responseBean1);
                response.GatewayResponseRaw = s2;
                response.MerchantDefined1   = s;
                //System.IO.File.WriteAllText(@"c:\BatchProcesses\StonedineSafetTechTest\WriteRes.txt", s2);
                Console.WriteLine("ProcStatus: " +
                                  responseBean1.procStatus);
                Console.WriteLine("ApprovalStatus: " +
                                  responseBean1.approvalStatus);
                Console.ReadLine();

                if (responseBean1.fraudAnalysisResponse.autoDecisionResponse.ToUpper().Equals("A") && Convert.ToInt32(responseBean1.fraudAnalysisResponse.riskScore) <= 50)
                {
                    response.ResponseType = TransactionResponseType.Approved;
                }
                else if (!responseBean1.fraudAnalysisResponse.autoDecisionResponse.ToUpper().Equals("A"))
                {
                    response.ResponseType = TransactionResponseType.Denied;
                }
                else
                {
                    response.ResponseType = TransactionResponseType.Error;
                }
                response.ReasonText    = responseBean1.fraudAnalysisResponse.fraudStatusCode;
                response.TransactionID = responseBean1.fraudAnalysisResponse.riskInquiryTransactionID;
                response.AvsResponse   = TransactionAvsResponse.Match;
            }
            catch (System.Web.Services.Protocols.SoapException ex)
            {
                Console.WriteLine(ex.Message);
                response.ResponseType = TransactionResponseType.Error;
                Console.ReadLine();
            }
            return(response);
        }
Example #3
0
        protected Response BuildRequest(Request request)
        {
            Response          response = new Response();
            PaymentechGateway server   = new PaymentechGateway();

            server.Url = gatewaySettings.TransactionURL;
            NewOrderRequestElement authBean = new NewOrderRequestElement();

            //Default values coming from config file.
            authBean.merchantID   = gatewaySettings.MerchantId;
            authBean.terminalID   = gatewaySettings.TerminalId;
            authBean.industryType = gatewaySettings.IndustryType;
            authBean.bin          = gatewaySettings.Bin;
            authBean.version      = gatewaySettings.Version;
            authBean.transType    = gatewaySettings.RequestType;
            if (gatewaySettings.User.Length > 0)
            {
                authBean.orbitalConnectionUsername = gatewaySettings.User;
            }
            if (gatewaySettings.Password.Length > 0)
            {
                authBean.orbitalConnectionPassword = gatewaySettings.Password;
            }
            //Specific values per customer.
            authBean.orderID         = request.InvoiceNumber;
            authBean.amount          = (request.Amount * 100).ToString();
            authBean.ccAccountNum    = request.CardNumber;
            authBean.ccExp           = request.ExpireDate.ToString("yyyyMM");
            authBean.ccCardVerifyNum = request.CardCvv;
            authBean.avsName         = request.FirstName + " " + request.LastName;
            authBean.avsAddress1     = request.Address1;
            authBean.avsCity         = request.City;
            authBean.avsZip          = request.ZipCode;
            authBean.avsCountryCode  = request.Country;
            authBean.customerPhone   = request.Phone;
            authBean.customerName    = request.FirstName + " " + request.LastName;
            authBean.customerEmail   = request.Email;

            response.GatewayRequestRaw = Serialize(authBean);

            try
            {
                NewOrderResponseElement responseBean =
                    server.NewOrder(authBean);

                Console.WriteLine("ProcStatus: " +
                                  responseBean.procStatus);
                Console.WriteLine("ApprovalStatus: " +
                                  responseBean.approvalStatus);

                if (responseBean.respCode.Equals("00") && responseBean.approvalStatus.Equals("1"))
                {
                    response.ResponseType = TransactionResponseType.Approved;
                }
                else if (responseBean.approvalStatus.Equals("0"))
                {
                    response.ResponseType = TransactionResponseType.Denied;
                }
                else
                {
                    response.ResponseType = TransactionResponseType.Error;
                }
                response.ReasonText         = responseBean.respCodeMessage;
                response.TransactionID      = responseBean.txRefNum;
                response.AuthCode           = responseBean.authorizationCode;
                response.MerchantDefined1   = responseBean.txRefIdx;
                response.GatewayResponseRaw = Serialize(responseBean);
            }
            catch (Exception ex)
            {
                string s = ex.Message;
                response.ResponseType = TransactionResponseType.Error;

                response.GatewayResponseRaw = "Exception message: " + ex.Message;
            }
            return(response);
        }
Example #4
0
        //VOIDS a transaction
        public Response PerformVoidRequest(Request voidRequest)
        {
            Response          response = new Response();
            PaymentechGateway server   = new PaymentechGateway();

            server.Url = gatewaySettings.TransactionURL;
            ReversalElement reversalEl = new ReversalElement();

            //Default values coming from config file.
            reversalEl.adjustedAmount = string.Empty; //Should be empty for VOID, otherwise specifiy for partial refund
            reversalEl.bin            = gatewaySettings.Bin;
            reversalEl.merchantID     = gatewaySettings.MerchantId;
            reversalEl.terminalID     = gatewaySettings.TerminalId;
            reversalEl.bin            = gatewaySettings.Bin;
            reversalEl.version        = gatewaySettings.Version;
            if (gatewaySettings.User.Length > 0)
            {
                reversalEl.orbitalConnectionUsername = gatewaySettings.User;
            }
            if (gatewaySettings.Password.Length > 0)
            {
                reversalEl.orbitalConnectionPassword = gatewaySettings.Password;
            }
            reversalEl.txRefIdx = voidRequest.TransactionID;
            reversalEl.txRefNum = voidRequest.AuthCode;
            reversalEl.orderID  = voidRequest.InvoiceNumber.ToString();
            //Perform void request
            try
            {
                ReversalResponseElement reversalResponse = server.Reversal(reversalEl);

                Console.WriteLine("ProcStatus: " +
                                  reversalResponse.procStatus);
                Console.WriteLine("ApprovalStatus: " +
                                  reversalResponse.approvalStatus);

                if (reversalResponse.respCode.Equals("00") && reversalResponse.approvalStatus.Equals("1"))
                {
                    response.ResponseType = TransactionResponseType.Approved;
                }
                else if (reversalResponse.approvalStatus.Equals("0"))
                {
                    response.ResponseType = TransactionResponseType.Denied;
                }
                else
                {
                    response.ResponseType = TransactionResponseType.Error;
                }
                response.ReasonText         = reversalResponse.procStatusMessage;
                response.TransactionID      = reversalResponse.txRefNum;
                response.GatewayResponseRaw = Serialize(reversalResponse);
            }
            catch (Exception ex)
            {
                string s = ex.Message;
                response.ResponseType = TransactionResponseType.Error;

                response.GatewayResponseRaw = "Exception message: " + ex.Message;
            }

            return(response);
        }