private string GetReturnTemplate(OrderData orderData, bool paymentok, string paymenterror) { var info = ProviderUtils.GetProviderSettings(); info.UserId = UserController.Instance.GetCurrentUserInfo().UserID; var templ = ""; var passSettings = NBrightBuyUtils.GetPassSettings(info); if (passSettings.ContainsKey("paymenterror")) { passSettings.Add("paymenterror", paymenterror); } var displaytemplate = "payment_ok.cshtml"; if (paymentok) { info.SetXmlProperty("genxml/ordernumber", orderData.OrderNumber); templ = NBrightBuyUtils.RazorTemplRender(displaytemplate, 0, "", info, "/DesktopModules/NBright/OS_SystemPay", "config", Utils.GetCurrentCulture(), passSettings); } else { displaytemplate = "payment_fail.cshtml"; templ = NBrightBuyUtils.RazorTemplRender(displaytemplate, 0, "", info, "/DesktopModules/NBright/OS_SystemPay", "config", Utils.GetCurrentCulture(), passSettings); } return(templ); }
public static String GetBankRemotePost(OrderData orderData) { var rPost = new RemotePost(); var settings = ProviderUtils.GetProviderSettings(); var payData = new PayData(orderData); // build signature string string strMacCalc = ""; strMacCalc += payData.vads_action_mode + "+"; strMacCalc += payData.vads_amount + "+"; strMacCalc += payData.vads_ctx_mode + "+"; strMacCalc += payData.vads_currency + "+"; strMacCalc += payData.vads_language + "+"; strMacCalc += payData.vads_order_id + "+"; strMacCalc += payData.vads_order_info + "+"; strMacCalc += payData.vads_order_info2 + "+"; strMacCalc += payData.vads_page_action + "+"; strMacCalc += payData.vads_payment_config + "+"; strMacCalc += payData.vads_return_mode + "+"; strMacCalc += payData.vads_site_id + "+"; strMacCalc += payData.vads_trans_date + "+"; strMacCalc += payData.vads_trans_id + "+"; strMacCalc += payData.vads_url_return + "+"; strMacCalc += payData.vads_version + "+"; strMacCalc += payData.certificate; rPost.Url = payData.PostUrl; rPost.Add("vads_version", payData.vads_version); rPost.Add("vads_page_action", payData.vads_page_action); rPost.Add("vads_action_mode", payData.vads_action_mode); rPost.Add("vads_payment_config", payData.vads_payment_config); rPost.Add("vads_site_id", payData.vads_site_id); rPost.Add("vads_ctx_mode", payData.vads_ctx_mode); rPost.Add("vads_trans_id", payData.vads_trans_id); rPost.Add("vads_trans_date", payData.vads_trans_date); rPost.Add("vads_amount", payData.vads_amount); rPost.Add("vads_currency", payData.vads_currency); rPost.Add("vads_return_mode", payData.vads_return_mode); rPost.Add("vads_order_id", payData.vads_order_id); rPost.Add("vads_order_info", payData.vads_order_info); rPost.Add("vads_order_info2", payData.vads_order_info2); rPost.Add("vads_language", payData.vads_language); rPost.Add("vads_url_return", payData.vads_url_return); rPost.Add("signature", GetSignature(strMacCalc)); //Build the re-direct html var rtnStr = rPost.GetPostHtml(); if (settings.GetXmlPropertyBool("genxml/checkbox/debugmode")) { File.WriteAllText(PortalSettings.Current.HomeDirectoryMapPath + "\\debug_SystemPaypost.html", rtnStr); } return(rtnStr); }
public void LoadSettings(OrderData oInfo) { var settings = ProviderUtils.GetProviderSettings(); var appliedtotal = oInfo.PurchaseInfo.GetXmlPropertyDouble("genxml/appliedtotal"); var alreadypaid = oInfo.PurchaseInfo.GetXmlPropertyDouble("genxml/alreadypaid"); certificate = settings.GetXmlProperty("genxml/textbox/certificate"); PostUrl = "https://systempay.cyberpluspaiement.com/vads-payment/"; Email = oInfo.PurchaseInfo.GetXmlProperty("genxml/billaddress/textbox/billaddress"); if (!Utils.IsEmail(Email)) { Email = oInfo.PurchaseInfo.GetXmlProperty("genxml/extrainfo/textbox/cartemailaddress"); } var orderTotal = (appliedtotal - alreadypaid).ToString("0.00"); vads_version = "V2"; vads_page_action = "PAYMENT"; vads_action_mode = "INTERACTIVE"; vads_payment_config = "SINGLE"; vads_site_id = settings.GetXmlProperty("genxml/textbox/site"); vads_ctx_mode = "PRODUCTION"; if (settings.GetXmlPropertyBool("genxml/checkbox/testmode")) { vads_ctx_mode = "TEST"; } vads_trans_date = DateTime.UtcNow.Year.ToString("0000") + DateTime.UtcNow.Month.ToString("00") + DateTime.UtcNow.Day.ToString("00") + DateTime.UtcNow.Hour.ToString("00") + DateTime.UtcNow.Minute.ToString("00") + DateTime.UtcNow.Second.ToString("00"); vads_amount = orderTotal.Replace(",", "").Replace(".", ""); vads_currency = settings.GetXmlProperty("genxml/textbox/currency"); vads_return_mode = "POST"; vads_order_id = oInfo.PurchaseInfo.ItemID.ToString(""); vads_order_info = oInfo.Lang; vads_order_info2 = oInfo.PurchaseInfo.ItemID.ToString(""); vads_language = oInfo.Lang.Substring(0, 2); // with systempay, a transaction number can only be used once, Therefore we need to create a unique tansaction id on each post. var paycount = oInfo.PurchaseInfo.GetXmlPropertyInt("genxml/paycount"); paycount += 1; oInfo.PurchaseInfo.SetXmlPropertyDouble("genxml/paycount", paycount); oInfo.SavePurchaseData(); vads_trans_id = Utils.GetUniqueKey(6); var param = new string[3]; param[0] = "orderid=" + oInfo.PurchaseInfo.ItemID.ToString(""); // return orderid as param, so processing can be done on return. vads_url_return = Globals.NavigateURL(StoreSettings.Current.PaymentTabId, "", param); }
/// <summary> /// This function needs to process and returned message from the bank. /// This processing may vary widely between banks. /// </summary> /// <param name="context"></param> public void ProcessRequest(HttpContext context) { var modCtrl = new NBrightBuyController(); var info = ProviderUtils.GetProviderSettings(); try { var debugMode = info.GetXmlPropertyBool("genxml/checkbox/debugmode"); var orderid = context.Request.Form.Get("vads_order_id"); string clientlang = context.Request.Form.Get("vads_order_info"); var rtnMsg = "SECURITY WARNING"; var sig1 = context.Request.Form.Get("signature"); var strMacCalc = ProviderUtils.GetSignatureReturnData(info.GetXmlProperty("genxml/textbox/certificate"), context.Request); var sig2 = ProviderUtils.GetSignature(strMacCalc); var debugMsg = "START CALL notify.ashx " + DateTime.Now.ToString("s") + " </br>"; if (debugMode) { foreach (var f in context.Request.Form.AllKeys) { debugMsg += f + ": " + context.Request.Form.Get(f) + "</br>"; } debugMsg += "NBrightSystemPay DEBUG: " + DateTime.Now.ToString("s") + " </br>"; debugMsg += sig1 + " </br>"; debugMsg += sig2 + " </br>"; info.SetXmlProperty("genxml/debugmsg", debugMsg); modCtrl.Update(info); } else { if (info.GetXmlProperty("genxml/debugmsg") != "") { info.SetXmlProperty("genxml/debugmsg", ""); modCtrl.Update(info); } } if (sig1 == sig2) { // ------------------------------------------------------------------------ rtnMsg = ""; int nBrightSystemPayStoreOrderId = 0; if (Utils.IsNumeric(orderid)) { nBrightSystemPayStoreOrderId = Convert.ToInt32(orderid); } if (debugMode) { debugMsg += "OrderId: " + nBrightSystemPayStoreOrderId + " vads_order_id: " + orderid + " </br>"; } if (nBrightSystemPayStoreOrderId > 0) { var orderData = new OrderData(nBrightSystemPayStoreOrderId); string nBrightSystemPayStatusCode = ProviderUtils.GetStatusCode(orderData, context.Request); if (debugMode) { debugMsg += "NBrightSystemPayStatusCode: " + nBrightSystemPayStatusCode + " </br>"; } // Status return "00" is payment successful if (nBrightSystemPayStatusCode == "00") { //set order status to Payed orderData.PaymentOk(); } else { orderData.PaymentFail(); } orderData.Save(); } if (debugMode) { debugMsg += "Return Message: " + rtnMsg; info.SetXmlProperty("genxml/debugmsg", debugMsg); modCtrl.Update(info); } } HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Write(rtnMsg); HttpContext.Current.Response.ContentType = "text/plain"; HttpContext.Current.Response.CacheControl = "no-cache"; HttpContext.Current.Response.Expires = -1; HttpContext.Current.Response.End(); } catch (Exception ex) { if (!ex.ToString().StartsWith("System.Threading.ThreadAbortException")) // we expect a thread abort from the End response. { info.SetXmlProperty("genxml/debugmsg", "NBrightSystemPay ERROR: " + ex.ToString()); modCtrl.Update(info); } } }