示例#1
0
 public void runCreditGuard()
 {
     var paymentDetails = new PaymentDetails
     {
         Amount        = (float)12,
         CreditId      = "1061724217431708",
         Exp           = "0917",
         AuthNumber    = "1919572",
         NumOfPayments = 1
     };
     var response = CreditGuardManager.CreateMPITransaction(paymentDetails);
 }
        public static string CreateMPITransaction(PaymentDetails paymentDetails)
        {
            var    suppliers        = _suppliersForSnoopyTerminal.Split(',');
            bool   isSnoopySupplier = suppliers.Any(x => x == paymentDetails.SupplierToken);
            string terminalId       = isSnoopySupplier ? _snoopyTerminalId : _terminalId;

            ILogger logger            = new FileLogger();
            int     periodicalPayment = (int)paymentDetails.Amount / paymentDetails.NumOfPayments;
            float   firstPayment      = paymentDetails.Amount - ((paymentDetails.NumOfPayments - 1) * periodicalPayment);
            String  result            = "";
            var     req = new StringBuilder();

            req.AppendFormat("user={0}&password={1}&int_in=<ashrait><request>", _userId, _password);
            req.Append("<language>ENG</language><command>doDeal</command><requestId/><version>1000</version>");
            req.AppendFormat("<doDeal><terminalNumber>{0}</terminalNumber><transactionCode>Phone</transactionCode>", terminalId);
            req.AppendFormat("<transactionType>Debit</transactionType><total>{0}</total>", paymentDetails.Amount);
            req.AppendFormat("<creditType>{0}</creditType>", paymentDetails.NumOfPayments > 1 ? "Payments" : "RegularCredit");
            if (paymentDetails.NumOfPayments > 1)
            {
                req.AppendFormat("<numberOfPayments>{0}</numberOfPayments>", paymentDetails.NumOfPayments - 1);
                req.AppendFormat("<firstPayment>{0}</firstPayment>", firstPayment);
                req.AppendFormat("<periodicalPayment>{0}</periodicalPayment>", periodicalPayment);
            }
            req.AppendFormat("<cardId>{0}</cardId><authNumber>{1}</authNumber><cvv>{2}</cvv>", paymentDetails.CreditId, paymentDetails.AuthNumber, paymentDetails.Cvv);
            req.AppendFormat("<cardExpiration>{0}</cardExpiration>", paymentDetails.Exp);
            if (!isSnoopySupplier)
            {
                req.AppendFormat("<dealerNumber>{0}</dealerNumber>", paymentDetails.SupplierToken);
            }
            req.Append("<validation>AutoComm</validation><customerData><userData1/><userData2/><userData3/><userData4/>" +
                       "<userData5/></customerData><currency>ILS</currency>");
            req.AppendFormat("<id>{0}</id></doDeal></request></ashrait>", paymentDetails.HolderId);

            StreamWriter   myWriter   = null;
            HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(_gatewayUrl);

            objRequest.Method        = "POST";
            objRequest.ContentLength = req.Length;
            objRequest.ContentType   = "application/x-www-form-urlencoded";
            //ServicePointManager.Expect100Continue = true;
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol  = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls
                                                    | (SecurityProtocolType)768
                                                    | (SecurityProtocolType)3072;

            ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AllwaysGoodCertificate);
            objRequest.Timeout = 50000;
            try
            {
                Helpers.LogProcessing("CreateMPITransaction- " + paymentDetails.CreditId + " - ", req.ToString(), false);

                myWriter = new StreamWriter(objRequest.GetRequestStream());
                myWriter.Write(req);
            }
            catch (Exception e)
            {
                Helpers.LogProcessing("CreateMPITransaction - ex -" + paymentDetails.CreditId + " - ", "\n exception: " + e.ToString(), true);
                return(e.Message);
            }
            finally
            {
                myWriter.Close();
            }
            HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();

            using (StreamReader sr =
                       new StreamReader(objResponse.GetResponseStream()))
            {
                result = sr.ReadToEnd();
                Helpers.LogProcessing("CreateMPITransaction- " + paymentDetails.CreditId + "- response", result, false);

                // Close and clean up the StreamReader
                sr.Close();
            }


            XmlDocument doc = new XmlDocument();

            doc.LoadXml(result);

            string response = doc.GetElementsByTagName("status")[0].InnerText;

            return(response);
        }