Пример #1
0
        private string GetReturnTemplate(OrderData orderData, bool paymentok, string paymenterror)
        {
            var info = ProviderUtils.GetProviderSettings();

            info.UserId = UserController.Instance.GetCurrentUserInfo().UserID;
            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);
                info.SetXmlProperty("genxml/orderid", orderData.PurchaseInfo.ItemID.ToString());
                return(NBrightBuyUtils.RazorTemplRender(displaytemplate, 0, "", info, "/DesktopModules/NBright/OS_Mollie", "config", Utils.GetCurrentCulture(), passSettings));
            }
            else
            {
                displaytemplate = "payment_fail.cshtml";
                return(NBrightBuyUtils.RazorTemplRender(displaytemplate, 0, "", info, "/DesktopModules/NBright/OS_Mollie", "config", Utils.GetCurrentCulture(), passSettings));
            }
        }
Пример #2
0
        private void PageLoad()
        {
            if (NBrightBuyUtils.CheckRights())
            {
                var info = ProviderUtils.GetProviderSettings();

                var strOut = NBrightBuyUtils.RazorTemplRender("settings.cshtml", 0, "", info, ControlPath, "config", Utils.GetCurrentCulture(), StoreSettings.Current.Settings());
                var l      = new Literal();
                l.Text = strOut;
                Controls.Add(l);
            }
        }
Пример #3
0
        public static PaymentResponse GetOrderPaymentResponse(OrderData orderData, string origin)
        {
            var info   = ProviderUtils.GetProviderSettings();
            var apiKey = info.GetXmlProperty("genxml/textbox/key");

            IPaymentClient paymentClient = new PaymentClient(apiKey);
            var            task          = Task.Run(async() => await paymentClient.GetPaymentAsync(orderData.PaymentPassKey));

            task.Wait();
            PaymentResponse paymentClientResult = task.Result;

            if (string.IsNullOrEmpty(orderData.GetInfo().GetXmlNode("genxml/paymentreturn")))
            {
                orderData.GetInfo().AddSingleNode("paymentreturn", "", "genxml");
            }

            var xmlDoc  = orderData.GetInfo().XMLDoc;
            var newNode = xmlDoc.CreateNode(XmlNodeType.Element, "data", "");
            var dtAttr  = newNode.Attributes.Append(xmlDoc.CreateAttribute("timestamp"));

            dtAttr.Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            newNode.Attributes.Append(dtAttr);

            var xml = $@"<data timestamp=""{DateTime.Now:yyyy-MM-dd HH:mm:ss}"" origin=""{origin}"">
    <created>{paymentClientResult.CreatedAt:yyyy-MM-dd HH:mm:ss}</created>
    <cancelled>{paymentClientResult.CreatedAt:yyyy-MM-dd HH:mm:ss}</cancelled>
    <expired>{paymentClientResult.CreatedAt:yyyy-MM-dd HH:mm:ss}</expired>
    <failed>{paymentClientResult.CreatedAt:yyyy-MM-dd HH:mm:ss}</failed>
    <paied>{paymentClientResult.CreatedAt:yyyy-MM-dd HH:mm:ss}</paied>
    <description>{paymentClientResult.Description}</description>
    <method>{paymentClientResult.Method}</method>
    <amount>{paymentClientResult.Amount.Value}</amount>
    <currency>{paymentClientResult.Amount.Currency}</currency>
    <status>{paymentClientResult.Status}</status>
</data>";

            orderData.GetInfo().AddXmlNode(xml, "data", "genxml/paymentreturn");
            var modCtrl = new NBrightBuyController();

            modCtrl.Update(orderData.GetInfo());

            return(paymentClientResult);
        }
Пример #4
0
        public override string GetTemplate(NBrightInfo cartInfo)
        {
            var info         = ProviderUtils.GetProviderSettings();
            var templateName = info.GetXmlProperty("genxml/textbox/checkouttemplate");
            var passSettings = info.ToDictionary();

            foreach (var s in StoreSettings.Current.Settings()) // copy store setting, otherwise we get a byRef assignement
            {
                if (passSettings.ContainsKey(s.Key))
                {
                    passSettings[s.Key] = s.Value;
                }
                else
                {
                    passSettings.Add(s.Key, s.Value);
                }
            }

            return(NBrightBuyUtils.RazorTemplRender(templateName, 0, "", info, "/DesktopModules/NBright/OS_Mollie", "config", Utils.GetCurrentCulture(), passSettings));;
        }
Пример #5
0
        public override string RedirectForPayment(OrderData orderData)
        {
            try
            {
                var appliedtotal = orderData.PurchaseInfo.GetXmlPropertyDouble("genxml/appliedtotal");
                var alreadypaid  = orderData.PurchaseInfo.GetXmlPropertyDouble("genxml/alreadypaid");

                var info = ProviderUtils.GetProviderSettings();

                string cartDesc  = info.GetXmlProperty("genxml/textbox/cartdescription");
                var    ApiKey    = info.GetXmlProperty("genxml/textbox/key");
                var    idealOnly = true; // default to previous behaviour
                if (info.XMLDoc.SelectSingleNode("genxml/checkbox/idealonly") != null)
                {
                    // take the value from the settings, if it exists
                    idealOnly = info.GetXmlPropertyBool("genxml/checkbox/idealonly");
                }
                var notifyUrl = Utils.ToAbsoluteUrl("/DesktopModules/NBright/OS_Mollie/notify.ashx");
                var returnUrl = Globals.NavigateURL(StoreSettings.Current.PaymentTabId, "");

                //orderid/itemid
                var ItemId = orderData.PurchaseInfo.ItemID.ToString("");

                var productOrderNumber = orderData.OrderNumber;

                ////var nbi = new NBrightInfo();
                //nbi.XMLData = orderData.payselectionXml;
                //var paymentMethod = nbi.GetXmlProperty("genxml/textbox/paymentmethod");
                //var paymentBank = nbi.GetXmlProperty("genxml/textbox/paymentbank");
                //var apiKey = liveApiKey;

                string      specifier;
                CultureInfo culture;
                specifier = "F";
                culture   = CultureInfo.CreateSpecificCulture("en-US");
                var totalString       = decimal.Parse((appliedtotal - alreadypaid).ToString("0.00"));
                var totalPrijsString2 = totalString.ToString(specifier, culture).Replace('€', ' ').Trim();

                PaymentResponse result = null;
                if (idealOnly)
                {
                    IPaymentClient      paymentClient       = new PaymentClient(ApiKey);
                    IdealPaymentRequest paymentRequestIdeal = new IdealPaymentRequest()
                    {
                        Amount      = new Amount(Currency.EUR, totalPrijsString2),
                        Description = "Bestelling ID: " + " " + productOrderNumber + " " + cartDesc,
                        RedirectUrl = returnUrl + "/orderid/" + ItemId,
                        WebhookUrl  = notifyUrl + "?orderid=" + ItemId,
                        Locale      = Locale.nl_NL,
                        Method      = PaymentMethod.Ideal
                    };

                    var task = Task.Run(async() => (IdealPaymentResponse)await paymentClient.CreatePaymentAsync(paymentRequestIdeal));
                    task.Wait();
                    result = task.Result;
                }
                else
                {
                    IPaymentClient paymentClient  = new PaymentClient(ApiKey);
                    PaymentRequest paymentRequest = new PaymentRequest()
                    {
                        Amount      = new Amount(Currency.EUR, totalPrijsString2),
                        Description = "Bestelling ID: " + " " + productOrderNumber + " " + cartDesc,
                        RedirectUrl = returnUrl + "/orderid/" + ItemId,
                        WebhookUrl  = notifyUrl + "?orderid=" + ItemId,
                        Locale      = Locale.nl_NL,
                    };

                    var task = Task.Run(async() => await paymentClient.CreatePaymentAsync(paymentRequest));
                    task.Wait();
                    result = task.Result;
                }

                orderData.PaymentPassKey = result.Id;
                orderData.OrderStatus    = "020";
                orderData.PurchaseInfo.SetXmlProperty("genxml/paymenterror", "");
                orderData.PurchaseInfo.SetXmlProperty("genxml/posturl", result.Links.Checkout.Href);
                orderData.PurchaseInfo.Lang = Utils.GetCurrentCulture();
                orderData.SavePurchaseData();

                try
                {
                    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
                    // objEventLog.AddLog("Betaling aangemaakt: ", "ID: " + result.Id + " Bedrag:" + result.Amount.Currency + " ItemId: " + ItemId, PortalSettings, -1, EventLogController.EventLogType.ADMIN_ALERT);

                    HttpContext.Current.Response.Clear();
                    //redirect naar Mollie
                    HttpContext.Current.Response.Redirect(result.Links.Checkout.Href);
                }
                catch (Exception ex)
                {
                    // rollback transaction
                    orderData.PurchaseInfo.SetXmlProperty("genxml/paymenterror", "<div>ERROR: Invalid payment data </div><div>" + ex + "</div>");
                    orderData.PaymentFail("010");
                    //objEventLog.AddLog("Betaling aanmaken mislukt: ", "ID: " + result.Id + " Bedrag:" + result.Amount.Currency + " ItemId: " + ItemId, PortalSettings, -1, EventLogController.EventLogType.ADMIN_ALERT);

                    var param = new string[3];
                    param[0] = "orderid=" + orderData.PurchaseInfo.ItemID.ToString("");
                    param[1] = "status=0";
                    return(Globals.NavigateURL(StoreSettings.Current.PaymentTabId, "", param));
                }
                try
                {
                    HttpContext.Current.Response.End();
                }
                catch (Exception ex)
                {
                    // this try/catch to avoid sending error 'ThreadAbortException'
                }

                return("");
            }
            catch (Exception ex)
            {
                //objEventLog.AddLog("Foutje", "Dus:" + ex.Message + " " + ex.InnerException , PortalSettings, -1, EventLogController.EventLogType.ADMIN_ALERT);
                return(ex.InnerException.ToString());
            }
        }
Пример #6
0
        public override string ProcessPaymentReturn(HttpContext context)
        {
            var info    = ProviderUtils.GetProviderSettings();
            var ApiKey  = info.GetXmlProperty("genxml/textbox/key");
            var orderid = Utils.RequestQueryStringParam(context, "orderid");

            var            objEventLog    = new EventLogController();
            PortalSettings portalsettings = new PortalSettings();

            var orderData = new OrderData(Convert.ToInt32(orderid));
            var rtnerr    = orderData.PurchaseInfo.GetXmlProperty("genxml/paymenterror");

            if (Utils.IsNumeric(orderid))
            {
                IPaymentClient paymentClient = new PaymentClient(ApiKey);
                var            task          = Task.Run(async() => await paymentClient.GetPaymentAsync(orderData.PaymentPassKey));
                task.Wait();
                PaymentResponse paymentClientResult = task.Result;

                objEventLog.AddLog("Mollie ProcessPaymentReturn", "Status: " + paymentClientResult.Status + " OrderId:" + orderid + " Mollie Id: " + orderData.PaymentPassKey, portalsettings, -1, EventLogController.EventLogType.ADMIN_ALERT);

                switch (paymentClientResult.Status.ToString().ToLower())
                {
                case "open":

                    //waiting for bank?
                    rtnerr = orderData.PurchaseInfo.GetXmlProperty("genxml/paymenterror");
                    rtnerr = "Mollie open";     // to return this so a fail is activated.
                    return(GetReturnTemplate(orderData, false, "Mollie Open"));

                case "paid":

                    return(GetReturnTemplate(orderData, true, ""));

                case "failed":

                    rtnerr = orderData.PurchaseInfo.GetXmlProperty("genxml/paymenterror");
                    rtnerr = "Mollie failed";     // to return this so a fail is activated.
                    return(GetReturnTemplate(orderData, false, "Mollie failed"));

                case "canceled":

                    rtnerr = orderData.PurchaseInfo.GetXmlProperty("genxml/paymenterror");
                    rtnerr = "Mollie Canceled";     // to return this so a fail is activated.
                    return(GetReturnTemplate(orderData, false, "Mollie canceled"));

                case "expired":

                    rtnerr = orderData.PurchaseInfo.GetXmlProperty("genxml/paymenterror");
                    rtnerr = "Mollie Expired";     // to return this so a fail is activated.
                    return(GetReturnTemplate(orderData, false, "Mollie expired"));

                default:

                    rtnerr = orderData.PurchaseInfo.GetXmlProperty("genxml/paymenterror");
                    rtnerr = "Mollie failed";     // to return this so a fail is activated.
                    return(GetReturnTemplate(orderData, false, "Mollie failed"));
                }
            }
            else
            {
                rtnerr = orderData.PurchaseInfo.GetXmlProperty("genxml/paymenterror");
                rtnerr = "Mollie failed"; // to return this so a fail is activated.
                return(GetReturnTemplate(orderData, false, "Mollie failed"));
            }
        }