public PaymentRequest CreatePaymentRequest(OrderInfo orderInfo) { var paymentProvider = PaymentProvider.GetPaymentProvider(orderInfo.PaymentInfo.Id, orderInfo.StoreInfo.Alias); var partnerId = paymentProvider.GetSetting("PartnerId"); var returnUrl = paymentProvider.SuccessUrl(); var reportUrl = paymentProvider.ReportUrl(); var testMode = paymentProvider.TestMode; var idealFetch = new IdealFetch(partnerId, testMode, orderInfo.OrderNumber, reportUrl, returnUrl, orderInfo.PaymentInfo.MethodId, orderInfo.ChargedAmount); if (idealFetch.Error) { Log.Instance.LogError("Mollie PaymentRequestHandler.CreatePaymentRequest: idealFetch.Error: " + idealFetch.ErrorMessage); return(null); } var transactionId = idealFetch.TransactionId; orderInfo.PaymentInfo.Url = idealFetch.Url; PaymentProviderHelper.SetTransactionId(orderInfo, transactionId); return(new PaymentRequest()); }
public ProcessPaymentResult Process(PaymentProcessingContext context) { if (context.Amount < (decimal)1.19) { throw new FormatException("Amount cannot be less than € 1,19"); } var settings = context.ProcessorConfig as IDealConfig; var instance = CommerceInstance.Current.Name; var httpContext = HttpContextAccessor(); var reportUrl = Strings.AreaName + "/iDeal/Callback?instance=" + instance; var returnUrl = Strings.AreaName + "/iDeal/Return?instance=" + instance + "&paymentId=" + context.Payment.Id + "&commerceReturnUrl=" + HttpUtility.UrlEncode(context.ReturnUrl); var idealFetch = new IdealFetch( settings.PartnerId , context.Payment.Description , reportUrl.ToFullUrl(httpContext) , returnUrl.ToFullUrl(httpContext) , "" , context.Amount ); if (idealFetch.Error) { throw new PaymentProcessorException(idealFetch.ErrorMessage); } return(ProcessPaymentResult.Pending(idealFetch.Url, idealFetch.TransactionId)); }
public ProcessPaymentResult Process(PaymentProcessingContext context) { if (context.Amount < (decimal)1.19) throw new FormatException("Amount cannot be less than € 1,19"); var settings = context.ProcessorConfig as IDealConfig; var instance = CommerceInstance.Current.Name; var httpContext = HttpContextAccessor(); var reportUrl = Strings.AreaName + "/iDeal/Callback?instance=" + instance; var returnUrl = Strings.AreaName + "/iDeal/Return?instance=" + instance + "&paymentId=" + context.Payment.Id + "&commerceReturnUrl=" + HttpUtility.UrlEncode(context.ReturnUrl); var idealFetch = new IdealFetch( settings.PartnerId , context.Payment.Description , reportUrl.ToFullUrl(httpContext) , returnUrl.ToFullUrl(httpContext) , "" , context.Amount ); if (idealFetch.Error) throw new PaymentProcessorException(idealFetch.ErrorMessage); return ProcessPaymentResult.Pending(idealFetch.Url, idealFetch.TransactionId); }
/// <summary> /// Gets the transaction URL. /// </summary> /// <param name="settings">The settings.</param> /// <param name="order">The order.</param> /// <returns></returns> public Dictionary <string, string> getTransactionURL(IDictionary <string, string> settings, Api.Models.Order order) { Dictionary <string, string> resultList = new Dictionary <string, string>(); settings.MustContainKey("mollieiDealBanksPropertyAlias", "settings"); settings.MustContainKey("OrderDescriptionField", "settings"); string bankId = order.Properties[settings["mollieiDealBanksPropertyAlias"]]; decimal amount = order.TotalPrice.Value.WithVat; //var hash = GenerateHMACMD5Hash(settings["SecretKey"], string.Format("{0}{1}{2}", settings["PartnerId"], settings["ProfileKey"], order.CartNumber)); var hash = new HMACSHA256(Encoding.UTF8.GetBytes(settings["SecretKey"])).ComputeHash(Encoding.UTF8.GetBytes(string.Format("{0}{1}{2}", settings["PartnerId"], settings["ProfileKey"], order.CartNumber))).ToBase64(); var qs = (settings["ReportUrl"].Contains('?')) ? "&" : "?"; string reporturl = string.Format("{0}{1}cartNumber={2}&hash={3}", settings["ReportUrl"], qs, order.CartNumber, hash); string orderDescriptionField = settings["OrderDescriptionField"]; string description = string.Format("{0} {1}", orderDescriptionField, order.CartNumber); qs = (settings["ReturnUrl"].Contains('?')) ? "&" : "?"; string returnurl = string.Format("{0}{1}orderId={2}", settings["ReturnUrl"], qs, order.Id); string profile_key = settings["ProfileKey"]; string partner_id = settings["PartnerId"]; string mollieUrl = settings["MollieUrl"]; bool testmode = false; if (settings["TestMode"] == "1") { testmode = true; } IdealFetch idealFetch = new IdealFetch ( partner_id //replace this by your Mollie partnerid , testmode //testmode , description , reporturl , returnurl , bankId , amount ); resultList.Add("transactionId", idealFetch.TransactionId); resultList.Add("transactionUrl", idealFetch.Url); return(resultList); }
public static string GetPaymentUrl(Transaction idealPayer, string mollieClientNumber, bool testMode, string paymentName, string reportUrl, string landUrl) { if(idealPayer.Payed) throw new Exception("Er is al betaald"); IdealFetch idealFetch = new IdealFetch(mollieClientNumber, testMode, paymentName, reportUrl, landUrl, idealPayer.BankId, idealPayer.Amount); if (idealFetch.Error) { throw new Exception(idealFetch.ErrorMessage); } idealPayer.TransactionId = idealFetch.TransactionId; using( TransactionScope transactionScope = new TransactionScope(TransactionMode.Inherits, OnDispose.Rollback)) { idealPayer.Save(); transactionScope.VoteCommit(); } return idealFetch.Url; }
public PaymentRequest CreatePaymentRequest(OrderInfo orderInfo) { var paymentProvider = PaymentProvider.GetPaymentProvider(orderInfo.PaymentInfo.Id, orderInfo.StoreInfo.Alias); var partnerId = paymentProvider.GetSetting("PartnerId"); var returnUrl = paymentProvider.SuccessUrl(); var reportUrl = paymentProvider.ReportUrl(); var testMode = paymentProvider.TestMode; var idealFetch = new IdealFetch(partnerId, testMode, orderInfo.OrderNumber, reportUrl, returnUrl, orderInfo.PaymentInfo.MethodId, orderInfo.ChargedAmount); if (idealFetch.Error) { Log.Instance.LogError("Mollie PaymentRequestHandler.CreatePaymentRequest: idealFetch.Error: " + idealFetch.ErrorMessage); return null; } var transactionId = idealFetch.TransactionId; orderInfo.PaymentInfo.Url = idealFetch.Url; PaymentProviderHelper.SetTransactionId(orderInfo, transactionId); return new PaymentRequest(); }