示例#1
0
        private PeruPaymentGateWayInvoker(string paymentMethod, decimal amount) : base("PeruPaymentGateway", paymentMethod, amount)
        {
            CreditPayment_V01 payment = HttpContext.Current.Session[PaymentGatewayInvoker.PaymentInformation] as CreditPayment_V01;

            if (null != payment)
            {
                string invokerType = string.Empty;
                switch (payment.Card.IssuerAssociation)
                {
                case IssuerAssociationType.Visa:
                {
                    invokerType = "MultiMerchantVisaNetPaymentGatewayInvoker";
                    HttpContext.Current.Session.Remove(PaymentGatewayInvoker.PaymentInformation);
                    break;
                }

                case IssuerAssociationType.MasterCard:
                {
                    invokerType = "PuntoWebPaymentGatewayInvoker";
                    break;
                }
                }
                object[] args = new object[] { paymentMethod, amount };
                Type     type = Type.GetType(string.Concat(RootNameSpace, invokerType), true, true);
                _theInvoker = Activator.CreateInstance(type, BindingFlags.NonPublic | BindingFlags.Instance, null, args, null) as PaymentGatewayInvoker;
            }
        }
        /// <summary>Creates a PaymentGateway Invoker for the appropriate agency</summary>
        /// <param name="paymentMethod"></param>
        /// <param name="amount"></param>
        /// <returns></returns>
        public static PaymentGatewayInvoker Create(string paymentMethod, decimal amount)
        {
            string locale = Thread.CurrentThread.CurrentCulture.Name;
            PaymentGatewayInvoker invoker = null;
            var config = HLConfigManager.Configurations.PaymentsConfiguration;

            try
            {
                if (config.HasPaymentGateway && !string.IsNullOrEmpty(config.PaymentGatewayInvoker))
                {
                    var    args        = new object[] { paymentMethod, amount };
                    string invokerType = config.PaymentGatewayInvoker;
                    var    type        = Type.GetType(string.Concat(RootNameSpace, invokerType), true, true);
                    invoker = Activator.CreateInstance(type, BindingFlags.NonPublic | BindingFlags.Instance, null, args, null) as PaymentGatewayInvoker;
                }
                else
                {
                    //LogBlindError(string.Empty, string.Format(ErrorMissingGateWayConfigInfo, locale, paymentMethod));
                    LoggerHelper.Error(string.Format(ErrorMissingGateWayConfigInfo, locale, paymentMethod));
                }
                invoker.GetOrderNumber();
                return(invoker);
            }
            catch (Exception ex)
            {
                //LogBlindError((null != invoker) ? invoker._gatewayName : config.PaymentGatewayInvoker.Replace("Invoker", string.Empty), ex.Message);
                LoggerHelper.Error(string.Format(ErrorFailedToInstantiateGatewayInvoker, config.PaymentGatewayInvoker, ex.Message));
                throw ex;
            }
        }
示例#3
0
        public override void Submit()
        {
            string redirectUrl = _configHelper.GetConfigEntry("paymentGatewayUrl");
            //  string returnUrl = string.Concat(RootUrl, _config.PaymentGatewayReturnUrlApproved, "?Agency=PagoSeguro");
            string merchantId  = _configHelper.GetConfigEntry("paymentGatewayMerchantId"); //MerchantId
            string orderNumber = this._orderNumber;


            string pagoSeguroRedirectUrl = string.Empty;

            pagoSeguroRedirectUrl = GenerateUrl(redirectUrl, merchantId, orderNumber);

            // Post and redirect to PagoSeguro website
            HttpContext.Current.Response.Clear();

            StringBuilder sb = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='frmSolicitudPago' action='{0}' method='post'>", pagoSeguroRedirectUrl);
            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");
            string response = sb.ToString();

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();
        }
        public string GetConfigEntry(string entryName, bool isRequired)
        {
            string entry = string.Empty;

            try
            {
                entry = _configEntries[entryName];
                if (string.IsNullOrEmpty(entry) && isRequired)
                {
                    throw new ApplicationException(string.Format(ErrorConfigEntryFoundButHadNoData, entryName));
                }
            }
            catch (Exception ex)
            {
                if (isRequired)
                {
                    string error = string.Format(ErrorMissingGateWayExternalConfigInfo, Thread.CurrentThread.CurrentCulture.Name, entryName, ex.Message);
                    PaymentGatewayInvoker.LogBlindError(error);
                    //LoggerHelper.Error(error, LoggingSource);
                    LoggerHelper.Error(error); //write to eventlog anyway.
                    throw;
                }
            }

            return(entry);
        }
示例#5
0
        private string GetResult()
        {
            string cert = string.Empty;

            cert = GetConfigEntry("paymentGatewayCertificate");
            var sortedDict          = new SortedDictionary <string, string>(StringComparer.Ordinal);
            NameValueCollection nvc = new NameValueCollection();

            foreach (string keyItem in PostedValues.AllKeys) // We need to change to post for testing in BETA
            {
                string value = PostedValues[keyItem];
                string key   = keyItem.ToString();

                if (key.Contains("vads_"))
                {
                    sortedDict.Add(key, value);
                }
            }

            string resultToCompare       = string.Empty;
            string signedResultToCompare = string.Empty;

            // retrieve values:
            foreach (KeyValuePair <string, string> kvp in sortedDict)
            {
                resultToCompare = resultToCompare + kvp.Value + "+";
            }

            resultToCompare = resultToCompare + cert;
            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Response, OrderNumber, string.Empty, "PF_OsbPaymentGateWay", PaymentGatewayRecordStatusType.Unknown, String.Format("Unsigned..{0}", resultToCompare));
            signedResultToCompare = GetSHA1(resultToCompare);
            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Response, OrderNumber, string.Empty, "PF_OsbPaymentGateWay", PaymentGatewayRecordStatusType.Unknown, String.Format("signed..{0}", signedResultToCompare));
            return(signedResultToCompare);
        }
        protected void SetOcaConfirmation(string xmlConfirmation)
        {
            XDocument xmlToSend         = XDocument.Parse(xmlConfirmation);
            XElement  xmlResponse       = xmlToSend.Element("presentacion");
            string    statusTransaction = xmlResponse.Element("Rsp").Value;
            string    codeTransaction   = xmlResponse.Element("Nrorsv").Value;
            string    extraInfo         = xmlResponse.Element("Info").Value;

            PaymentGatewayInvoker.LogMessage(
                PaymentGatewayLogEntryType.Response, this.OrderNumber, string.Empty, GatewayName,
                PaymentGatewayRecordStatusType.Unknown, String.Format("1 Deserialize response confirmation from the service= {0}   ", xmlToSend.ToString()));

            if (statusTransaction == "0")
            {
                IsApproved        = true;
                AuthorizationCode = codeTransaction;
                TransactionCode   = PostedValues[AgencyTransactionCode];
                CardType          = IssuerAssociationType.Oca;
            }
            else
            {
                IsApproved        = false;
                AuthorizationCode = "0";
                TransactionCode   = PostedValues[AgencyTransactionCode];
            }
        }
        public override void Submit()
        {
            string redirectUrl = _configHelper.GetConfigEntry("paymentGatewayUrl");
            string returnUrl   = string.Concat(RootUrl, _config.PaymentGatewayReturnUrlApproved);
            string storeId     = _configHelper.GetConfigEntry("paymentGatewayApplicationId");
            string orderNumber = this._orderNumber.Substring(2);
            string amount      = this._orderAmount.ToString().Replace(",", string.Empty);

            // Post and redirect to MultipMerchantVisaNet website
            HttpContext.Current.Response.Clear();

            StringBuilder sb = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='form' action='{0}' method='post'>", redirectUrl);
            sb.AppendFormat("<input type='hidden' name='CODTIENDA' value='{0}'>", storeId);
            sb.AppendFormat("<input type='hidden' name='NUMORDEN' value='{0}'>", orderNumber);
            sb.AppendFormat("<input type='hidden' name='MOUNT' value='{0}'>", amount);

            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");

            string response = sb.ToString();

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();
        }
        private ChilePaymentGateWayInvoker(string paymentMethod, decimal amount)
            : base("ChilePaymentGateway", paymentMethod, amount)
        {
            var payment =
                HttpContext.Current.Session[PaymentGatewayInvoker.PaymentInformation] as CreditPayment_V01;

            if (null != payment)
            {
                string invokerType = string.Empty;
                switch (payment.Card.IssuerAssociation)
                {
                case IssuerAssociationType.Visa:
                case IssuerAssociationType.MasterCard:
                case IssuerAssociationType.AmericanExpress:
                case IssuerAssociationType.GenericDebitCard:
                {
                    invokerType = "WebPayPaymentGatewayInvoker";
                    HttpContext.Current.Session.Remove(PaymentGatewayInvoker.PaymentInformation);
                    break;
                }

                case IssuerAssociationType.PaymentGateway:
                {
                    invokerType = "CL_ServiPagPaymentGatewayInvoker";
                    break;
                }
                }
                var args = new object[] { paymentMethod, amount };
                var type = Type.GetType(string.Concat(RootNameSpace, invokerType), true, true);
                this._theInvoker =
                    Activator.CreateInstance(type, BindingFlags.NonPublic | BindingFlags.Instance, null, args, null) as
                    PaymentGatewayInvoker;
            }
        }
        private void generateDataCSVFile(string[] datos)
        {
            if (null != datos)
            {
                var sb = new StringBuilder();
                //fecha
                sb.Append(DateTime.Now.ToString("yyyyMMdd"));
                sb.Append(",");
                //hora
                sb.Append(DateTime.Now.ToLongTimeString());
                sb.Append(",");
                //referencia
                sb.Append(datos[10]);
                sb.Append(",");
                //ttar
                sb.Append(datos[4]);
                sb.Append(",");
                //subtotal
                sb.Append(datos[5]);
                sb.Append(",");
                //iva
                sb.Append(datos[6]);
                sb.Append(",");
                //ice
                sb.Append(datos[7]);
                sb.Append(",");
                //intereses
                sb.Append(datos[8]);
                sb.Append(",");
                //total
                sb.Append(datos[9]);
                sb.Append(",");
                //autorizacion
                sb.Append(datos[1]);
                sb.Append(",");
                //RUC
                sb.Append("RUC");
                sb.Append(",");
                //TipoDEcredito
                sb.Append(datos[2]);
                sb.Append(",");
                //Meses
                sb.Append(datos[3]);
                sb.Append(",");
                //Estado P o R
                sb.Append(datos[12].Substring(5));
                sb.Append(",");
                //status --vacio
                sb.Append(string.Empty);
                sb.Append(",");
                //informacion referencial

                string dataCSV = sb.ToString();
                PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Response, datos[10].Substring(4),
                                                 string.Empty, GatewayName, PaymentGatewayRecordStatusType.Unknown,
                                                 dataCSV);
            }
        }
示例#10
0
        public override void Submit()
        {
            //Dictionary<string, string> _configEntries = GetConfigEntries("HSBCPaymentGateway");
            string SECURE_SECRET  = _configHelper.GetConfigEntry("PaymentGatewayEncryptionKey");
            string gatewayUrl     = _config.PaymentGatewayUrl;
            string vpc_Merchant   = _configHelper.GetConfigEntry("MerchantAccountName");
            string vpc_AccessCode = _configHelper.GetConfigEntry("PaymentGatewayPassword");
            string vpc_ReturnURL  = string.Concat(RootUrl, _config.PaymentGatewayReturnUrlApproved);
            string vpc_Command    = "pay";
            string vpc_Locale     = "en";
            string vpc_Version    = "1";

            string vpc_Amount      = (_configHelper.GetConfigEntry("RoundTotals", false) == "true") ? (Convert.ToInt32(_orderAmount) * 100).ToString() : Convert.ToInt32((_orderAmount * 100)).ToString();
            string vpc_MerchTxnRef = "HSBC";
            string vpc_OrderInfo   = _orderNumber;

            // Generate secure hash
            // Notice the variables of vpc_ must follow this particular order, as well as the Form hidden variables below
            string md5HashData = SECURE_SECRET + vpc_AccessCode + vpc_Amount + vpc_Command + vpc_Locale + vpc_MerchTxnRef + vpc_Merchant
                                 + vpc_OrderInfo + vpc_ReturnURL + vpc_Version;

            MD5 md5Hasher = MD5.Create();

            byte[]        secureHashByte   = md5Hasher.ComputeHash(Encoding.Default.GetBytes(md5HashData));
            StringBuilder secureHashString = new StringBuilder();

            for (int i = 0; i < secureHashByte.Length; i++)
            {
                secureHashString.Append(secureHashByte[i].ToString("x2"));
            }
            string secrueHash = secureHashString.ToString().ToUpper();

            StringBuilder sb = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='form' action='{0}' method='post'>", gatewayUrl);
            sb.AppendFormat("<input type='hidden' name='vpc_AccessCode' value='{0}'>", vpc_AccessCode);
            sb.AppendFormat("<input type='hidden' name='vpc_Amount' value='{0}'>", vpc_Amount);
            sb.AppendFormat("<input type='hidden' name='vpc_Command' value='{0}'>", vpc_Command);
            sb.AppendFormat("<input type='hidden' name='vpc_Locale' value='{0}'>", vpc_Locale);
            sb.AppendFormat("<input type='hidden' name='vpc_MerchTxnRef' value='{0}'>", vpc_MerchTxnRef);
            sb.AppendFormat("<input type='hidden' name='vpc_Merchant' value='{0}'>", vpc_Merchant);
            sb.AppendFormat("<input type='hidden' name='vpc_OrderInfo' value='{0}'>", vpc_OrderInfo);
            sb.AppendFormat("<input type='hidden' name='vpc_ReturnURL' value='{0}'>", vpc_ReturnURL);
            sb.AppendFormat("<input type='hidden' name='vpc_Version' value='{0}'>", vpc_Version);
            sb.AppendFormat("<input type='hidden' name='vpc_SecureHash' value='{0}'>", secrueHash);
            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");

            string response = sb.ToString();

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();
        }
示例#11
0
 protected void LogJsonWarningSerialization(string paymentGateway, string jsondata)
 {
     PaymentGatewayInvoker.LogBlindError(
         paymentGateway,
         string.Format(
             "JsonWarningSerialization: Json Serialization fail  :\r\nPosted:{0}\r\nQueryString: {1}\r\nJson: {2}",
             this.GetFormData(),
             HttpContext.Current.Request.QueryString, jsondata));
 }
示例#12
0
 protected void LogJsonWarning(string paymentGateway)
 {
     PaymentGatewayInvoker.LogBlindError(
         paymentGateway,
         string.Format(
             "JsonWarning: Json Posted data are null :\r\nPosted:{0}\r\nQueryString: {1}",
             this.GetFormData(),
             HttpContext.Current.Request.QueryString));
 }
示例#13
0
        protected void LogResponseFromGateway(string gatewayName)
        {
            string webResponse = String.Join(";", (from string name in HttpContext.Current.Request.Params
                                                   let element = name where element != null
                                                                 let value = HttpContext.Current.Request.Params[element] where value != null
                                                                             select String.Concat(name, ":=", HttpUtility.UrlDecode(value))).ToArray());

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Response, OrderNumber, string.Empty, gatewayName, PaymentGatewayRecordStatusType.Unknown, webResponse);
        }
示例#14
0
        private void sendUrl()
        {
            string returnUrl;
            string returnUrlPrefix = "REDIRECT=";
            string buildreturnUrl  = string.Concat(RootUrl, GetConfigEntry("paymentGatewayReturnUrlApproved"));

            returnUrl = buildreturnUrl.Contains("https") ? buildreturnUrl : buildreturnUrl.Replace("http", "https");
            string returnUrlApproved = returnUrlPrefix + (string.Format("{0}?Agency=Bankart&OrderNumber={1}&Redirect=Yes", returnUrl, OrderNumber));

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Response, OrderNumber, string.Empty, "MK_TutunskaPaymentGateway", PaymentGatewayRecordStatusType.Unknown, String.Format("Url redirect..{0}", returnUrlApproved));
            this.SpecialResponse = returnUrlApproved;
        }
        public override void Submit()
        {
            string redirectUrl = _config.PaymentGatewayUrl;
            string mode        = _configHelper.GetConfigEntry("paymentGatewayMode") == "0" ? "Y" : "N"; // Y means test, N means live
            int    price       = Convert.ToInt32(_orderAmount * 100);
            string merchantId  = _configHelper.GetConfigEntry("merchantAccount");
            string language    = _config.PaymentGatewayStyle;         // "PL";
            string ip          = _config.PaymentGatewayApplicationId; // "63.192.82.30";

            MyHLShoppingCart myCart;
            SessionInfo      sessionInfoMyCart = SessionInfo.GetSessionInfo(this._distributorId, this._locale);

            myCart = sessionInfoMyCart.ShoppingCart
                     ?? ShoppingCartProvider.GetShoppingCart(this._distributorId, this._locale);
            var    address = myCart.DeliveryInfo.Address.Address;
            string email   = (null != myCart && !string.IsNullOrEmpty(myCart.EmailAddress)) ? myCart.EmailAddress.ToString() : string.Empty;

            HttpContext.Current.Response.Clear();
            StringBuilder sb = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='form' action='{0}' method='post'>", redirectUrl);
            sb.AppendFormat("<input type='hidden' name='pos_id' value='{0}'>", merchantId);
            sb.AppendFormat("<input type='hidden' name='order_id' value='{0}'>", this.OrderNumber);
            sb.AppendFormat("<input type='hidden' name='amount' value='{0}'>", price);
            sb.AppendFormat("<input type='hidden' name='test' value='{0}'>", mode);
            sb.AppendFormat("<input type='hidden' name='language' value='{0}'>", language);
            sb.AppendFormat("<input type='hidden' name='client_ip' value='{0}'>", ip);
            sb.AppendFormat("<input type='hidden' name='street' value='{0}'>", address.Line1);
            sb.AppendFormat("<input type='hidden' name='street_n1' value='{0}'>", address.Line2 ?? string.Empty);
            sb.AppendFormat("<input type='hidden' name='street_n2' value='{0}'>", address.Line3 ?? string.Empty);
            sb.AppendFormat("<input type='hidden' name='phone' value='{0}'>", "");
            sb.AppendFormat("<input type='hidden' name='city' value='{0}'>", address.City);
            sb.AppendFormat("<input type='hidden' name='postcode' value='{0}'>", address.PostalCode);
            sb.AppendFormat("<input type='hidden' name='country' value='{0}'>", address.Country);
            sb.AppendFormat("<input type='hidden' name='email' value='{0}'>", email);
            // sb.AppendFormat("<input type='submit' value='Pay'>");
            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");

            string response = sb.ToString();

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();
        }
        public override void Submit()
        {
            // string redirectUrl = string.Concat(GetConfigEntry("paymentGatewayUrl"), "?process_id=");
            string redirectUrl          = _configHelper.GetConfigEntry("paymentGatewayUrl");
            string redirectUrlProcessId = _configHelper.GetConfigEntry("paymentGatewayProcessIdUrl");
            string returnUrlApproved    = string.Concat(RootUrl, _configHelper.GetConfigEntry("paymentGatewayReturnUrlApproved"));
            string approvedUrl          = string.Format("{0}?Agency=Bancard&OrderId={1}&rsp=rsprdtc", returnUrlApproved, this.OrderNumber);
            string returnUrlDeclined    = string.Concat(RootUrl, _configHelper.GetConfigEntry("paymentGatewayReturnUrlCanceled"));
            string declinedUrl          = string.Format("{0}?Agency=Bancard&OrderId={1}", returnUrlDeclined, this.OrderNumber);
            string publicKey            = _configHelper.GetConfigEntry("public_key");
            string privateKey           = _configHelper.GetConfigEntry("private_Key");
            string dataProcessId        = string.Empty;
            string processId            = string.Empty;
            string token = string.Empty;

            NumberFormatInfo nfi = new NumberFormatInfo();

            nfi.NumberDecimalSeparator = ".";
            nfi.NumberGroupSeparator   = "";
            string amount = this._orderAmount.ToString("0.00", nfi);

            token = GenetateMD5(privateKey, OrderNumber.Remove(0, 2).TrimStart('0'), amount);

            dataProcessId = PrepareProcessIdData(publicKey, token, OrderNumber.Remove(0, 2).TrimStart('0'), amount, approvedUrl, declinedUrl);

            processId = getProcessId(dataProcessId);

            // Post and redirect to WebPay website
            HttpContext.Current.Response.Clear();

            StringBuilder sb = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='form' action='{0}' method='get'>", redirectUrl);
            sb.AppendFormat("<input type='hidden' name='process_id' value='{0}'>", processId);


            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");

            string response = sb.ToString();

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();
        }
示例#17
0
        private CN_99BillPaymentGatewayInvoker(string paymentMethod, decimal amount)
            : base("CN_99BillPaymentGateway", paymentMethod, amount)
        {
            var payment =
                HttpContext.Current.Session[PaymentInformation] as CreditPayment_V01;

            if (payment != null && payment.TransactionType == "QP")
            {
                string invokerType = "CN_99BillQuickPayInvoker";

                var args = new object[] { paymentMethod, amount };
                var type = Type.GetType(string.Concat(RootNameSpace, invokerType), true, true);
                this._theInvoker =
                    Activator.CreateInstance(type, BindingFlags.NonPublic | BindingFlags.Instance, null, args, null) as
                    PaymentGatewayInvoker;
            }
        }
示例#18
0
        public override void Submit()
        {
            string redirectUrl   = _config.PaymentGatewayUrl;
            string successfulUrl = string.Concat(RootUrl, _config.PaymentGatewayReturnUrlApproved, "?Agency=ChronoPay&Status=Approved");
            string failedUrl     = string.Concat(RootUrl, _config.PaymentGatewayReturnUrlDeclined, "?Agency=ChronoPay&Status=Declined");
            string callbackUrl   = string.Concat(RootUrl, _config.PaymentGatewayReturnUrlApproved);
            string productId     = _configHelper.GetConfigEntry("productId");
            string shareSec      = _config.PaymentGatewayEncryptionKey;
            string orderNumber   = _orderNumber.ToString();
            string price         = _orderAmount.ToString().Replace(",", ".");
            string language      = _config.PaymentGatewayStyle;
            string hash          = GenerateHash(productId, price, shareSec);

            ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);
            // Post and redirect to ChronoPay website
            HttpContext.Current.Response.Clear();

            StringBuilder sb = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='form' action='{0}' method='post'>", redirectUrl);
            sb.AppendFormat("<input type='hidden' name='product_id' value='{0}'>", productId);
            sb.AppendFormat("<input type='hidden' name='product_price' value='{0}'>", price);
            sb.AppendFormat("<input type='hidden' name='cs1' value='{0}'>", orderNumber);
            sb.AppendFormat("<input type='hidden' name='cs2' value='{0}'>", price);
            sb.AppendFormat("<input type='hidden' name='cs3' value='{0}'>", "ChronoPay");
            sb.AppendFormat("<input type='hidden' name='language' value='{0}'>", language);
            sb.AppendFormat("<input type='hidden' name='cb_type' value='{0}'>", "P");
            sb.AppendFormat("<input type='hidden' name='cb_url' value='{0}'>", callbackUrl);
            sb.AppendFormat("<input type='hidden' name='success_url' value='{0}'>", successfulUrl);
            sb.AppendFormat("<input type='hidden' name='decline_url' value='{0}'>", failedUrl);
            sb.AppendFormat("<input type='hidden' name='sign' value='{0}'>", hash);
            //sb.AppendFormat("<input type='submit' value='Pay via ChronoPay'/>");
            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");

            string response = sb.ToString();

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();
        }
        public override void Submit()
        {
            string redirectUrl       = string.Empty;
            string responseId        = string.Empty;
            string returnUrl         = string.Concat(RootUrl, _configHelper.GetConfigEntry("paymentGatewayReturnUrlApproved"));
            string returnUrlDeclined = string.Concat(RootUrl, _configHelper.GetConfigEntry("paymentGatewayReturnUrlApproved"));

            string paymentGatewayAlias;

            string orderNumber = this._orderNumber;
            string amount      = this._orderAmount.ToString().Replace(",", ".");

            paymentGatewayAlias = _configHelper.GetConfigEntry("paymentGatewayAlias");

            string redirectUrlList;

            redirectUrlList = GetRedirectUrl(returnUrl, returnUrlDeclined, paymentGatewayAlias, amount, orderNumber);

            responseId  = getIdFromAgencyResponse(redirectUrlList);
            redirectUrl = getUrlFromAgencyResponse(redirectUrlList);
            redirectUrl = redirectUrl + "&?PaymentID=" + responseId;

            // Post and redirect to Tutunska website
            HttpContext.Current.Response.Clear();

            var sb = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='form' action='{0}' method='post'>", redirectUrl);
            // sb.AppendFormat("<input type='hidden' name='PaymentID' value='{0}'>", responseId);

            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");
            HttpContext.Current.Session["declinedOrderNumberMK"] = OrderNumber;
            string response = sb.ToString();

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();
        }
示例#20
0
        public override void Submit()
        {
            string xmlrequest;

            try
            {
                string redirectUrl = _configHelper.GetConfigEntry("paymentGatewayUrl");
                string key         = _configHelper.GetConfigEntry("paymentGatewayEncryptionKey");
                string password    = _configHelper.GetConfigEntry("paymentGatewayPassword");
                string returnUrl   = string.Concat(RootUrl, _config.PaymentGatewayReturnUrlApproved);

                xmlrequest = GenerateXmlRequest(returnUrl, key, password);

                if (RootUrl.Contains("local") || RootUrl.Contains("qa") || RootUrl.Contains("uat"))
                {
                    System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
                }

                HttpContext.Current.Response.Clear();

                StringBuilder sb = new StringBuilder();
                sb.AppendFormat(@"<html><body onload='document.forms[""form""].submit()'>");
                sb.AppendFormat("<form name='form' action='{0}' method='post'>", redirectUrl);
                sb.AppendFormat("<input type='hidden' name='CHAVE' value='{0}' >", key);
                sb.AppendFormat("<input type='hidden' name='SENHA' value='{0}' >", password);
                sb.AppendFormat("<input type='hidden' name='ORDEM' value='{0}' >", HttpUtility.HtmlEncode(xmlrequest)); //HttpContext.Current.Server.HtmlEncode(xmlrequest));
                sb.AppendFormat("</form></body></html>");


                string response = sb.ToString();
                PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

                HttpContext.Current.Response.Write(response);


                HttpContext.Current.Response.End();
            }
            catch (Exception ex)
            {
                LoggerHelper.Error(string.Format("Itau Electronic Transfer Payment Gateway Invoker exception for: order number {0}, DS ID {1}, {2} ", this.OrderNumber, this._distributorId, ex.Message));
            }
        }
        public override void Submit()
        {
            string redirectUrl   = _config.PaymentGatewayUrl;
            string merchantId    = _config.MerchantAccountName;
            string applicationId = _config.PaymentGatewayApplicationId;
            string mode          = _configHelper.GetConfigEntry("PaymentGatewayMode"); // 0 means test, 1 means live
            string price         = _orderAmount.ToString();
            string currency      = _currency;
            string successfulUrl = _config.PaymentGatewayReturnUrlApproved;
            string failedUrl     = _config.PaymentGatewayReturnUrlDeclined;

            // Post and redirect to HSBC website
            HttpContext.Current.Response.Clear();

            StringBuilder sb = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='form' action='{0}' method='post'>", redirectUrl);
            sb.AppendFormat("<input type='hidden' name='Mode' value='{0}'>", mode);
            sb.AppendFormat("<input type='hidden' name='txtMerchantID' value='{0}'>", merchantId);
            sb.AppendFormat("<input type='hidden' name='txtApplicationID' value='{0}'>", applicationId);
            sb.AppendFormat("<input type='hidden' name='txtMerchantReference' value='{0}'>", this.OrderNumber);
            sb.AppendFormat("<input type='hidden' name='txtPrice' value='{0}'>", price);
            sb.AppendFormat("<input type='hidden' name='txtCurrencyCode' value='{0}'>", currency);
            sb.AppendFormat("<input type='hidden' name='txtRedirectSuccessfulURL' value='{0}{1}'>", RootUrl, successfulUrl);
            sb.AppendFormat("<input type='hidden' name='txtRedirectFailedURL' value='{0}{1}'>", RootUrl, failedUrl);
            sb.AppendFormat("<input type='hidden' name='txtOrderNumber' value='{0}'>", this.OrderNumber);
            sb.AppendFormat("<input type='hidden' name='Variable1' value='{0}'>", this.OrderNumber);
            sb.Append("<input type='hidden' name='Variable2' value='MyGate'>");
            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");

            string response = sb.ToString();

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();
        }
        /// <summary>
        /// Put the requisite data elements into the authorization request
        /// </summary>
        /// <param name="requestLineItem">The request line item.</param>
        /// <returns></returns>
        private string PrepareProcessIdData(string public_key, string token, string orderNumber, string amount, string urlapproved, string urldeclined)
        {
            StringBuilder json = new StringBuilder();

            json.Append("{ \"public_key\"");
            json.AppendFormat(":\"{0}\",", public_key);
            json.Append("\"operation\": { ");
            json.AppendFormat("\"token\": \"{0}\",", token);
            json.AppendFormat("\"shop_process_id\": \"{0}\",", orderNumber);
            json.AppendFormat("\"amount\": \"{0}\",", amount);
            json.Append("\"currency\": \"PYG\",");
            json.Append("\"additional_data\": \"\",");
            json.Append("\"description\": \"Herbalife Paraguay\",");
            json.AppendFormat("\"return_url\": \"{0}\",", urlapproved);
            json.AppendFormat("\"cancel_url\": \"{0}\"", urldeclined);
            json.Append("}}");


            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, json.ToString());
            return(json.ToString());
        }
        public override void Submit()
        {
            try
            {
                string redirectUrl = _configHelper.GetConfigEntry("paymentGatewayUrl");
                string id_Loja     = _configHelper.GetConfigEntry("paymentGatewayIdLoja");
                string paymentGatewayTransactionType = _configHelper.GetConfigEntry("paymentGatewayTransactionType");
                string paymentGatewayWebServiceBankSlipCallEnable = _configHelper.GetConfigEntry("paymentGatewayWebServiceBankSlipCallEnable");
                string returnUrlApproved = string.Concat(RootUrl, _configHelper.GetConfigEntry("paymentGatewayReturnUrlApproved"));
                string returnUrl         = string.Format("{0}?Agency=BankSlipBrasPag&Order={1}&Status=1", returnUrlApproved, OrderNumber);

                string dataToEncrypt = string.Empty;
                string dataEcnrypted = string.Empty;
                dataToEncrypt = BuildInfo(paymentGatewayTransactionType);
                PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, dataToEncrypt);
                dataEcnrypted = OrderProvider.SendBrasPagEncryptServiceRequest("1", id_Loja, dataToEncrypt);
                HttpContext.Current.Response.Clear();

                StringBuilder sb = new StringBuilder();
                sb.AppendFormat(@"<html><body onload='document.forms[""form""].submit()'>");
                sb.AppendFormat("<form name='form' action='{0}' method='post'>", redirectUrl);
                sb.AppendFormat("<input type='hidden' name='Id_Loja' value='{0}' >", id_Loja);
                sb.AppendFormat("<input type='hidden' name='crypt' value='{0}' >", dataEcnrypted);
                sb.AppendFormat("<input type='hidden' name='EXTRADYNAMICURL' value='{0}' >", returnUrl);
                sb.AppendFormat("</form></body></html>");


                string response = sb.ToString();
                PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);


                HttpContext.Current.Response.Write(response);
                HttpContext.Current.Response.End();
            }
            catch (Exception ex)
            {
                LoggerHelper.Error(string.Format("Bank Slip Payment Gateway Invoker exception for: order number {0}, DS ID {1} {2}", this.OrderNumber, this._distributorId, ex.Message));
            }
        }
        private UruguayPaymentGateWayInvoker(string paymentMethod, decimal amount)
            : base("UruguayPaymentGateWay", paymentMethod, amount)
        {
            var payment =
                HttpContext.Current.Session[PaymentInformation] as CreditPayment_V01;

            if (null != payment)
            {
                string invokerType = string.Empty;
                switch (payment.Card.IssuerAssociation)
                {
                case IssuerAssociationType.Visa:
                {
                    invokerType = "UY_VpaymentPaymentGateWayInvoker";
                    HttpContext.Current.Session.Remove(PaymentGatewayInvoker.PaymentInformation);
                    break;
                }

                case IssuerAssociationType.Oca:
                {
                    invokerType = "UY_OcaPaymentGateWayInvoker";
                    break;
                }

                default:
                {
                    invokerType = "UY_VpaymentPaymentGateWayInvoker";
                    HttpContext.Current.Session.Remove(PaymentGatewayInvoker.PaymentInformation);
                    break;
                }
                }
                var args = new object[] { paymentMethod, amount };
                var type = Type.GetType(string.Concat(RootNameSpace, invokerType), true, true);
                this._theInvoker =
                    Activator.CreateInstance(type, BindingFlags.NonPublic | BindingFlags.Instance, null, args, null) as
                    PaymentGatewayInvoker;
            }
        }
示例#25
0
        private BrazilPaymentGatewayInvoker(string paymentMethod, decimal amount)
            : base("BrazilPaymentGateway", paymentMethod, amount)
        {
            var payment = HttpContext.Current.Session[PaymentInformation] as WirePayment_V01;

            if (null != payment)
            {
                string invokerType = string.Empty;
                switch (payment.PaymentCode)
                {
                case "TB":
                {
                    invokerType = "BradescoElectronicTransferPaymentGatewayInvoker";
                    HttpContext.Current.Session.Remove(PaymentInformation);
                    break;
                }

                case "BB":
                {
                    invokerType = "BancodoBrazilElectronicTransferPaymentGatewayInvoker";
                    HttpContext.Current.Session.Remove(PaymentInformation);
                    break;
                }

                case "ET":
                {
                    invokerType = "ItauBoldCronElectronicTransferPaymentGatewayInvoker";
                    HttpContext.Current.Session.Remove(PaymentInformation);
                    break;
                }

                case "BT":
                {
                    if (HLConfigManager.Configurations.PaymentsConfiguration.TurnOnBrasPagBankSlip)
                    {
                        invokerType = "BankSlipBrasPagPaymentGatewayInvoker";
                        HttpContext.Current.Session.Remove(PaymentInformation);
                        break;
                    }

                    else
                    {
                        if (HLConfigManager.Configurations.PaymentsConfiguration.TurnOnTivitBankSlip)
                        {
                            invokerType = "BankSlipPaymentGatewayInvoker";
                            HttpContext.Current.Session.Remove(PaymentInformation);
                            break;
                        }
                        else
                        {
                            invokerType = "BankSlipBoldCronPaymentGatewayInvoker";
                            HttpContext.Current.Session.Remove(PaymentInformation);
                            break;
                        }
                    }
                }

                case "VE":
                {
                    invokerType = "PGHPaymentGatewayInvoker";
                    HttpContext.Current.Session.Remove(PaymentInformation);
                    break;
                }
                }

                var args = new object[] { paymentMethod, amount };
                var type = Type.GetType(string.Concat(RootNameSpace, invokerType), true, true);
                _theInvoker =
                    Activator.CreateInstance(type, BindingFlags.NonPublic | BindingFlags.Instance, null, args, null) as
                    PaymentGatewayInvoker;
            }
        }
        public override void Submit()
        {
            string redirectUrl  = _configHelper.GetConfigEntry("paymentGatewayUrl");
            string returnUrl    = string.Concat(RootUrl, _config.PaymentGatewayReturnUrlApproved);
            string terminal     = _configHelper.GetConfigEntry("paymentGatewayTerminal");
            string merchantId   = _config.PaymentGatewayApplicationId;
            string merchantName = _config.MerchantAccountName;
            string merchantUrl  = "https://ro.myherbalife.com";
            string currency     = "RON";

            string transactionType = "0"; // 0 for pre-auth, 21 for Sales Completion
            string encryptionKey   = _config.PaymentGatewayEncryptionKey;

            string gmt_offset = string.Empty;
            string country    = string.Empty;
            string email      = "*****@*****.**";
            string timeStamp  = System.DateTime.Now.ToUniversalTime().ToString("yyyyMMddHHmmss");
            string nonce      = GenerateNonce(32);

            string orderNum = _orderNumber.Substring(1, _orderNumber.Length - 1); // Romcard only takes numeric for order #
            string amount   = _orderAmount.ToString(".00").Replace(",", ".");

            // generate the mac and PSign
            string mac = string.Concat(amount.Length.ToString(), amount, currency.Length.ToString(), currency, orderNum.Length.ToString(), orderNum, orderNum.Length.ToString(), orderNum,
                                       merchantName.Length.ToString(), merchantName, merchantUrl.Length.ToString(), merchantUrl, merchantId.Length.ToString(), merchantId, terminal.Length.ToString(),
                                       terminal, email.Length.ToString(), email, transactionType.Length.ToString(), transactionType, "--", timeStamp.Length.ToString(), timeStamp,
                                       nonce.Length.ToString(), nonce, returnUrl.Length.ToString(), returnUrl);

            string pSign = Generate_PSign(encryptionKey, mac);

            // Post and redirect to Decidir website
            HttpContext.Current.Response.Clear();

            StringBuilder sb = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='form' action='{0}' method='post'>", redirectUrl);
            sb.AppendFormat("<input type='hidden' name='AMOUNT' value='{0}'>", amount);
            sb.AppendFormat("<input type='hidden' name='CURRENCY' value='{0}'>", currency);
            sb.AppendFormat("<input type='hidden' name='ORDER' value='{0}'>", orderNum);
            sb.AppendFormat("<input type='hidden' name='DESC' value='{0}'>", orderNum);
            sb.AppendFormat("<input type='hidden' name='MERCH_NAME' value='{0}'>", merchantName);
            sb.AppendFormat("<input type='hidden' name='MERCH_URL' value='{0}'>", merchantUrl);
            sb.AppendFormat("<input type='hidden' name='MERCHANT' value='{0}'>", merchantId);
            sb.AppendFormat("<input type='hidden' name='TERMINAL' value='{0}'>", terminal);
            sb.AppendFormat("<input type='hidden' name='EMAIL' value='{0}'>", email);
            sb.AppendFormat("<input type='hidden' name='TRTYPE' value='{0}'>", transactionType);
            sb.AppendFormat("<input type='hidden' name='COUNTRY' value='{0}'>", country);
            sb.AppendFormat("<input type='hidden' name='MERCH_GMT' value='{0}'>", gmt_offset);
            sb.AppendFormat("<input type='hidden' name='TIMESTAMP' value='{0}'>", timeStamp);
            sb.AppendFormat("<input type='hidden' name='NONCE' value='{0}'>", nonce);
            sb.AppendFormat("<input type='hidden' name='BACKREF' value='{0}'>", returnUrl);
            sb.AppendFormat("<input type='hidden' name='P_SIGN' value='{0}'>", pSign);
            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");


            string response = sb.ToString();

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();
        }
示例#27
0
 protected void LogSecurityWarning(string paymentGateway)
 {
     PaymentGatewayInvoker.LogBlindError(paymentGateway, string.Format("Securtity Warning: Posted data did not match querystring:\r\nPosted:{0}\r\nQueryString: {1}", GetFormData(), HttpContext.Current.Request.QueryString));
 }
 public static void LogBlindError(string paymentGatewayName, string errorMessage)
 {
     PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Error, string.Empty, string.Empty, paymentGatewayName, PaymentGatewayRecordStatusType.InError, errorMessage);
 }
        public override void Submit()
        {
            string redirectUrl     = _configHelper.GetConfigEntry("paymentGatewayUrl");
            string orderNum        = this.OrderNumber;
            string commercialCode  = _configHelper.GetConfigEntry("paymentGatewayApplicationId");
            string amount          = this._orderAmount.ToString().Replace(",", string.Empty);
            string currency        = this._currency;
            string transactionDate = System.DateTime.Today.ToString("yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
            string tradeTime       = System.DateTime.Now.ToString("HHMMss", System.Globalization.CultureInfo.InvariantCulture);
            string timeStamp       = System.DateTime.Now.ToString("yyyyMMddHHmmssffff");
            string countryCode     = this._country == "PE" ? "PER" : this._country;
            string clientCode      = "REG0001"; // Distributor ID ?
            string Key             = _configHelper.GetConfigEntry("paymentGatewayEncryptionKey");

            string[] data = new string[10];

            data[0] = commercialCode;
            data[1] = orderNum;
            data[2] = amount;
            data[3] = currency;
            data[4] = transactionDate;
            data[5] = tradeTime;
            data[6] = timeStamp;
            data[7] = clientCode;
            data[8] = countryCode;
            data[9] = Key;

            string dataToConvert = string.Join("", data);

            string signature = PuntoWebSignature.GenerateSignature(dataToConvert, Key);

            HttpContext.Current.Response.Clear();

            StringBuilder sb = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='form' action='{0}' method='post'>", redirectUrl);
            sb.AppendFormat("<input type='hidden' name='I1' value='{0}'>", commercialCode);
            sb.AppendFormat("<input type='hidden' name='I2' value='{0}'>", orderNum);
            sb.AppendFormat("<input type='hidden' name='I3' value='{0}'>", amount);
            sb.AppendFormat("<input type='hidden' name='I4' value='{0}'>", currency);
            sb.AppendFormat("<input type='hidden' name='I5' value='{0}'>", transactionDate);
            sb.AppendFormat("<input type='hidden' name='I6' value='{0}'>", tradeTime);
            sb.AppendFormat("<input type='hidden' name='I7' value='{0}'>", timeStamp);
            sb.AppendFormat("<input type='hidden' name='I8' value='{0}'>", clientCode);
            sb.AppendFormat("<input type='hidden' name='I9' value='{0}'>", countryCode);
            sb.AppendFormat("<input type='hidden' name='I10' value='{0}'>", HttpContext.Current.Server.UrlEncode(signature));


            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");

            string response = sb.ToString();

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();
        }
示例#30
0
        public override void Submit()
        {
            string           redirectUrl     = _configHelper.GetConfigEntry("paymentGatewayUrl");
            string           returnUrl       = string.Concat(RootUrl, _configHelper.GetConfigEntry("paymentGatewayReturnUrlApproved"), "?Agency=psepayment");
            string           confirmationUrl = string.Concat(RootUrl, _configHelper.GetConfigEntry("paymentGatewayReturnUrlApproved"), "?Agency=psepayment");
            string           userId          = _configHelper.GetConfigEntry("paymentGatewayApplicationId");
            string           description     = "Herbalife";
            string           currency        = this._currency.ToString();
            string           isTest          = _configHelper.GetConfigEntry("PaymentGatewayMode") == "0" ? "1" : "0";
            MyHLShoppingCart myCart;

            SessionInfo SessionInfoMyCart = SessionInfo.GetSessionInfo(this._distributorId, this._locale);

            myCart = SessionInfoMyCart.ShoppingCart;
            if (myCart == null)
            {
                myCart = ShoppingCartProvider.GetShoppingCart(this._distributorId, this._locale);
            }


            string          email  = (null != myCart && !string.IsNullOrEmpty(myCart.EmailAddress)) ? myCart.EmailAddress.ToString() : string.Empty;
            OrderTotals_V01 totals = myCart.Totals as OrderTotals_V01;
            decimal         tax    = (null != myCart && null != totals) ? totals.TaxAmount : 0;

            string orderNumber = this.OrderNumber;
            string amount      = string.Format("{0:0.00}", this._orderAmount).Replace(",", ".");
            string refundbase  = string.Format("{0:0.00}", this._orderAmount - tax).Replace(",", ".");
            string taxString   = string.Format("{0:0.00}", tax).Replace(",", ".");
            string hash        = generateSignature(userId, amount, orderNumber, currency);

            // Post and redirect to Pagos Online website
            HttpContext.Current.Response.Clear();

            StringBuilder sb = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='form' action='{0}' method='post'>", redirectUrl);
            sb.AppendFormat("<input type='hidden' name='usuarioId' value='{0}'>", userId);
            sb.AppendFormat("<input type='hidden' name='refVenta' value='{0}'>", orderNumber);
            sb.AppendFormat("<input type='hidden' name='descripcion' value='{0}'>", description);
            sb.AppendFormat("<input type='hidden' name='valor' value='{0}'>", amount);
            sb.AppendFormat("<input type='hidden' name='iva' value='{0}'>", taxString);
            sb.AppendFormat("<input type='hidden' name='moneda' value='{0}'>", currency);
            sb.AppendFormat("<input type='hidden' name='baseDevolucionIva' value='{0}'>", refundbase);
            sb.AppendFormat("<input type='hidden' name='emailComprador' value='{0}'>", email);
            sb.AppendFormat("<input type='hidden' name='firma' value='{0}'>", hash);
            sb.AppendFormat("<input type='hidden' name='prueba' value='{0}'>", isTest);
            sb.AppendFormat("<input type='hidden' name='url_respuesta' value='{0}'>", returnUrl);
            sb.AppendFormat("<input type='hidden' name='url_confirmacion' value='{0}'>", confirmationUrl);

            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");

            string response = sb.ToString();

            PaymentGatewayInvoker.LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response);

            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();
        }