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