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); }