コード例 #1
0
        public PaymentRequest CreatePaymentRequest(OrderInfo orderInfo)
        {
            var paymentProvider = PaymentProvider.GetPaymentProvider(orderInfo.PaymentInfo.Id, orderInfo.StoreInfo.Alias);

            var liveUrl = "https://checkout.buckaroo.nl/nvp/";
            var testUrl = "https://testcheckout.buckaroo.nl/nvp/";

            var configLiveUrl = paymentProvider.GetSetting("Url");
            var configTestUrl = paymentProvider.GetSetting("testUrl");

            var lowercaseUrls = paymentProvider.GetSetting("LowercaseUrls");
            var trailingSlash = paymentProvider.GetSetting("AddTrailingSlash");

            var lowercase = false;
            var addslash = false;

            if (!string.IsNullOrEmpty(lowercaseUrls))
            {
                if (lowercaseUrls == "true" || lowercaseUrls == "1" || lowercaseUrls == "on")
                {
                    lowercase = true;
                }
            }

            if (!string.IsNullOrEmpty(trailingSlash))
            {
                if (trailingSlash == "true" || trailingSlash == "1" || trailingSlash == "on")
                {
                    addslash = true;
                }
            }

            if(!string.IsNullOrEmpty(configLiveUrl))
            {
                liveUrl = configLiveUrl;
            }
            if(!string.IsNullOrEmpty(configTestUrl))
            {
                testUrl = configTestUrl;
            }

            var url = paymentProvider.TestMode ? testUrl : liveUrl;

            var providerSettingsXML = paymentProvider.GetSettingsXML();

            var service = orderInfo.PaymentInfo.MethodId;

            string issuer = null;

            var issuerElement = providerSettingsXML.Descendants().FirstOrDefault(x => x.Value.ToLowerInvariant() == orderInfo.PaymentInfo.MethodId.ToLowerInvariant());

            if (issuerElement != null)
            {
                issuer = issuerElement.Value;

                if (issuerElement.Name.LocalName.ToLowerInvariant() != "issuer")
                {
                    var firstOrDefault = issuerElement.AncestorsAndSelf("Service").FirstOrDefault();
                    if (firstOrDefault != null)
                    {
                        service = firstOrDefault.Attribute("name").Value;
                    }
                }
            }

            var reportUrl = paymentProvider.ReportUrl();
            if (lowercase)
            {
                reportUrl = reportUrl.ToLowerInvariant();
            }

            if (!reportUrl.EndsWith("/") && addslash)
            {
                reportUrl = reportUrl + "/";
            }

            BuckarooRequestParameters requestParams = new BuckarooRequestParameters(paymentProvider.GetSetting("SecretKey"));
            requestParams.Amount = orderInfo.ChargedAmountInCents / 100m;
            requestParams.Culture = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
            requestParams.Currency = orderInfo.StoreInfo.Store.CurrencyCultureSymbol;
            requestParams.InvoiceNumber = orderInfo.OrderNumber;
            requestParams.PaymentMethod = service;
            requestParams.ReturnUrl = reportUrl;
            requestParams.ReturnCancelUrl = reportUrl;
            requestParams.ReturnErrorUrl = reportUrl;
            requestParams.ReturnReject = reportUrl;
            requestParams.WebsiteKey = paymentProvider.GetSetting("Websitekey");

            var transactionId = orderInfo.UniqueOrderId.ToString();
            requestParams.TransactionId = transactionId;

            string IssuersServiceKeyName = null;
            string IssuerServiceKeyValue = null;
            string IssuerActionKeyName = null;
            string IssuerActionKeyValue = null;

            if (!string.IsNullOrEmpty(issuer))
            {
                IssuersServiceKeyName = string.Format("brq_service_{0}_issuer", service);
                IssuerServiceKeyValue = issuer;
                IssuerActionKeyName = string.Format("brq_service_{0}_action", service);
                IssuerActionKeyValue = "Pay";

                requestParams.AddCustomParameter(IssuersServiceKeyName, IssuerServiceKeyValue);
                requestParams.AddCustomParameter(IssuerActionKeyName, IssuerActionKeyValue);
            }

            if (service.Equals("transfer"))
            {
                requestParams.AddCustomParameter("brq_service_transfer_customeremail", orderInfo.CustomerEmail);
                requestParams.AddCustomParameter("brq_service_transfer_customerfirstname", orderInfo.CustomerFirstName);
                requestParams.AddCustomParameter("brq_service_transfer_customerlastname", orderInfo.CustomerLastName);
            }

            if (service.Equals("onlinegiro"))
            {
                requestParams.AddCustomParameter("brq_service_onlinegiro_customergender", "9");
                requestParams.AddCustomParameter("brq_service_onlinegiro_customeremail", orderInfo.CustomerEmail);
                requestParams.AddCustomParameter("brq_service_onlinegiro_customerfirstname", orderInfo.CustomerFirstName);
                requestParams.AddCustomParameter("brq_service_onlinegiro_customerlastname", orderInfo.CustomerLastName);
            }

            requestParams.Sign();

            var request = new PaymentRequest();
            //request.Parameters.Add("add_transactionReference", Add_transactionReference);
            //request.Parameters.Add("brq_amount", Brq_amount);
            //request.Parameters.Add("brq_currency", Brq_currency);
            //request.Parameters.Add("brq_invoicenumber", Brq_invoicenumber);
            //request.Parameters.Add("brq_payment_method", Brq_payment_method);
            //request.Parameters.Add("brq_return", Brq_return);
            //request.Parameters.Add("brq_returncancel", Brq_returncancel);
            //request.Parameters.Add("brq_returnerror", Brq_returnerror);
            //request.Parameters.Add("brq_returnreject", Brq_returnreject);

            //if (!string.IsNullOrEmpty(issuer))
            //{
            //    request.Parameters.Add(IssuerActionKeyName, IssuerActionKeyValue);

            //    request.Parameters.Add(IssuersServiceKeyName, IssuerServiceKeyValue);

            //}

            //request.Parameters.Add("brq_websitekey", Brq_websitekey);
            //request.Parameters.Add("brq_signature", Brq_signature);
            request.Parameters = requestParams.GetParameters();

            var uri = new Uri(url);
            var webrequest = WebRequest.Create(uri);
            var encoding = new UTF8Encoding();
            var requestData = encoding.GetBytes(request.ParametersAsString);

            webrequest.ContentType = "application/x-www-form-urlencoded";

            webrequest.Method = "POST";
            webrequest.ContentLength = requestData.Length;

            using (var stream = webrequest.GetRequestStream())
            {
                stream.Write(requestData, 0, requestData.Length);
            }

            using (var response = webrequest.GetResponse())
            {
                var stream = response.GetResponseStream();
                if (stream == null) throw new Exception("No response from POST request to " + url);
                using (var reader = new StreamReader(stream, Encoding.ASCII))
                {
                    var value = reader.ReadToEnd();

                    var result = HttpUtility.ParseQueryString(value);

                    orderInfo.PaymentInfo.Url = result["brq_redirecturl"];

                    if (service == "onlinegiro" || service == "transfer")
                    {
                        orderInfo.PaymentInfo.Url = reportUrl + "?" + value;
                    }
                }

            }

            PaymentProviderHelper.SetTransactionId(orderInfo, transactionId);

            return request;
        }
コード例 #2
0
        public PaymentRequest CreatePaymentRequest(OrderInfo orderInfo)
        {
            var paymentProvider = PaymentProvider.GetPaymentProvider(orderInfo.PaymentInfo.Id, orderInfo.StoreInfo.Alias);

            var liveUrl = "https://checkout.buckaroo.nl/nvp/";
            var testUrl = "https://testcheckout.buckaroo.nl/nvp/";

            var configLiveUrl = paymentProvider.GetSetting("Url");
            var configTestUrl = paymentProvider.GetSetting("testUrl");

            var lowercaseUrls = paymentProvider.GetSetting("LowercaseUrls");
            var trailingSlash = paymentProvider.GetSetting("AddTrailingSlash");

            var lowercase = false;
            var addslash  = false;

            if (!string.IsNullOrEmpty(lowercaseUrls))
            {
                if (lowercaseUrls == "true" || lowercaseUrls == "1" || lowercaseUrls == "on")
                {
                    lowercase = true;
                }
            }

            if (!string.IsNullOrEmpty(trailingSlash))
            {
                if (trailingSlash == "true" || trailingSlash == "1" || trailingSlash == "on")
                {
                    addslash = true;
                }
            }

            if (!string.IsNullOrEmpty(configLiveUrl))
            {
                liveUrl = configLiveUrl;
            }
            if (!string.IsNullOrEmpty(configTestUrl))
            {
                testUrl = configTestUrl;
            }

            var url = paymentProvider.TestMode ? testUrl : liveUrl;


            var providerSettingsXML = paymentProvider.GetSettingsXML();

            var service = orderInfo.PaymentInfo.MethodId;

            string issuer = null;

            var issuerElement = providerSettingsXML.Descendants().FirstOrDefault(x => x.Value.ToLowerInvariant() == orderInfo.PaymentInfo.MethodId.ToLowerInvariant());

            if (issuerElement != null)
            {
                issuer = issuerElement.Value;

                if (issuerElement.Name.LocalName.ToLowerInvariant() != "issuer")
                {
                    var firstOrDefault = issuerElement.AncestorsAndSelf("Service").FirstOrDefault();
                    if (firstOrDefault != null)
                    {
                        service = firstOrDefault.Attribute("name").Value;
                    }
                }
            }

            var reportUrl = paymentProvider.ReportUrl();

            if (lowercase)
            {
                reportUrl = reportUrl.ToLowerInvariant();
            }

            if (!reportUrl.EndsWith("/") && addslash)
            {
                reportUrl = reportUrl + "/";
            }

            BuckarooRequestParameters requestParams = new BuckarooRequestParameters(paymentProvider.GetSetting("SecretKey"));

            requestParams.Amount          = orderInfo.ChargedAmountInCents / 100m;
            requestParams.Culture         = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
            requestParams.Currency        = orderInfo.StoreInfo.Store.CurrencyCultureSymbol;
            requestParams.InvoiceNumber   = orderInfo.OrderNumber;
            requestParams.PaymentMethod   = service;
            requestParams.ReturnUrl       = reportUrl;
            requestParams.ReturnCancelUrl = reportUrl;
            requestParams.ReturnErrorUrl  = reportUrl;
            requestParams.ReturnReject    = reportUrl;
            requestParams.WebsiteKey      = paymentProvider.GetSetting("Websitekey");

            var transactionId = orderInfo.UniqueOrderId.ToString();

            requestParams.TransactionId = transactionId;



            string IssuersServiceKeyName = null;
            string IssuerServiceKeyValue = null;
            string IssuerActionKeyName   = null;
            string IssuerActionKeyValue  = null;

            if (!string.IsNullOrEmpty(issuer))
            {
                IssuersServiceKeyName = string.Format("brq_service_{0}_issuer", service);
                IssuerServiceKeyValue = issuer;
                IssuerActionKeyName   = string.Format("brq_service_{0}_action", service);
                IssuerActionKeyValue  = "Pay";

                requestParams.AddCustomParameter(IssuersServiceKeyName, IssuerServiceKeyValue);
                requestParams.AddCustomParameter(IssuerActionKeyName, IssuerActionKeyValue);
            }

            if (service.Equals("transfer"))
            {
                requestParams.AddCustomParameter("brq_service_transfer_customeremail", orderInfo.CustomerEmail);
                requestParams.AddCustomParameter("brq_service_transfer_customerfirstname", orderInfo.CustomerFirstName);
                requestParams.AddCustomParameter("brq_service_transfer_customerlastname", orderInfo.CustomerLastName);
            }

            if (service.Equals("onlinegiro"))
            {
                requestParams.AddCustomParameter("brq_service_onlinegiro_customergender", "9");
                requestParams.AddCustomParameter("brq_service_onlinegiro_customeremail", orderInfo.CustomerEmail);
                requestParams.AddCustomParameter("brq_service_onlinegiro_customerfirstname", orderInfo.CustomerFirstName);
                requestParams.AddCustomParameter("brq_service_onlinegiro_customerlastname", orderInfo.CustomerLastName);
            }

            requestParams.Sign();


            var request = new PaymentRequest();

            //request.Parameters.Add("add_transactionReference", Add_transactionReference);
            //request.Parameters.Add("brq_amount", Brq_amount);
            //request.Parameters.Add("brq_currency", Brq_currency);
            //request.Parameters.Add("brq_invoicenumber", Brq_invoicenumber);
            //request.Parameters.Add("brq_payment_method", Brq_payment_method);
            //request.Parameters.Add("brq_return", Brq_return);
            //request.Parameters.Add("brq_returncancel", Brq_returncancel);
            //request.Parameters.Add("brq_returnerror", Brq_returnerror);
            //request.Parameters.Add("brq_returnreject", Brq_returnreject);


            //if (!string.IsNullOrEmpty(issuer))
            //{
            //    request.Parameters.Add(IssuerActionKeyName, IssuerActionKeyValue);

            //    request.Parameters.Add(IssuersServiceKeyName, IssuerServiceKeyValue);

            //}


            //request.Parameters.Add("brq_websitekey", Brq_websitekey);
            //request.Parameters.Add("brq_signature", Brq_signature);
            request.Parameters = requestParams.GetParameters();


            var uri         = new Uri(url);
            var webrequest  = WebRequest.Create(uri);
            var encoding    = new UTF8Encoding();
            var requestData = encoding.GetBytes(request.ParametersAsString);

            webrequest.ContentType = "application/x-www-form-urlencoded";

            webrequest.Method        = "POST";
            webrequest.ContentLength = requestData.Length;

            using (var stream = webrequest.GetRequestStream())
            {
                stream.Write(requestData, 0, requestData.Length);
            }

            using (var response = webrequest.GetResponse())
            {
                var stream = response.GetResponseStream();
                if (stream == null)
                {
                    throw new Exception("No response from POST request to " + url);
                }
                using (var reader = new StreamReader(stream, Encoding.ASCII))
                {
                    var value = reader.ReadToEnd();

                    var result = HttpUtility.ParseQueryString(value);

                    orderInfo.PaymentInfo.Url = result["brq_redirecturl"];

                    if (service == "onlinegiro" || service == "transfer")
                    {
                        orderInfo.PaymentInfo.Url = reportUrl + "?" + value;
                    }
                }
            }

            PaymentProviderHelper.SetTransactionId(orderInfo, transactionId);

            return(request);
        }