/// <summary>
        /// 微信支付回调方法
        /// 窦海超
        /// 2015年5月13日 15:03:45
        /// </summary>
        /// <returns></returns>
        public dynamic ReturnWxpay()
        {
            ResponseHandler resHandler = new ResponseHandler(System.Web.HttpContext.Current);

            try
            {
                string return_code  = resHandler.getParameter("return_code");
                string return_msg   = resHandler.getParameter("return_msg");
                string out_trade_no = resHandler.getParameter("out_trade_no");
                //微信支付订单号
                string transaction_id = resHandler.getParameter("transaction_id");
                string openid         = resHandler.getParameter("openid");
                if (string.IsNullOrEmpty(out_trade_no) || !out_trade_no.Contains("_"))
                {
                    LogHelper.LogWriter("订单号异常,微信单号为:" + transaction_id);
                    return(new { return_code = "FAIL" });
                }
                if (!string.IsNullOrEmpty(return_code) && return_code == "SUCCESS")
                {
                    int productId               = ParseHelper.ToInt(out_trade_no.Split('_')[0], 0);
                    int orderId                 = ParseHelper.ToInt(out_trade_no.Split('_')[1], 0);
                    int orderChildId            = ParseHelper.ToInt(out_trade_no.Split('_')[2], 0);
                    int payStyle                = ParseHelper.ToInt(out_trade_no.Split('_')[3], 0);
                    OrderChildFinishModel model = new OrderChildFinishModel()
                    {
                        orderChildId    = orderChildId,
                        orderId         = orderId,
                        payBy           = openid,
                        payStyle        = payStyle,
                        payType         = PayTypeEnum.WeiXin.GetHashCode(),
                        originalOrderNo = transaction_id
                    };
                    if (orderChildDao.FinishPayStatus(model))
                    {
                        //业务处理
                        return(new { return_code = "SUCCESS" });
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.LogWriter(ex, "微信支付回调异常");
            }
            return(new { return_code = "FAIL" });
        }
        /// <summary>
        /// 支付子订单完成
        /// 窦海超
        /// 2015年5月12日 15:36:34
        /// </summary>
        /// <param name="orderId">订单ID</param>
        /// <param name="orderChildId">子订单ID</param>
        /// <param name="payStyle">支付方式(1 用户支付 2 骑士代付)</param>
        /// <returns></returns>
        public bool FinishPayStatus(OrderChildFinishModel model)
        {
            //return ChangePayStatus(EnumOrderChildStatus.YiWanCheng.GetHashCode(), EnumOrderChildStatus.ZhiFuZhong.GetHashCode(), payStyle, orderId, orderChildId);
            string        sql  = @"
update OrderChild set PayStatus=@PayStatus,ThirdPayStatus=@PayStatus,PayStyle=@PayStyle,PayBy=@PayBy,PayTime=getdate(),
PayType=@PayType , OriginalOrderNo=@OriginalOrderNo
where OrderId=@OrderId and ChildId=@ChildId and ThirdPayStatus!=@PayStatus";
            IDbParameters parm = DbHelper.CreateDbParameters();

            parm.Add("PayStatus", DbType.Int32, 4).Value          = PayStatusEnum.HadPay.GetHashCode();//变为已完成
            parm.Add("PayStyle", DbType.Int32, 4).Value           = model.payStyle;
            parm.Add("PayBy", DbType.String, 100).Value           = model.payBy;
            parm.Add("PayType", DbType.Int32, 4).Value            = model.payType;
            parm.Add("OriginalOrderNo", DbType.String, 265).Value = model.originalOrderNo;
            parm.Add("OrderId", SqlDbType.Int, 4).Value           = model.orderId;
            parm.Add("ChildId", SqlDbType.Int, 4).Value           = model.orderChildId;
            return(ParseHelper.ToInt(DbHelper.ExecuteNonQuery(SuperMan_Write, sql, parm), 0) > 0 ? true : false);
        }
        /// <summary>
        /// 完成订单后发送jpush消息
        /// 窦海超
        /// 2015年5月13日 15:23:16
        /// </summary>
        /// <param name="model"></param>
        private static void FinishOrderPushMessage(OrderChildFinishModel model)
        {
            OrderChildPayModel orderChildPayModel = new OrderDao().GetOrderById(model.orderId);

            if (orderChildPayModel == null)
            {
                return;
            }

            Task.Factory.StartNew(() =>
            {
                JPushModel jpushModel = new JPushModel()
                {
                    Alert          = "订单支付完成!",
                    City           = string.Empty,
                    Content        = string.Concat(model.orderId, "_", model.orderChildId, "_", orderChildPayModel.PayStatus),
                    RegistrationId = orderChildPayModel.clienterId.ToString(),//通过订单ID获取要发送的骑士ID
                    TagId          = 0,
                    Title          = "订单提醒"
                };
                Ets.Service.Provider.MyPush.Push.PushMessage(jpushModel);
            });
        }
        /// <summary>
        /// 订单回调
        /// 窦海超
        /// 2015年5月12日 14:36:48
        /// </summary>
        /// <returns></returns>
        public dynamic Notify()
        {
            try
            {
                #region 参数绑定

                var              request     = System.Web.HttpContext.Current.Request;
                string           sign        = request["sign"];
                string           sign_type   = request["sign_type"];
                string           notify_data = request["notify_data"];
                AlipayNotifyData notify      = new AlipayNotifyData();
                if (!string.IsNullOrEmpty(notify_data))
                {
                    //如果是二维码支付
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(notify_data);
                    notify.buyer_email  = xmlDoc.SelectSingleNode("notify/buyer_email").InnerText;
                    notify.trade_status = xmlDoc.SelectSingleNode("notify/trade_status").InnerText;
                    notify.out_trade_no = xmlDoc.SelectSingleNode("notify/out_trade_no").InnerText;
                    notify.trade_no     = xmlDoc.SelectSingleNode("notify/trade_no").InnerText;
                }
                else
                {
                    //否则是骑士代付
                    notify.buyer_email  = request["buyer_email"];
                    notify.trade_status = request["trade_status"];
                    notify.out_trade_no = request["out_trade_no"];
                    notify.trade_no     = request["trade_no"];
                }
                #endregion
                //如果状态为空或状态不等于同步成功和异步成功就认为是错误
                if (string.IsNullOrEmpty(notify.trade_status))
                {
                    string fail = string.Concat("错误啦trade_status:", notify.trade_status, "。sign:", sign, "。notify_data:", notify_data);
                    LogHelper.LogWriter(fail);
                    return("fail");
                }
                #region 回调完成状态
                if (notify.trade_status == "TRADE_SUCCESS" || notify.trade_status == "TRADE_FINISHED")
                {
                    string orderNo = notify.out_trade_no;
                    if (string.IsNullOrEmpty(orderNo) || !orderNo.Contains("_"))
                    {
                        string fail = string.Concat("错误啦orderNo:", orderNo);
                        LogHelper.LogWriter(fail);
                        return("fail");
                    }
                    int productId    = ParseHelper.ToInt(orderNo.Split('_')[0]); //产品编号
                    int orderId      = ParseHelper.ToInt(orderNo.Split('_')[1]); //主订单号
                    int orderChildId = ParseHelper.ToInt(orderNo.Split('_')[2]); //子订单号
                    int payStyle     = ParseHelper.ToInt(orderNo.Split('_')[3]); //支付方式(1 用户支付 2 骑士代付)
                    if (orderId <= 0 || orderChildId <= 0)
                    {
                        string fail = string.Concat("错误啦orderId:", orderId, ",orderChildId:", orderChildId);
                        LogHelper.LogWriter(fail);
                        return("fail");
                    }

                    OrderChildFinishModel model = new OrderChildFinishModel()
                    {
                        orderChildId    = orderChildId,
                        orderId         = orderId,
                        payBy           = notify.buyer_email,
                        payStyle        = payStyle,
                        payType         = PayTypeEnum.ZhiFuBao.GetHashCode(),
                        originalOrderNo = notify.trade_no,
                    };

                    if (orderChildDao.FinishPayStatus(model))
                    {
                        //jpush
                        //Ets.Service.Provider.MyPush.Push.PushMessage(1, "订单提醒", "有订单被抢了!", "有超人抢了订单!", myorder.businessId.ToString(), string.Empty);
                        FinishOrderPushMessage(model);//完成后发送jpush消息
                        string success = string.Concat("成功,当前订单OrderId:", orderId, ",OrderChild:", orderChildId);
                        LogHelper.LogWriter(success);
                        return("success");
                    }
                }
                #endregion
            }
            catch (Exception ex)
            {
                LogHelper.LogWriter(ex, "Alipay自动返回异常");
                return("fail");
            }
            return("fail");
        }