Beispiel #1
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         OrderNo = HotelCloud.Common.HCRequest.GetString("OrderNo").ToUpper().Trim();
         if (!string.IsNullOrEmpty(OrderNo))
         {
             if (OrderNo.Contains("C"))
             {
                 var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 * from WeiXin..RechargeUser where OrderNo=@OrderNo", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                     { "OrderNo", new HotelCloud.SqlServer.DBParam {
                           ParamValue = OrderNo
                       } }
                 });
                 if (dt.Rows.Count > 0)
                 {
                     foreach (System.Data.DataRow dr in dt.Rows)
                     {
                         int OrderAmount = Convert.ToInt32(Convert.ToDecimal(dr["SPrice"].ToString()) * 1);
                         OrderRoom = "充值扣款";
                         total_fee = OrderAmount.ToString();
                     }
                 }
             }
             else if (OrderNo.Contains("K"))
             {
                 var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 * from WeiXin..MemberCardBuyRecord where OrderNo=@OrderNo", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                     { "OrderNo", new HotelCloud.SqlServer.DBParam {
                           ParamValue = OrderNo
                       } }
                 });
                 if (dt.Rows.Count > 0)
                 {
                     foreach (System.Data.DataRow dr in dt.Rows)
                     {
                         int OrderAmount = Convert.ToInt32(Convert.ToDecimal(dr["BuyMoney"].ToString()) * 1);
                         OrderRoom = "会员卡购买";
                         total_fee = OrderAmount.ToString();
                     }
                 }
             }
             else if (OrderNo.Contains("D"))
             {
                 var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 *  from WeiXin..SupermarketOrder_Levi where OrderId=@OrderId", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                     { "OrderId", new HotelCloud.SqlServer.DBParam {
                           ParamValue = OrderNo.Trim()
                       } }
                 });
                 if (dt.Rows.Count > 0)
                 {
                     foreach (System.Data.DataRow dr in dt.Rows)
                     {
                         int OrderAmount = Convert.ToInt32(Convert.ToDecimal(dr["Money"].ToString()) * 1);
                         OrderRoom = "酒店周边超市消费";
                         total_fee = OrderAmount.ToString();
                     }
                 }
             }
             else if (OrderNo.Contains("P"))
             {
                 var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 * from WeiXin..SaleProducts_Orders where OrderNo=@OrderNo", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                     { "OrderNo", new HotelCloud.SqlServer.DBParam {
                           ParamValue = OrderNo
                       } }
                 });
                 if (dt.Rows.Count > 0)
                 {
                     foreach (System.Data.DataRow dr in dt.Rows)
                     {
                         int OrderAmount = Convert.ToInt32(Convert.ToDecimal(dr["OrderMoney"].ToString()) * 1);
                         OrderRoom = dr["ProductName"].ToString().Trim() + "[" + dr["TcName"].ToString().Trim() + "]";
                         total_fee = OrderAmount.ToString();
                     }
                 }
             }
             else if (OrderNo.Contains("L"))
             {
                 var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 bagging,amount,youhuiamount,hotelid,userweixinid,hotelWeixinId,orderCode,(select sum(AliPayAmount) from  WeiXin..wkn_payrecords where OrderNO=orderCode and Channel='微信支付回调') as zhifu  from WeiXin..T_OrderInfo where orderCode=@orderCode", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                     { "orderCode", new HotelCloud.SqlServer.DBParam {
                           ParamValue = OrderNo.Trim()
                       } }
                 });
                 if (dt.Rows.Count > 0)
                 {
                     foreach (System.Data.DataRow dr in dt.Rows)
                     {
                         string bagging      = dr["bagging"].ToString();
                         string youhuiamount = dr["youhuiamount"].ToString();
                         if (string.IsNullOrEmpty(bagging))
                         {
                             bagging = "0";
                         }
                         if (string.IsNullOrEmpty(youhuiamount))
                         {
                             youhuiamount = "0";
                         }
                         int OrderAmount = Convert.ToInt32((Convert.ToDecimal(dr["amount"].ToString()) - Convert.ToDecimal(youhuiamount) + Convert.ToDecimal(bagging)) * 1);
                         OrderRoom = "酒店周边餐饮消费";
                         total_fee = OrderAmount.ToString();
                     }
                 }
             }
             else
             {
                 hotel3g.Repository.Order order = hotel3g.Repository.OrderRepository.GetOrderInfo(OrderNo.Trim());
                 OrderRoom = order.RoomName + "[" + order.RatePlanName + "]";
                 total_fee = order.OrderAmount.ToString();
                 url       = string.Format("http://hotel.weikeniu.com/Hotel/Index/{0}?key={1}@{2}", order.HotelID.ToString(), order.WeiXinID.ToString(), order.UserWeiXinID.ToString());
             }
         }
         if (HotelCloud.Common.HCRequest.GetString("action") == "code")
         {
             WxPayAPI.NativePay np = new WxPayAPI.NativePay();
             /** ================得到长连接========= */
             string             long_url = np.GetPrePayUrl(HotelCloud.Common.HCRequest.GetString("OrderNo"));
             WxPayAPI.WxPayData data     = new WxPayAPI.WxPayData();
             data.SetValue("long_url", long_url);
             /** ================减小二维码数据量,提升扫描速度和精确度========= */
             WxPayAPI.WxPayData Result = WxPayAPI.WxPayApi.ShortUrl(data, 6);
             if (Result != null)
             {
                 if (Result.GetValue("return_code").ToString() == "SUCCESS")
                 {
                     string ShortUrl = Result.GetValue("short_url").ToString();
                     WxPayAPI.Log.Debug("WxPayApi", "ShortUrl  : " + long_url);
                     Response.Write(CreateCode_Choose(ShortUrl, "Byte", "M", 8, 4));
                 }
             }
             Response.End();
         }
     }
 }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (!string.IsNullOrEmpty(HotelCloud.Common.HCRequest.GetString("p")))
                {
                    string appid     = HotelCloud.Common.HCRequest.GetString("p");
                    string orderid   = HotelCloud.Common.HCRequest.GetString("o");
                    bool   isProcess = false;
                    string edition   = "0";
                    if (appid == "wx9f84537c7ce94a29" && orderid.ToUpper().IndexOf("W") > -1 && orderid.ToUpper().IndexOf("WX") < 0)
                    {
                        hotel3g.Repository.Order order = hotel3g.Repository.OrderRepository.GetOrderInfo(orderid);
                        string isbank         = "0";
                        var    weixinstrtable = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 appkey,appid,mchid,isbank,weixintype,edition from  WeiXin..WeiXinNO where WeiXinID=@WeiXinID", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                            { "WeiXinID", new HotelCloud.SqlServer.DBParam {
                                  ParamValue = order.WeiXinID.Trim()
                              } }
                        });
                        if (weixinstrtable != null)
                        {
                            if (weixinstrtable.Rows.Count > 0)
                            {
                                foreach (System.Data.DataRow rd in weixinstrtable.Rows)
                                {
                                    isbank  = string.IsNullOrEmpty(rd["isbank"].ToString()) ? "0" : rd["isbank"].ToString();
                                    edition = rd["edition"].ToString();
                                }
                            }
                        }
                        if (isbank.Trim() == "1")
                        {
                            isProcess = true;

                            string result = "";//返回结果
                            string Amount = order.OrderAmount.ToString();
                            if (order.LinkTel == "13168334542")
                            {
                                Amount = "0.01";
                            }

                            /** ================ 报文体 业务数据 bizdata=urlencode(base64(业务数据 json 格式))120.76.245.98:8087/zhcallback.aspx========= */
                            Dictionary <string, string> sArray = new Dictionary <string, string>();
                            sArray.Add("OrderNo", order.OrderNo);
                            sArray.Add("Channel", "1203");
                            sArray.Add("ShopId", "338991587226816512");
                            sArray.Add("Subject", order.HotelName.Trim() + "[" + order.RoomName.Trim() + "]");
                            sArray.Add("Body", "客房销售");
                            sArray.Add("Amount", Amount);
                            sArray.Add("DiscountAmount", Amount);
                            sArray.Add("CallbackUrl", "http://124.172.223.139:8087/WeiXinZhiFu/zhcallback.aspx");
                            if (edition == "1")
                            {
                                sArray.Add("RedirectUrl", string.Format("http://hotel.weikeniu.com/UserA/OrderInfo/{0}?id={1}&key={3}@{2}&souce=zh", order.HotelID.ToString().Trim(), order.Id.ToString(), order.UserWeiXinID.Trim(), order.WeiXinID.Trim()));
                            }
                            else
                            {
                                sArray.Add("RedirectUrl", string.Format("http://hotel.weikeniu.com/User/OrderInfo/{0}?id={1}&key={3}@{2}&souce=zh", order.HotelID.ToString().Trim(), order.Id.ToString(), order.UserWeiXinID.Trim(), order.WeiXinID.Trim()));
                            }
                            string bizdata = System.Web.HttpUtility.UrlEncode(Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(sArray, Formatting.Indented))), Encoding.UTF8);

                            Log.Debug(this.GetType().ToString(), "订单号: " + order.OrderNo);

                            /** ================ 报文头========= */
                            Dictionary <string, string> inputPara = new Dictionary <string, string>();
                            inputPara.Add("channelNo", "B001");
                            inputPara.Add("optType", "FT_S_P104");
                            inputPara.Add("lang", "zh_CN");
                            inputPara.Add("timestamp", GenerateTimeStamp());
                            inputPara.Add("randStr", GenerateNonceStr());
                            inputPara.Add("publicKeyNo", "0000");
                            inputPara.Add("data", bizdata);
                            inputPara.Add("version", "1.0");

                            /** ================ 对原始报文排序、合并、SHA1处理========= */
                            string data2 = Sign(inputPara);
                            Log.Debug(this.GetType().ToString(), "SHA1处理result data : " + data2);

                            string sign = SignDataWithPfxFilePath(data2, "EAccount123", "c://临时使用.pfx");
                            Log.Debug(this.GetType().ToString(), "签名结果result data: " + sign);

                            /** ================ 放入请求数据结构体========= */
                            inputPara.Add("sign", sign);

                            /** ================ 在线post参数========= */
                            Log.Debug(this.GetType().ToString(), "在线post参数 data json: " + JsonConvert.SerializeObject(inputPara, Formatting.Indented));

                            System.GC.Collect();//垃圾回收,回收没有正常关闭的http连接
                            HttpWebRequest  request   = null;
                            HttpWebResponse response  = null;
                            Stream          reqStream = null;
                            string          url       = "";
                            try
                            {
                                ServicePointManager.DefaultConnectionLimit = 200;
                                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                                request         = (HttpWebRequest)WebRequest.Create("https://openapi.frontpay.cn/openapi.do");
                                request.Method  = "POST";
                                request.Timeout = 10000;

                                /** ================ 设置代理服务器========= */
                                //WebProxy proxy = new WebProxy();                          //定义一个网关对象
                                //proxy.Address = new Uri(WxPayConfig.PROXY_URL);              //网关服务器端口:端口
                                //request.Proxy = proxy;

                                request.ContentType = "application/json";
                                byte[] data = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(inputPara, Formatting.Indented));
                                request.ContentLength = data.Length;
                                reqStream             = request.GetRequestStream();
                                reqStream.Write(data, 0, data.Length);
                                reqStream.Close();
                                response = (HttpWebResponse)request.GetResponse();
                                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                                result = sr.ReadToEnd().Trim();
                                sr.Close();
                                if (!string.IsNullOrEmpty(result))
                                {
                                    /** ================ 返回成功模拟数据========= */
                                    Log.Info("HttpService", "支付请求result data:" + result);
                                    System.Collections.Hashtable r = (System.Collections.Hashtable)Newtonsoft.Json.JsonConvert.DeserializeObject(result, typeof(System.Collections.Hashtable));
                                    if (r["code"].ToString() == "10000")
                                    {
                                        /** ================  1.接收平台返回报文结构  ================ */
                                        var parameters = new Dictionary <string, string>();
                                        parameters.Add("code", r["code"].ToString());
                                        parameters.Add("message", r["message"].ToString());
                                        parameters.Add("randStr", r["randStr"].ToString());
                                        parameters.Add("data", r["data"].ToString());
                                        parameters.Add("timestamp", r["timestamp"].ToString());

                                        /** ================ 2.对原始报文排序、合并、SHA1处理================ */
                                        String datatoken = Sign(parameters);

                                        /** ================ 3.用渠道私钥签名================ */
                                        String signByPfx = r["sign"].ToString();

                                        /** ================ 4.验签 ================ */
                                        bool verifyResultByCer = VerifyWithCerFilePath(datatoken, signByPfx, "c://server.cer");
                                        Log.Debug(this.GetType().ToString(), "token验签名data: " + verifyResultByCer);

                                        if (verifyResultByCer)
                                        {
                                            byte[] bytes = Convert.FromBase64String(r["data"].ToString());
                                            /** ================Token 字符串64解码========= */
                                            System.Collections.Hashtable crt = (System.Collections.Hashtable)Newtonsoft.Json.JsonConvert.DeserializeObject(Encoding.UTF8.GetString(bytes), typeof(System.Collections.Hashtable));
                                            string signToken = getMD5(string.Format("token={0}&ProductName={1}", crt["token"].ToString(), order.HotelName.Trim() + "[" + order.RoomName.Trim() + "]"));
                                            url = string.Format("https://qr.frontpay.cn/sinochem/order/comfirmpay?token={0}&signToken={1}&ProductName={2}", crt["token"].ToString(), signToken, order.HotelName.Trim() + "[" + order.RoomName.Trim() + "]");
                                        }
                                    }
                                }
                            }
                            catch (System.Threading.ThreadAbortException ex) { Log.Error("HttpService", "Thread - caught ThreadAbortException - resetting."); Log.Error("Exception message: {0}", ex.Message); System.Threading.Thread.ResetAbort(); }
                            catch (WebException ex) { Log.Error("HttpService", ex.ToString()); if (ex.Status == WebExceptionStatus.ProtocolError)
                                                      {
                                                          Log.Error("HttpService", "StatusCode : " + ((HttpWebResponse)ex.Response).StatusCode); Log.Error("HttpService", "StatusDescription : " + ((HttpWebResponse)ex.Response).StatusDescription);
                                                      }
                            }
                            catch (Exception ex) { Log.Error("HttpService", ex.ToString()); }
                            finally
                            {
                                if (response != null)
                                {
                                    response.Close();
                                }
                                if (request != null)
                                {
                                    request.Abort();
                                }
                                if (!string.IsNullOrEmpty(url))
                                {
                                    Response.Redirect(url, false);
                                }
                            }
                        }
                    }
                    if (!isProcess)
                    {
                        string weixinUrl = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={1}&redirect_uri=http%3a%2f%2fhotel.weikeniu.com%2fWeiXinZhiFu%2fwxOAuthRedirect.aspx&response_type=code&scope=snsapi_base&state={0}#wechat_redirect", orderid.Trim(), appid.Trim());
                        Response.Redirect(weixinUrl, false);
                    }
                }
            }
        }
Beispiel #3
0
        private WxPayData UnifiedOrder(string openId, string productId)
        {
            WxPayData req = new WxPayData();

            if (productId.Contains("C"))
            {
                var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 * from WeiXin..RechargeUser  where OrderNo=@OrderNo", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                    { "OrderNo", new HotelCloud.SqlServer.DBParam {
                          ParamValue = productId
                      } }
                });
                if (dt.Rows.Count > 0)
                {
                    foreach (System.Data.DataRow dr in dt.Rows)
                    {
                        int total_fee = Convert.ToInt32(Convert.ToDecimal(dr["SPrice"].ToString()) * 100);

                        /** ================Ashbur微信号对应支付金额 0.01元========= */
                        if (openId == "oPfrcjmqyO33T8a8Dn21Kq-QMAcg")
                        {
                            total_fee = 1;
                        }
                        if (openId == "oUM4bwdTr3DXhUkGf43lGiipmxMA")
                        {
                            total_fee = 1;
                        }
                        if (openId == "oZLQzv-cg1KvGmrTnq0xdxhK-4kc")
                        {
                            total_fee = 1;
                        }

                        if (string.IsNullOrEmpty(openId))
                        {
                            WxPayAPI.Log.Error(this.GetType().ToString(), "wxOAuthRedirect|This page have not get params, cannot be inited, exit...");
                        }
                        else
                        {
                            req.SetValue("body", "充值费用");
                            req.SetValue("attach", "presale");
                            req.SetValue("out_trade_no", dr["OrderNo"].ToString().Trim());
                            req.SetValue("total_fee", total_fee);
                            req.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
                            req.SetValue("time_expire", DateTime.Now.AddMinutes(30).ToString("yyyyMMddHHmmss"));
                            req.SetValue("goods_tag", "充值");
                            req.SetValue("trade_type", "NATIVE");
                            req.SetValue("openid", openId);
                            req.SetValue("product_id", dr["HotelId"].ToString().Trim());
                        }
                    }
                }
                else
                {
                    WxPayAPI.Log.Debug(this.GetType().ToString(), "无效订单或者非预订订单");
                }
            }
            else if (productId.Contains("K"))
            {
                var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 * from WeiXin..MemberCardBuyRecord  where OrderNo=@OrderNo", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                    { "OrderNo", new HotelCloud.SqlServer.DBParam {
                          ParamValue = productId
                      } }
                });
                if (dt.Rows.Count > 0)
                {
                    foreach (System.Data.DataRow dr in dt.Rows)
                    {
                        int total_fee = Convert.ToInt32(Convert.ToDecimal(dr["BuyMoney"].ToString()) * 100);

                        /** ================Ashbur微信号对应支付金额 0.01元========= */
                        if (openId == "oPfrcjmqyO33T8a8Dn21Kq-QMAcg")
                        {
                            total_fee = 1;
                        }
                        if (openId == "oUM4bwdTr3DXhUkGf43lGiipmxMA")
                        {
                            total_fee = 1;
                        }
                        if (openId == "oZLQzv-cg1KvGmrTnq0xdxhK-4kc")
                        {
                            total_fee = 1;
                        }

                        if (string.IsNullOrEmpty(openId))
                        {
                            WxPayAPI.Log.Error(this.GetType().ToString(), "wxOAuthRedirect|This page have not get params, cannot be inited, exit...");
                        }
                        else
                        {
                            req.SetValue("body", "会员卡购买");
                            req.SetValue("attach", "presale");
                            req.SetValue("out_trade_no", dr["OrderNo"].ToString().Trim());
                            req.SetValue("total_fee", total_fee);
                            req.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
                            req.SetValue("time_expire", DateTime.Now.AddMinutes(30).ToString("yyyyMMddHHmmss"));
                            req.SetValue("goods_tag", "会员卡消费");
                            req.SetValue("trade_type", "NATIVE");
                            req.SetValue("openid", openId);
                            req.SetValue("product_id", dr["HotelId"].ToString().Trim());
                        }
                    }
                }
                else
                {
                    WxPayAPI.Log.Debug(this.GetType().ToString(), "无效订单或者非预订订单");
                }
            }
            else if (productId.IndexOf("D") > -1)
            {
                var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 * from WeiXin..SupermarketOrder_Levi where OrderId=@OrderId", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                    { "OrderId", new HotelCloud.SqlServer.DBParam {
                          ParamValue = productId
                      } }
                });
                if (dt.Rows.Count > 0)
                {
                    foreach (System.Data.DataRow dr in dt.Rows)
                    {
                        int total_fee = Convert.ToInt32(Convert.ToDecimal(dr["Money"].ToString()) * 100);

                        /** ================Ashbur微信号对应支付金额 0.01元========= */
                        if (openId == "oPfrcjmqyO33T8a8Dn21Kq-QMAcg")
                        {
                            total_fee = 1;
                        }
                        if (openId == "oUM4bwdTr3DXhUkGf43lGiipmxMA")
                        {
                            total_fee = 1;
                        }
                        if (openId == "oZLQzv-cg1KvGmrTnq0xdxhK-4kc")
                        {
                            total_fee = 1;
                        }

                        if (string.IsNullOrEmpty(openId))
                        {
                            WxPayAPI.Log.Error(this.GetType().ToString(), "wxOAuthRedirect|This page have not get params, cannot be inited, exit...");
                        }
                        else
                        {
                            req.SetValue("body", "酒店周边超市消费");
                            req.SetValue("attach", "consumption");
                            req.SetValue("out_trade_no", dr["OrderId"].ToString().Trim());
                            req.SetValue("total_fee", total_fee);
                            req.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
                            req.SetValue("time_expire", DateTime.Now.AddMinutes(30).ToString("yyyyMMddHHmmss"));
                            req.SetValue("goods_tag", "酒店周边超市消费");
                            req.SetValue("trade_type", "NATIVE");
                            req.SetValue("openid", openId);
                            req.SetValue("product_id", dr["HotelId"].ToString().Trim());
                        }
                    }
                }
                else
                {
                    WxPayAPI.Log.Debug(this.GetType().ToString(), "无效订单或者非预订订单");
                }
            }
            else if (productId.Contains("P"))
            {
                var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 * from WeiXin..SaleProducts_Orders where OrderNo=@OrderNo", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                    { "OrderNo", new HotelCloud.SqlServer.DBParam {
                          ParamValue = productId
                      } }
                });
                if (dt.Rows.Count > 0)
                {
                    foreach (System.Data.DataRow dr in dt.Rows)
                    {
                        int total_fee = Convert.ToInt32(Convert.ToDecimal(dr["OrderMoney"].ToString()) * 100);

                        /** ================Ashbur微信号对应支付金额 0.01元========= */
                        if (openId == "oPfrcjmqyO33T8a8Dn21Kq-QMAcg")
                        {
                            total_fee = 1;
                        }
                        if (openId == "oUM4bwdTr3DXhUkGf43lGiipmxMA")
                        {
                            total_fee = 1;
                        }
                        if (openId == "oZLQzv-cg1KvGmrTnq0xdxhK-4kc")
                        {
                            total_fee = 1;
                        }

                        if (string.IsNullOrEmpty(openId))
                        {
                            WxPayAPI.Log.Error(this.GetType().ToString(), "wxOAuthRedirect|This page have not get params, cannot be inited, exit...");
                        }
                        else
                        {
                            req.SetValue("body", dr["ProductName"].ToString().Trim());
                            req.SetValue("attach", "presale");
                            req.SetValue("out_trade_no", dr["OrderNo"].ToString().Trim());
                            req.SetValue("total_fee", total_fee);
                            req.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
                            req.SetValue("time_expire", DateTime.Now.AddMinutes(30).ToString("yyyyMMddHHmmss"));
                            req.SetValue("goods_tag", dr["ProductName"].ToString().Trim() + "[" + dr["TcName"].ToString().Trim() + "]");
                            req.SetValue("trade_type", "NATIVE");
                            req.SetValue("openid", openId);
                            req.SetValue("product_id", dr["HotelId"].ToString().Trim());
                        }
                    }
                }
                else
                {
                    WxPayAPI.Log.Debug(this.GetType().ToString(), "无效订单或者非预订订单");
                }
            }
            else if (productId.Contains("L"))
            {
                var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 bagging,amount,youhuiamount,ISNULL(CouponMoney,0) as CouponMoney,hotelid,userweixinid,hotelWeixinId,orderCode,(select sum(AliPayAmount) from  WeiXin..wkn_payrecords where OrderNO=orderCode and Channel='微信支付回调') as zhifu  from WeiXin..T_OrderInfo where orderCode=@orderCode", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                    { "orderCode", new HotelCloud.SqlServer.DBParam {
                          ParamValue = productId
                      } }
                });
                if (dt.Rows.Count > 0)
                {
                    foreach (System.Data.DataRow dr in dt.Rows)
                    {
                        string bagging      = dr["bagging"].ToString();
                        string youhuiamount = dr["youhuiamount"].ToString();
                        if (string.IsNullOrEmpty(bagging))
                        {
                            bagging = "0";
                        }
                        if (string.IsNullOrEmpty(youhuiamount))
                        {
                            youhuiamount = "0";
                        }
                        int total_fee = Convert.ToInt32((Convert.ToDecimal(dr["amount"].ToString()) - Convert.ToDecimal(youhuiamount) + Convert.ToDecimal(bagging) - Convert.ToDecimal(dr["CouponMoney"].ToString())) * 100);

                        /** ================Ashbur微信号对应支付金额 0.01元========= */
                        if (openId == "oPfrcjmqyO33T8a8Dn21Kq-QMAcg")
                        {
                            total_fee = 1;
                        }
                        if (openId == "oUM4bwdTr3DXhUkGf43lGiipmxMA")
                        {
                            total_fee = 1;
                        }
                        if (openId == "oZLQzv-cg1KvGmrTnq0xdxhK-4kc")
                        {
                            total_fee = 1;
                        }

                        if (string.IsNullOrEmpty(openId))
                        {
                            WxPayAPI.Log.Error(this.GetType().ToString(), "wxOAuthRedirect|This page have not get params, cannot be inited, exit...");
                        }
                        else
                        {
                            req.SetValue("body", "酒店周边餐饮消费");
                            req.SetValue("attach", "consumption");
                            req.SetValue("out_trade_no", dr["orderCode"].ToString().Trim());
                            req.SetValue("total_fee", total_fee);
                            req.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
                            req.SetValue("time_expire", DateTime.Now.AddMinutes(30).ToString("yyyyMMddHHmmss"));
                            req.SetValue("goods_tag", "酒店周边餐饮消费");
                            req.SetValue("trade_type", "NATIVE");
                            req.SetValue("openid", openId);
                            req.SetValue("product_id", dr["hotelid"].ToString().Trim());
                        }
                    }
                }
                else
                {
                    WxPayAPI.Log.Debug(this.GetType().ToString(), "无效订单或者非预订订单");
                }
            }
            else
            {
                hotel3g.Repository.Order order = hotel3g.Repository.OrderRepository.GetOrderInfo(productId);
                if (order == null || order.PayType != "0")
                {
                    WxPayAPI.Log.Debug(this.GetType().ToString(), "无效订单或者非预订订单");
                }
                else
                {
                    int total_fee = order.OrderAmount * 100;//Convert.ToInt32(((int)Math.Ceiling(order.OrderAmount * (rate / 10))).ToString()) * 100;

                    /** ================Ashbur微信号对应支付金额 0.01元========= */
                    if (openId == "oPfrcjmqyO33T8a8Dn21Kq-QMAcg")
                    {
                        total_fee = 1;
                    }
                    if (openId == "oUM4bwdTr3DXhUkGf43lGiipmxMA")
                    {
                        total_fee = 1;
                    }
                    if (openId == "oZLQzv-cg1KvGmrTnq0xdxhK-4kc")
                    {
                        total_fee = 1;
                    }

                    if (string.IsNullOrEmpty(openId))
                    {
                        WxPayAPI.Log.Error(this.GetType().ToString(), "wxOAuthRedirect|This page have not get params, cannot be inited, exit...");
                    }
                    else
                    {
                        req.SetValue("body", order.HotelName.Trim());
                        req.SetValue("attach", "weikeniuwx");
                        req.SetValue("out_trade_no", order.OrderNo);
                        req.SetValue("total_fee", total_fee);
                        req.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
                        req.SetValue("time_expire", DateTime.Now.AddMinutes(30).ToString("yyyyMMddHHmmss"));
                        req.SetValue("goods_tag", order.RoomName + "[" + order.RatePlanName + "]");
                        req.SetValue("trade_type", "NATIVE");
                        req.SetValue("openid", openId);
                        req.SetValue("product_id", order.HotelID.ToString());
                    }
                }
            }
            WxPayData result = WxPayApi.UnifiedOrder(req);

            return(result);
        }