private NotifyCode Update(String emailoption = "") { // we don;t have the full field set on this form, so only update the fields we know are there. var trackingcode = GenXmlFunctions.GetField(rpDataF, "trackingcode"); var shippingdate = GenXmlFunctions.GetField(rpDataF, "shippingdate"); var orderstatus = GenXmlFunctions.GetField(rpDataF, "orderstatus"); var showtouser = GenXmlFunctions.GetField(rpDataF, "showtouser"); var notes = GenXmlFunctions.GetField(rpDataF, "notes"); var emailmsg = GenXmlFunctions.GetField(rpDataF, "emailmsg"); var strUpd = GenXmlFunctions.GetGenXml(rpDataF, "", StoreSettings.Current.FolderUploadsMapPath); var nbi = new NBrightInfo(true); nbi.XMLData = strUpd; if (!Utils.IsNumeric(_entryid)) { return(NotifyCode.error); } var ordData = new OrderData(PortalId, Convert.ToInt32(_entryid)); if (ordData.PurchaseInfo.ItemID == -1) { return(NotifyCode.fail); } ordData.ShippedDate = shippingdate; ordData.OrderStatus = orderstatus; ordData.TrackingCode = trackingcode; ordData.InvoiceFileName = nbi.GetXmlProperty("genxml/hidden/hidinvoicedoc"); ordData.InvoiceFileExt = Path.GetExtension(ordData.InvoiceFileName); ordData.InvoiceFilePath = StoreSettings.Current.FolderUploadsMapPath + "\\" + ordData.InvoiceFileName; ordData.AddAuditMessage(notes, "msg", UserInfo.Username, showtouser); if (emailoption != "") { ordData.AddAuditMessage(emailmsg, "email", UserInfo.Username, showtouser, emailoption); } if (ordData.OrderNumber == "") { ordData.OrderNumber = StoreSettings.Current.Get("orderprefix") + ordData.PurchaseInfo.ModifiedDate.Year.ToString("").Substring(2, 2) + ordData.PurchaseInfo.ModifiedDate.Month.ToString("00") + ordData.PurchaseInfo.ModifiedDate.Day.ToString("00") + _entryid; } ordData.InvoiceDownloadName = ordData.OrderNumber + ordData.InvoiceFileExt; ordData.Save(); return(NotifyCode.ok); }
public HttpResponseMessage AddAudit(int id, AuditDTO data) { var ordData = new OrderData(id); ordData.AddAuditMessage(data.Message, "Conference", UserInfo.DisplayName, "False"); ordData.Save(); return(Request.CreateResponse(HttpStatusCode.OK, NBrightRepository.Instance.GetOrders(PortalSettings.PortalId).FirstOrDefault(o => o.ItemId == id))); }
private void PageLoad() { var strOut = ""; var orderid = Utils.RequestParam(Context, "orderid"); if (Utils.IsNumeric(orderid)) { // orderid exists, so must be return from bank; Process it!! var orderData = new OrderData(PortalId, Convert.ToInt32(orderid)); var prov = PaymentsInterface.Instance(orderData.PaymentProviderKey); strOut = prov.ProcessPaymentReturn(Context); if (strOut == "") { orderData = new OrderData(PortalId, Convert.ToInt32(orderid)); // reload the order, becuase the status and typecode may have changed by the payment provider. var status = Utils.RequestQueryStringParam(Context, "status"); if (status == "0") { var rtnerr = orderData.PurchaseInfo.GetXmlProperty("genxml/paymenterror"); orderData.AddAuditMessage(rtnerr, "paymsg", "payment.ascx", "False"); orderData.Save(); if (strOut == "") { strOut = NBrightBuyUtils.RazorTemplRender("payment_fail.cshtml", 0, "", orderData, ControlPath, ThemeFolder, Utils.GetCurrentCulture(), StoreSettings.Current.Settings()); } } else { orderData = new OrderData(PortalId, Convert.ToInt32(orderid)); // get the updated order. orderData.PaymentOk("050"); if (strOut == "") { strOut = NBrightBuyUtils.RazorTemplRender("payment_ok.cshtml", 0, "", orderData, ControlPath, ThemeFolder, Utils.GetCurrentCulture(), StoreSettings.Current.Settings()); } } } } else { var cartInfo = new CartData(PortalSettings.Current.PortalId); // not returning from bank, so display list of payment providers. strOut = NBrightBuyUtils.RazorTemplRender(RazorTemplate, 0, "", cartInfo, ControlPath, ThemeFolder, Utils.GetCurrentCulture(), StoreSettings.Current.Settings()); } var lit = new Literal(); lit.Text = strOut; phData.Controls.Add(lit); }
public override string ProcessPaymentReturn(HttpContext context) { // vads fields are always passed back on return var orderid = context.Request.Form.Get("vads_order_id"); if (!Utils.IsNumeric(orderid)) { orderid = Utils.RequestParam(context, "orderid"); } string clientlang = context.Request.Form.Get("vads_order_info"); if (Utils.IsNumeric(orderid)) { var status = context.Request.Form.Get("vads_result"); if (string.IsNullOrEmpty(status)) { status = Utils.RequestQueryStringParam(context, "status"); } var orderData = new OrderData(Convert.ToInt32(orderid)); if ((status != "00" || status == "0") && orderData.IsNotPaid()) { var rtnerr = orderData.PurchaseInfo.GetXmlProperty("genxml/paymenterror"); if (rtnerr == "") { rtnerr = "fail"; // to return this so a fail is activated. } orderData.AddAuditMessage(rtnerr, "paymsg", "payment.ascx", "False"); orderData.Save(); // check we have a waiting for bank status (IPN may have altered status already + help stop hack) if (orderData.OrderStatus == "020") { orderData.PaymentFail(); // paymentfailed will move order back to cart. } return(GetReturnTemplate(orderData, false, rtnerr)); } // check we have a waiting for bank status (IPN may have altered status already + help stop hack) if (orderData.OrderStatus == "020") { orderData.PaymentOk("050"); // order paid, but NOT verified } return(GetReturnTemplate(orderData, true, "")); } return(""); }
private static String OrderAdminRemoveInvoice(HttpContext context) { try { if (NBrightBuyUtils.CheckManagerRights()) { var ajaxInfo = NBrightBuyUtils.GetAjaxInfo(context); var itemId = ajaxInfo.GetXmlPropertyInt("genxml/hidden/itemid"); if (itemId > 0) { var ordData = new OrderData(itemId); if (ordData != null) { // save relitive path also if (File.Exists(ordData.PurchaseInfo.GetXmlProperty("genxml/hidden/invoicefilepath"))) { File.Delete(ordData.PurchaseInfo.GetXmlProperty("genxml/hidden/invoicefilepath")); } ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefilepath", ""); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefilename", ""); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefileext", ""); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefilerelpath", ""); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicedownloadname", ""); ordData.AddAuditMessage(NBrightBuyUtils.ResourceKey("OrderAdmin.cmdDeleteInvoice"), "invremove", UserController.Instance.GetCurrentUserInfo().Username, "False"); ordData.Save(); } } return(""); } return(""); } catch (Exception ex) { return(ex.ToString()); } }
/// <summary> /// This function needs to process and returned message from the bank. /// Thsi processing may vary widely between banks. /// </summary> /// <param name="context"></param> public void ProcessRequest(HttpContext context) { var modCtrl = new NBrightBuyController(); var info = ProviderUtils.GetProviderSettings("NBrightBuySipsApipayment"); try { var debugMode = info.GetXmlPropertyBool("genxml/checkbox/debugmode"); var rtnMsg = "version=2" + Environment.NewLine + "cdr=1"; // ------------------------------------------------------------------------ // In this case the payment provider passes back data via form POST. // Get the data we need. string returnmessage = ""; int NBrightBuySipsApiStoreOrderID = 0; string NBrightBuySipsApiCartID = ""; string NBrightBuySipsApiClientLang = ""; if ((context.Request.Form.Get("DATA") != null)) { returnmessage = "message=" + context.Request.Form.Get("DATA"); if (!string.IsNullOrEmpty(returnmessage)) { // ------------------------------------------------------------------------ var settings = ProviderUtils.GetProviderSettings("NBrightBuySipsApipayment"); var controlMapPath = HttpContext.Current.Server.MapPath("/DesktopModules/NBright/NBrightBuySipsApi"); var pathfile = "pathfile=" + PortalSettings.Current.HomeDirectoryMapPath.TrimEnd('\\') + "\\" + settings.GetXmlProperty("genxml/textbox/paramfolder") + "\\pathfile"; var exepath = controlMapPath.TrimEnd('\\') + "\\sipsbin\\response.exe"; var sipsdata = ProviderUtils.CallSipsExec(exepath, pathfile + " " + returnmessage); if (debugMode) { info.SetXmlProperty("genxml/debugmsg", sipsdata); modCtrl.Update(info); } var tableau = sipsdata.Split('!'); string code = tableau[1]; string error_msg = tableau[2]; if (string.IsNullOrEmpty(code) | code == "-1") { info.SetXmlProperty("genxml/debugmsg", error_msg); modCtrl.Update(info); } else { // L'execution s'est bien deroulee // recuperation des donnees de la reponse string merchant_id = tableau[3]; string merchant_country = tableau[4]; string amount = tableau[5]; string transaction_id = tableau[6]; string payment_means = tableau[7]; string transmission_date = tableau[8]; string payment_time = tableau[9]; string payment_date = tableau[10]; string response_code = tableau[11]; string payment_certificate = tableau[12]; string authorisation_id = tableau[13]; string currency_code = tableau[14]; string card_number = tableau[15]; string cvv_flag = tableau[16]; string cvv_response_code = tableau[17]; string bank_response_code = tableau[18]; string complementary_code = tableau[19]; string complementary_info = tableau[20]; string return_context = tableau[21]; string caddie = tableau[22]; string receipt_complement = tableau[23]; string merchant_language = tableau[24]; string language = tableau[25]; string customer_id = tableau[26]; string order_id = tableau[27]; string customer_email = tableau[28]; string customer_ip_address = tableau[29]; string capture_day = tableau[30]; string capture_mode = tableau[31]; string data = tableau[32]; // Sauvegarde des champs de la reponse string Lmsg = null; Lmsg = merchant_id + ","; Lmsg += merchant_country + ","; Lmsg += amount + ","; Lmsg += transaction_id + ","; Lmsg += transmission_date + ","; Lmsg += payment_means + ","; Lmsg += payment_time + ","; Lmsg += payment_date + ","; Lmsg += response_code + ","; Lmsg += payment_certificate + ","; Lmsg += authorisation_id + ","; Lmsg += currency_code + ","; Lmsg += card_number + ","; Lmsg += cvv_flag + ","; Lmsg += cvv_response_code + ","; Lmsg += bank_response_code + ","; Lmsg += complementary_code + ","; Lmsg += complementary_info + ","; Lmsg += return_context + ","; Lmsg += caddie + ","; Lmsg += receipt_complement + ","; Lmsg += merchant_language + ","; Lmsg += language + ","; Lmsg += customer_id + ","; Lmsg += order_id + ","; Lmsg += customer_email + ","; Lmsg += customer_ip_address + ","; Lmsg += capture_day + ","; Lmsg += capture_mode + ","; Lmsg += data + ","; //update database stuff if (Utils.IsNumeric(order_id)) { var orderData = new OrderData(Convert.ToInt32(order_id)); orderData.AddAuditMessage(Lmsg, "payment", "sipsapi", info.GetXmlProperty("genxml/checkbox/debugmode")); // Status return "00" is payment successful if (response_code == "00") { //set order status to Payed orderData.PaymentOk(); } else { orderData.PaymentFail(); } } } } } } catch (Exception ex) { if (!ex.ToString().StartsWith("System.Threading.ThreadAbortException")) // we expect a thread abort from the End response. { info.SetXmlProperty("genxml/debugmsg", "NBrightBuySipsApi ERROR: " + ex.ToString()); modCtrl.Update(info); } } }
public static String GetBankRemotePost(OrderData orderData) { var rPost = new RemotePost(); var objCtrl = new NBrightBuyController(); var settings = objCtrl.GetPluginSinglePageData("OS_Sipspayment", "OS_SipsPAYMENT", Utils.GetCurrentCulture()); var appliedtotal = orderData.PurchaseInfo.GetXmlPropertyDouble("genxml/appliedtotal"); var alreadypaid = orderData.PurchaseInfo.GetXmlPropertyDouble("genxml/alreadypaid"); var orderTotal = Regex.Replace((appliedtotal - alreadypaid).ToString("0.00"), "[^0-9]", ""); var controlMapPath = HttpContext.Current.Server.MapPath("/DesktopModules/NBright/OS_Sips"); var pathfile = PortalSettings.Current.HomeDirectoryMapPath.TrimEnd('\\') + "\\" + settings.GetXmlProperty("genxml/textbox/paramfolder") + "\\pathfile"; var transid = Convert.ToDateTime(orderData.PurchaseInfo.ModifiedDate).Ticks.ToString(); transid = transid.Substring(transid.Length - 6); var parms = ""; parms = "pathfile=\"" + pathfile + "\" "; parms += "merchant_id=" + settings.GetXmlProperty("genxml/textbox/merchantid") + " "; parms += "merchant_country=" + settings.GetXmlProperty("genxml/textbox/merchantcountry") + " "; parms += "amount=" + orderTotal + " "; parms += "currency_code=" + settings.GetXmlProperty("genxml/textbox/currencycode") + " "; parms += "transaction_id=" + transid + " "; parms += "payment_means=" + settings.GetXmlProperty("genxml/textbox/paymentmeans") + " "; parms += "order_id=" + orderData.PurchaseInfo.ItemID.ToString("") + " "; var param = new string[3]; param[0] = "orderid=" + orderData.PurchaseInfo.ItemID.ToString(""); param[1] = "status=1"; var storeSettings = new StoreSettings(orderData.PortalId); var sUrlOk = Globals.NavigateURL(storeSettings.PaymentTabId, "", param); param[1] = "status=0"; var sUrlKo = Globals.NavigateURL(storeSettings.PaymentTabId, "", param); parms += "normal_return_url=" + sUrlOk + " "; parms += "cancel_return_url=" + sUrlKo + " "; if (settings.GetXmlProperty("genxml/textbox/ipn") != "") { parms += "automatic_response_url=" + settings.GetXmlProperty("genxml/textbox/ipn") + " "; } else { var baseUri = new Uri("https://" + PortalSettings.Current.PortalAlias.HTTPAlias); var absoluteUri = new Uri(baseUri, "/DesktopModules/NBright/OS_Sips/notify.ashx"); parms += "automatic_response_url=" + absoluteUri + " "; } parms += "language=" + orderData.Lang.Substring(0, 2) + " "; if (settings.GetXmlPropertyBool("genxml/checkbox/debugmode")) { File.WriteAllText(PortalSettings.Current.HomeDirectoryMapPath + "\\debug_SipsApiparams.html", parms); } var exepath = controlMapPath.TrimEnd('\\') + "\\sipsbin\\request.exe"; var sipsdata = CallSipsExec(exepath, parms); var tableau = sipsdata.Split('!'); string code = ""; code = tableau[1]; string errorMsg = tableau[2]; if (code.Equals("") | code.Equals("-1")) { return(errorMsg); } var htmlOutput = tableau[3]; var aryResult = htmlOutput.Split('"'); var sipsUrl = aryResult[1]; var sipsData = aryResult[5]; rPost.Url = sipsUrl; rPost.Add("DATA", sipsData); // must be uppercase. // just force CB payment. (CB must be in the list of payment_means) rPost.Add("CB.x", "5"); rPost.Add("CB.y", "5"); // save here (may chnage lang field) orderData.AddAuditMessage(transid, "sisptransid", "sipsapi", "True"); orderData.Save(); //Build the re-direct html var rtnStr = rPost.GetPostHtml(); if (settings.GetXmlPropertyBool("genxml/checkbox/debugmode")) { File.WriteAllText(PortalSettings.Current.HomeDirectoryMapPath + "\\debug_SipsApihtmlOutput.html", htmlOutput); File.WriteAllText(PortalSettings.Current.HomeDirectoryMapPath + "\\debug_SipsApipost.html", rtnStr); } return(rtnStr); }
private static String OrderAdminSave(HttpContext context) { try { if (NBrightBuyUtils.CheckManagerRights()) { var ajaxInfo = NBrightBuyUtils.GetAjaxInfo(context); var itemId = ajaxInfo.GetXmlPropertyInt("genxml/hidden/itemid"); if (itemId > 0) { var ordData = new OrderData(itemId); if (ordData != null) { var newStatusOrder = ajaxInfo.GetXmlProperty("genxml/dropdownlist/orderstatus"); if (ordData.OrderStatus != newStatusOrder) { ordData.OrderStatus = newStatusOrder; } ordData.PurchaseInfo.SetXmlProperty("genxml/textbox/shippingdate", ajaxInfo.GetXmlProperty("genxml/textbox/shippingdate"), TypeCode.DateTime); ordData.PurchaseInfo.SetXmlProperty("genxml/textbox/trackingcode", ajaxInfo.GetXmlProperty("genxml/textbox/trackingcode")); // do audit notes if (ajaxInfo.GetXmlProperty("genxml/textbox/auditnotes") != "") { ordData.AddAuditMessage(ajaxInfo.GetXmlProperty("genxml/textbox/auditnotes"), "notes", UserController.Instance.GetCurrentUserInfo().Username, "False"); } // save relitive path also if (ajaxInfo.GetXmlProperty("genxml/hidden/optionfilelist") != "") { var fname = Path.GetFileName(ajaxInfo.GetXmlProperty("genxml/hidden/optionfilelist")); if (File.Exists(StoreSettings.Current.FolderTempMapPath.TrimEnd('\\') + "\\" + fname)) { var newfname = Utils.GetUniqueKey(); // save relitive path also if (File.Exists(ordData.PurchaseInfo.GetXmlProperty("genxml/hidden/invoicefilepath"))) { File.Delete(StoreSettings.Current.FolderUploadsMapPath.TrimEnd('\\') + "\\" + newfname); } File.Copy(StoreSettings.Current.FolderTempMapPath.TrimEnd('\\') + "\\" + fname, StoreSettings.Current.FolderUploadsMapPath.TrimEnd('\\') + "\\" + newfname); File.Delete(StoreSettings.Current.FolderTempMapPath.TrimEnd('\\') + "\\" + fname); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefilepath", StoreSettings.Current.FolderUploadsMapPath.TrimEnd('\\') + "\\" + newfname); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefilename", newfname); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoiceuploadname", fname); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefileext", Path.GetExtension(fname)); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefilerelpath", StoreSettings.Current.FolderUploads + "/" + newfname); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicedownloadname", "NBS" + ordData.OrderNumber + Path.GetExtension(fname)); } } ordData.Save(); } } return(""); } return(""); } catch (Exception ex) { return(ex.ToString()); } }
private static String OrderAdminSave(HttpContext context) { try { if (NBrightBuyUtils.CheckManagerRights()) { var ajaxInfo = NBrightBuyUtils.GetAjaxInfo(context); var itemId = ajaxInfo.GetXmlPropertyInt("genxml/hidden/itemid"); if (itemId > 0) { var ordData = new OrderData(itemId); if (ordData != null) { var newStatusOrder = ajaxInfo.GetXmlProperty("genxml/dropdownlist/orderstatus"); if (ordData.OrderStatus != newStatusOrder) { ordData.OrderStatus = newStatusOrder; } ordData.PurchaseInfo.SetXmlProperty("genxml/textbox/shippingdate", ajaxInfo.GetXmlProperty("genxml/textbox/shippingdate"), TypeCode.DateTime); ordData.PurchaseInfo.SetXmlProperty("genxml/textbox/trackingcode", ajaxInfo.GetXmlProperty("genxml/textbox/trackingcode")); // do audit notes if (ajaxInfo.GetXmlProperty("genxml/textbox/auditnotes") != "") { ordData.AddAuditMessage(ajaxInfo.GetXmlProperty("genxml/textbox/auditnotes"), "notes", UserController.Instance.GetCurrentUserInfo().Username, "False"); } // save relitive path also if (ajaxInfo.GetXmlProperty("genxml/hidden/optionfilelist") != "") { var fname = Path.GetFileName(ajaxInfo.GetXmlProperty("genxml/hidden/optionfilelist")); var ext = Path.GetExtension(fname); fname = DnnUtils.Encrypt(fname, StoreSettings.Current.Get("adminpin")); foreach (char c in System.IO.Path.GetInvalidFileNameChars()) { fname = fname.Replace(c, '_'); } fname = ext + "-" + fname; // add extension to front, so it cannot be servered but we can add to order data. if (File.Exists(StoreSettings.Current.FolderTempMapPath.TrimEnd('\\') + "\\" + fname)) { var newfname = "secure" + Utils.GetUniqueKey(); // save relitive path also if (File.Exists(ordData.PurchaseInfo.GetXmlProperty("genxml/hidden/invoicefilepath"))) { File.Delete(StoreSettings.Current.FolderUploadsMapPath.TrimEnd('\\') + "\\" + newfname); } File.Copy(StoreSettings.Current.FolderTempMapPath.TrimEnd('\\') + "\\" + fname, StoreSettings.Current.FolderUploadsMapPath.TrimEnd('\\') + "\\" + newfname); File.Delete(StoreSettings.Current.FolderTempMapPath.TrimEnd('\\') + "\\" + fname); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefilepath", StoreSettings.Current.FolderUploadsMapPath.TrimEnd('\\') + "\\" + newfname); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefilename", newfname); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoiceuploadname", fname); var ext2 = ""; var extSplit = fname.Split('-'); if (extSplit.Count() > 0) { ext2 = extSplit[0]; // we add the extension to the front of upload for IIS default security in serving file. } ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefileext", ext2); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicefilerelpath", StoreSettings.Current.FolderUploads + "/" + newfname); ordData.PurchaseInfo.SetXmlProperty("genxml/hidden/invoicedownloadname", "OS" + ordData.OrderNumber + ext2); } } ordData.Save(); //Remove cached dashboard template var cachekey = "nbrightbuydashboard*" + PortalSettings.Current.PortalId.ToString(); Utils.RemoveCache(cachekey); } } return(""); } return(""); } catch (Exception ex) { return(ex.ToString()); } }
public override string RedirectForPayment(OrderData orderData) { orderData.OrderStatus = "020"; orderData.PurchaseInfo.SetXmlProperty("genxml/paymenterror", ""); orderData.PurchaseInfo.Lang = Utils.GetCurrentCulture(); orderData.SavePurchaseData(); try { var nonce = HttpContext.Current.Request.Cookies.Get("nonce") != null?HttpContext.Current.Request.Cookies.Get("nonce").Value : ""; if (string.IsNullOrWhiteSpace(nonce)) { HttpContext.Current.Request.Cookies.Get("nonce").Expires = DateTime.Now.AddDays(-1d); //No Nonce Return to Payment Tab with Failure message; var param = new string[2]; param[0] = "orderid=" + orderData.PurchaseInfo.ItemID.ToString(""); param[1] = "status=0"; return(Globals.NavigateURL(StoreSettings.Current.PaymentTabId, "", param)); } else { // 010 = Incomplete, 020 = Waiting for Bank,030 = Cancelled,040 = Payment OK,050 = Payment Not Verified,060 = Waiting for Payment,070 = Waiting for Stock,080 = Waiting,090 = Shipped,010 = Closed,011 = Archived HttpContext.Current.Response.Clear(); var response = ProviderUtils.GetChargeResponse(orderData, nonce); var param = new string[2]; param[0] = "orderid=" + orderData.PurchaseInfo.ItemID.ToString(""); if (response.Errors == null || response.Errors.Count == 0) { //add external order id, payment id & status to PurchaseInfo for dev reference orderData.PurchaseInfo.SetXmlProperty("genxml/externalorderid", response.Payment.OrderId); orderData.PurchaseInfo.SetXmlProperty("genxml/externalpaymentid", response.Payment.Id); orderData.PurchaseInfo.SetXmlProperty("genxml/externalstatus", response.Payment.Status); //also add the Square payment id to the audit log for admins/managers to reference orderData.AddAuditMessage("Square Payment ID " + response.Payment.Id, "notes", UserController.Instance.GetCurrentUserInfo().Username, "False"); // successful transaction if (response.Payment.SourceType == "BANK_ACCOUNT") { if (response.Payment.Status == "PENDING") { //ACH payments can take 3-5 days to clear //so set the status to Payment Not Verified 050 //and add an audit log entry for the Pending ACH Transfer orderData.AddAuditMessage("Pending ACH Transfer", "notes", UserController.Instance.GetCurrentUserInfo().Username, "False"); orderData.PaymentOk("050"); param[1] = "status=1"; } else { //ACH payments should not end up here //since all payments will intially //return a PENDING status orderData.OrderStatus = "030"; param[1] = "status=0"; orderData.AddAuditMessage("Unhandled payment status", "notes", UserController.Instance.GetCurrentUserInfo().Username, "False"); throw new Exception("Unhandled payment status"); } } else { // cc payments orderData.PaymentOk("040"); param[1] = "status=1"; } NBrightBuyUtils.SendOrderEmail("OrderCreatedClient", orderData.PurchaseInfo.ItemID, "ordercreatedemailsubject"); } else { // failed transaction orderData.OrderStatus = "030"; param[1] = "status=0"; // create error string for output to the order audit log var errorString = ""; if (response.Errors.Count > 0) { foreach (var e in response.Errors) { errorString += e.Detail; errorString += " "; } ; } //add message for admins to view in the order audit log orderData.AddAuditMessage(errorString, "notes", UserController.Instance.GetCurrentUserInfo().Username, "False"); } orderData.SavePurchaseData(); HttpContext.Current.Response.Redirect(Globals.NavigateURL(StoreSettings.Current.PaymentTabId, "", param), false); } } catch (Exception ex) { // rollback transaction // NOTE: The errors returned by the gateway are not shown to the user // DNN admin must be able to review the cart data for a user. orderData.PurchaseInfo.SetXmlProperty("genxml/paymenterror", "<div>ERROR: Invalid payment data </div><div>" + ex + "</div>"); orderData.PaymentFail(); var param = new string[2]; param[0] = "orderid=" + orderData.PurchaseInfo.ItemID.ToString(""); param[1] = "status=0"; HttpContext.Current.Response.Redirect(Globals.NavigateURL(StoreSettings.Current.PaymentTabId, "", param)); } try { HttpContext.Current.Response.End(); } catch (Exception) { // this try/catch to avoid sending error 'ThreadAbortException' } return(""); }
protected void CtrlItemCommand(object source, RepeaterCommandEventArgs e) { var cArg = e.CommandArgument.ToString(); var tabId = TabId; var param = new string[4]; if (_uid != "") { param[0] = "uid=" + _uid; } var navigationData = new NavigationData(PortalId, "AdminOrders"); var cmd = e.CommandName.ToLower(); var resxpath = StoreSettings.NBrightBuyPath() + "/App_LocalResources/Notification.ascx.resx"; var emailoption = ""; switch (cmd) { case "entrydetail": param[0] = "eid=" + cArg; if (_page != "") { param[1] = "page=" + _page; } Response.Redirect(NBrightBuyUtils.AdminUrl(TabId, param), true); break; case "movetoorder": param[0] = ""; if (Utils.IsNumeric(cArg)) { var obj = ModCtrl.Get(Convert.ToInt32(cArg)); obj.TypeCode = "ORDER"; ModCtrl.Update(obj); var ordData = new OrderData(obj.ItemID); ordData.OrderStatus = "010"; ordData.CreatedDate = DateTime.Now.ToString("O"); ordData.OrderNumber = obj.ItemID.ToString(); ordData.AddAuditMessage(DnnUtils.GetLocalizedString("movetoordermsg.Text", "/DesktopModules/NBright/NBrightBuyCartReview/Themes/config/resx", Utils.GetCurrentCulture()), "msg", UserInfo.Username, "False"); ordData.Save(); } Response.Redirect(NBrightBuyUtils.AdminUrl(TabId, param), true); break; case "return": param[0] = ""; if (_page != "") { param[1] = "page=" + _page; } Response.Redirect(NBrightBuyUtils.AdminUrl(TabId, param), true); break; case "search": var strXml = GenXmlFunctions.GetGenXml(rpSearch, "", ""); navigationData.Build(strXml, _templSearch); navigationData.OrderBy = GenXmlFunctions.GetSqlOrderBy(rpSearch); navigationData.XmlData = GenXmlFunctions.GetGenXml(rpSearch); navigationData.Save(); if (StoreSettings.Current.DebugModeFileOut) { strXml = "<root><sql><![CDATA[" + navigationData.Criteria + "]]></sql>" + strXml + "</root>"; var xmlDoc = new System.Xml.XmlDataDocument(); xmlDoc.LoadXml(strXml); xmlDoc.Save(PortalSettings.HomeDirectoryMapPath + "debug_search.xml"); } Response.Redirect(NBrightBuyUtils.AdminUrl(TabId, param), true); break; case "resetsearch": // clear cookie info navigationData.Delete(); Response.Redirect(NBrightBuyUtils.AdminUrl(TabId, param), true); break; case "orderby": navigationData.OrderBy = GenXmlFunctions.GetSqlOrderBy(rpData); navigationData.Save(); break; case "viewclient": param[1] = "ctrl=clients"; if (Utils.IsNumeric(cArg)) { var cartData = new CartData(Convert.ToInt32(cArg)); param[0] = "uid=" + cartData.UserId.ToString(""); } Response.Redirect(Globals.NavigateURL(TabId, "", param), true); break; case "delete": if (Utils.IsNumeric(cArg)) { ModCtrl.Delete(Convert.ToInt32(cArg)); } Response.Redirect(NBrightBuyUtils.AdminUrl(TabId, param), true); break; } }
override protected void OnInit(EventArgs e) { base.OnInit(e); if (ModSettings.Get("themefolder") == "") // if we don't have module setting jump out { rpPaymentGateways.ItemTemplate = new GenXmlTemplate("NO MODULE SETTINGS"); return; } try { var pluginData = new PluginData(PortalSettings.Current.PortalId); _provList = pluginData.GetPaymentProviders(); _cartInfo = new CartData(PortalId); var orderid = Utils.RequestQueryStringParam(Context, "orderid"); var templOk = ModSettings.Get("paymentoktemplate"); var templFail = ModSettings.Get("paymentfailtemplate"); var templHeader = ""; var templFooter = ""; var templText = ""; if ((_provList.Count == 0 || _cartInfo.PurchaseInfo.GetXmlPropertyDouble("genxml/appliedtotal") <= 0) && orderid == "") { #region "No Payment providers, so process as a ordering system" var displayTempl = templOk; if (!_cartInfo.IsValidated()) { displayTempl = templFail; } rpDetailDisplay.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(ModCtrl.GetTemplateData(ModSettings, displayTempl, Utils.GetCurrentCulture(), DebugMode), ModSettings.Settings(), PortalSettings.HomeDirectory); _templateHeader = (GenXmlTemplate)rpDetailDisplay.ItemTemplate; // we may have voucher discounts that give a zero appliedtotal, so process. var discountprov = DiscountCodeInterface.Instance(); if (discountprov != null) { discountprov.UpdatePercentUsage(PortalId, UserId, _cartInfo.PurchaseInfo); discountprov.UpdateVoucherAmount(PortalId, UserId, _cartInfo.PurchaseInfo); } #endregion } else { #region "Payment Details" // display the payment method by default templHeader = ModSettings.Get("paymentordersummary"); templFooter = ModSettings.Get("paymentfooter"); var templPaymentText = ""; var msg = ""; if (Utils.IsNumeric(orderid)) { // orderid exists, so must be return from bank; Process it!! _orderData = new OrderData(PortalId, Convert.ToInt32(orderid)); _prov = PaymentsInterface.Instance(_orderData.PaymentProviderKey); msg = _prov.ProcessPaymentReturn(Context); if (msg == "") // no message so successful { _orderData = new OrderData(PortalId, Convert.ToInt32(orderid)); // get the updated order. _orderData.PaymentOk("050"); templText = templOk; } else { _orderData = new OrderData(PortalId, Convert.ToInt32(orderid)); // reload the order, becuase the status and typecode may have changed by the payment provider. _orderData.AddAuditMessage(msg, "paymsg", "payment.ascx", "False"); _orderData.Save(); templText = templFail; } templFooter = ""; // return from bank, hide footer } else { // not returning from bank, so display list of payment providers. rpPaymentGateways.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(GetPaymentProviderTemplates(), ModSettings.Settings(), PortalSettings.HomeDirectory); } if (templText == "") { templText = templHeader; // if we are NOT returning from bank, then display normal header summary template } templPaymentText = ModCtrl.GetTemplateData(ModSettings, templText, Utils.GetCurrentCulture(), DebugMode); rpDetailDisplay.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(templPaymentText, ModSettings.Settings(), PortalSettings.HomeDirectory); _templateHeader = (GenXmlTemplate)rpDetailDisplay.ItemTemplate; if (templFooter != "") { var templPaymentFooterText = ModCtrl.GetTemplateData(ModSettings, templFooter, Utils.GetCurrentCulture(), DebugMode); rpDetailFooter.ItemTemplate = NBrightBuyUtils.GetGenXmlTemplate(templPaymentFooterText, ModSettings.Settings(), PortalSettings.HomeDirectory); } #endregion } // insert page header text NBrightBuyUtils.IncludePageHeaders(ModCtrl, ModuleId, Page, _templateHeader, ModSettings.Settings(), null, DebugMode); } catch (Exception exc) { //display the error on the template (don;t want to log it here, prefer to deal with errors directly.) var l = new Literal(); l.Text = exc.ToString(); phData.Controls.Add(l); } }