Example #1
0
        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);
        }
Example #4
0
        /// <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);
                }
            }
        }