Exemplo n.º 1
0
        public ActionResult Add(SceneryDomain model)
        {
            #region 判断景区名称是否存在
            var query = QueryCondition.Instance;
            query.AddEqual("Scenery", "SceneryName", model.SceneryName);
            query.AddEqual("Scenery", "RowState", "1");
            if (model.Id > 0)
            {
                query.AddNotEqual("Scenery", "Id", model.Id.ToString());
            }
            if (Smart.Instance.SceneryBizService.GetAllDomain(query).Count > 0)
            {
                LoadData();
                ViewBag.Error = string.Format("已经存在名称:{0},请重新填写", model.SceneryName);
                return(View(model));
            }
            #endregion

            #region 判断同程景区ID 是否存在
            query = QueryCondition.Instance;
            query.AddEqual("Scenery", "SceneryTCId", model.SceneryTCId.ToString());
            query.AddEqual("Scenery", "RowState", "1");
            if (model.Id > 0)
            {
                query.AddNotEqual("Scenery", "Id", model.Id.ToString());
            }
            if (Smart.Instance.SceneryBizService.GetAllDomain(query).Count > 0)
            {
                LoadData();
                ViewBag.Error = string.Format("已经存在同程景区ID:{0},请重新填写", model.SceneryTCId);
                return(View(model));
            }
            #endregion

            model.Updater    = CurrentUser.Name;
            model.UpdateTime = DateTime.Now;
            if (model.Id == 0)
            {
                model.CreateTime = DateTime.Now;
                model.Creater    = CurrentUser.Name;
                Smart.Instance.SceneryBizService.Add(model);
                ViewBag.Error = "1";
                return(RedirectToAction("Add", "Scenery", new { Error = 1 }));
            }
            ViewBag.Error = "1";
            var oldModel = Smart.Instance.SceneryBizService.GetAllDomain(QueryCondition.Instance.AddEqual("Scenery", "Id", model.Id.ToString()));
            if (Smart.Instance.AlipayDetailBizService.IsExistsSceneryAlipay(model.SceneryName) ||
                Smart.Instance.WeChatDetailBizService.IsExistsSceneryWeChat(model.SceneryName))
            {
                model.SceneryName = oldModel[0].SceneryName;
                model.SceneryTCId = oldModel[0].SceneryTCId;
            }

            if (Smart.Instance.SceneryBizService.Update(model))
            {
                LogHelper.AlipayLog(string.Format("景区\r\n 修改人:{0} \r\n 修改前:{1} \r\n 修改后:{2}",
                                                  CurrentUser.Name, JsonConvert.SerializeObject(oldModel), JsonConvert.SerializeObject(model)));
            }
            return(RedirectToAction("Index", "Scenery"));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 取消订单
        /// </summary>
        /// <param name="out_trade_no"></param>
        /// <returns></returns>
        public string CloseOrder(string out_trade_no, SceneryDomain sceneryDomain)
        {
            string return_code = "";

            try
            {
                LogHelper.WeChatLog(string.Format("wx:正在取消订单:{0}", out_trade_no));
                WxPayData data = new WxPayData();
                data.SetValue("out_trade_no", out_trade_no);                        //随机字符串
                WxPayData result = WxPayApi.CloseOrder(data, sceneryDomain.WeChat); //调用统一下单接口
                return_code = result.GetValue("return_code").ToString();            //获得统一下单接口返回的二维码链接
                LogHelper.WeChatLog(string.Format("wx:取消-结果:{0}-{1}", return_code, result.GetValue("return_msg")));
                //失败 或者 成功时但err_code =SYSTEMERROR 时, 系统异常,请重新调用该API
                if (result.GetValue("return_code").ToString() == "SUCCESS" &&
                    result.GetValue("result_code").ToString() == "SUCCESS")
                {
                    LogHelper.WeChatLog("wx:开启线程");
                    ParameterizedThreadStart ParStart = new ParameterizedThreadStart(CloselOrderRetry);
                    Thread        myThread            = new Thread(ParStart);
                    List <object> objs = new List <object>();
                    objs.Add(out_trade_no);
                    objs.Add(sceneryDomain);
                    myThread.Start(objs);
                }
            }
            catch (Exception ex)
            {
                LogHelper.WeChatLog(string.Format("wx:正在取消订单", ex.Message));
            }
            return(return_code);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 接收从微信支付后台发送过来的数据并验证签名
        /// </summary>
        /// <returns>微信支付后台返回的数据</returns>
        public WxPayData GetNotifyData(SceneryDomain sceneryDomain)
        {
            //接收从微信后台POST过来的数据
            System.IO.Stream s = Request.InputStream;
            int count          = 0;

            byte[]        buffer  = new byte[1024];
            StringBuilder builder = new StringBuilder();

            while ((count = s.Read(buffer, 0, 1024)) > 0)
            {
                builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
            }
            s.Flush();
            s.Close();
            s.Dispose();

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(builder.ToString());
            XmlNode     xmlNode = xmlDoc.FirstChild;//获取到根节点<xml>
            XmlNodeList nodes   = xmlNode.ChildNodes;

            foreach (XmlNode xn in nodes)
            {
                XmlElement xe = (XmlElement)xn;
                if (xe.Name == "appid")
                {
                    var appid = xe.InnerText;
                    LogHelper.WeChatLog("appid : " + appid);

                    if (WxPayConfigBizService.wxPayConfigList == null)
                    {
                        new WxPayConfigBizService().ReLoadWxPayList(appid);
                    }
                    sceneryDomain.WeChat = WxPayConfigBizService.wxPayConfigList.First(t => t.APPID == appid);
                    if (sceneryDomain.WeChat == null)
                    {
                        throw new WxPayException("没有找到微信账号!");
                    }
                    break;
                }
            }



            LogHelper.WeChatLog("Receive data from WeChat : " + builder.ToString());

            //转换数据格式并验证签名
            WxPayData data = new WxPayData();

            data.FromXml(builder.ToString(), sceneryDomain.WeChat.PAYKEY);
            LogHelper.WeChatLog("Check sign success");
            return(data);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 新增/修改
        /// </summary>
        /// <param name="Id"></param>
        /// <param name="Error"></param>
        /// <returns></returns>
        public ActionResult Add(int?Id, string Error)
        {
            ViewBag.Error = Error;
            var model = new SceneryDomain();

            if (Id.HasValue)
            {
                var query = QueryCondition.Instance.AddEqual("Scenery", "Id", Id.Value.ToString());
                model = Smart.Instance.SceneryBizService.GetAllDomain(query).FirstOrDefault();
            }
            AddOrUpdateBaseInfo(model);
            LoadData();
            return(View(model));
        }
Exemplo n.º 5
0
        /**
         * 生成直接支付url,支付url有效期为2小时,模式二
         * @param productId 商品ID
         * @return 模式二URL
         */
        public UnifiedorderResponse GetPayUrl(UnifiedorderRequest orderRequest, SceneryDomain sceneryDomain)
        {
            WeChatQRCodeDomain qrCode = new WeChatQRCodeDomain();

            qrCode.BatchNumber = orderRequest.out_trade_no;
            qrCode.SceneryName = sceneryDomain.SceneryName;
            qrCode.Creater     = orderRequest.attach;
            qrCode.Updater     = orderRequest.attach;
            qrCode.Phone       = orderRequest.Phone;

            UnifiedorderResponse response = new UnifiedorderResponse();
            string out_trade_no           = GenerateSerialIdService.Get(FixedPrefix.WeChat, CustomPrefix.A, sceneryDomain.SceneryTCId.ToString()).SerialId;

            orderRequest.out_trade_no = out_trade_no;
            WxPayData data = new WxPayData();

            data.SetValue("body", orderRequest.body);                                             //商品描述
            data.SetValue("out_trade_no", out_trade_no);                                          //随机字符串
            data.SetValue("total_fee", Convert.ToInt32(orderRequest.total_fee));                  //总金额
            //10分钟 时间间隔
            data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));                 //交易起始时间
            data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); //交易结束时间
            data.SetValue("trade_type", "NATIVE");                                                //交易类型
            data.SetValue("product_id", orderRequest.productId);                                  //商品ID
            data.SetValue("attach", orderRequest.attach);                                         //机器号


            string url = "";

            try
            {
                qrCode.Out_trade_no = orderRequest.out_trade_no;
                qrCode.RequestJson  = data.ToXml();
                WxPayData result = WxPayApi.UnifiedOrder(data, sceneryDomain.WeChat);//调用统一下单接口
                if (result.GetValue("return_code").ToString() == "SUCCESS")
                {
                    url = result.GetValue("code_url").ToString();//获得统一下单接口返回的二维码链接
                    LogHelper.WeChatLog(string.Format("请求成功,二维码地址:{0}", url));
                }
                else
                {
                    qrCode.Remark = result.GetValue("return_msg").ToString();
                    LogHelper.WeChatLog(string.Format("二维码地址请求失败:{0}", result.GetValue("return_msg")));
                }

                response.Out_trade_no = out_trade_no;
                response.QRCode       = url;

                qrCode.AppId  = sceneryDomain.WeChat.APPID;
                qrCode.QrCode = url;
            }
            catch (Exception ex)
            {
                qrCode.Remark = ex.Message;
                LogHelper.WeChatLog(string.Format("获取微信URL:请求失败,保存信息:{0}", ex.Message));
            }
            finally
            {
                try
                {
                    new WeChatQRCodeDao().Add(qrCode);
                }
                catch (Exception ex)
                {
                    LogHelper.WeChatLog(string.Format("获取微信URL:新增操作日志失败:{0}", ex.Message));
                }
            }
            return(response);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 查询订单支付状态
        /// </summary>
        /// <param name="request"></param>
        /// <param name="sceneryDomain"></param>
        /// <returns></returns>
        public QueryResponse OrderQuery(QueryRequest request, SceneryDomain sceneryDomain)
        {
            QueryResponse queryResponse = new QueryResponse();
            var           result        = false;

            try
            {
                WxPayData data = new WxPayData();
                data.SetValue("out_trade_no", request.Out_trade_no);                     //随机字符串
                LogHelper.WeChatLog("论寻-请求:out_trade_no:" + request.Out_trade_no);
                WxPayData queryResult = WxPayApi.OrderQuery(data, sceneryDomain.WeChat); //调用统一下单接口

                LogHelper.WeChatLog(string.Format("论寻-结果:return_code:{0},result_code:{1},trade_state:{2}",
                                                  queryResult.GetValue("return_code"), queryResult.GetValue("result_code"), queryResult.GetValue("trade_state")));

                if (queryResult.GetValue("return_code").ToString() == "SUCCESS" &&
                    queryResult.GetValue("result_code").ToString() == "SUCCESS" &&
                    queryResult.GetValue("trade_state").ToString() == "SUCCESS")
                {
                    var detailDao = new WeChatDetailDao();
                    var qrCodeDao = new WeChatQRCodeDao();
                    //支付成功 查询交易信息
                    WeChatDetailDomain detail = new WeChatDetailDomain();
                    detail.Out_trade_no = queryResult.GetValue("out_trade_no").ToString();
                    detail.Total_fee    = Convert.ToInt32(queryResult.GetValue("total_fee"));
                    //测试使用
                    //detail.Total_fee = 1;
                    //需要检查数据库中是否有改数据 有的话 直接返回
                    var QRCodeDetail = qrCodeDao.IsExistOut_trade_no(detail.Out_trade_no, detail.Total_fee, sceneryDomain.WeChat.APPID);

                    if (QRCodeDetail == null || QRCodeDetail.SceneryName == "-1")
                    {
                        LogHelper.WeChatLog("论寻:无通知参数");
                    }
                    //论寻:数据已经存在,不需要插入
                    if (QRCodeDetail.SceneryName != "-2")
                    {
                        //保存微信信息

                        detail.SceneryName = sceneryDomain.SceneryName;
                        detail.Creater     = sceneryDomain.WeChat.APPID;
                        detail.Updater     = "";
                        detail.AppId       = sceneryDomain.WeChat.APPID;
                        detail.BatchNumber = QRCodeDetail.BatchNumber;
                        detail.SceneryRate = sceneryDomain.Rate;
                        DateTime time_end = DateTime.ParseExact(queryResult.GetValue("time_end").ToString(), "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
                        detail.Time_end       = time_end;//20170727172015
                        detail.WeChatPlayDate = Convert.ToDateTime(detail.Time_end.ToString("yyyy-MM-dd"));

                        detail.Err_code             = "Success";
                        detail.Err_code_des         = "论寻";
                        detail.Openid               = queryResult.GetValue("openid").ToString();
                        detail.Trade_type           = queryResult.GetValue("trade_type").ToString();
                        detail.Bank_type            = queryResult.GetValue("bank_type").ToString();
                        detail.Settlement_total_fee = Convert.ToInt32(queryResult.GetValue("settlement_total_fee"));
                        detail.Transaction_id       = queryResult.GetValue("transaction_id").ToString();
                        detailDao.Add(detail);
                    }
                    else
                    {
                        if (queryResult.GetValue("transaction_id") != null)
                        {
                            detail.Transaction_id = queryResult.GetValue("transaction_id").ToString();
                        }
                        if (queryResult.GetValue("time_end") != null)
                        {
                            detail.Time_end = DateTime.ParseExact(queryResult.GetValue("time_end").ToString(), "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
                        }
                        LogHelper.WeChatLog("论寻:数据已经存在,不需要插入");
                    }
                    queryResponse.transaction_id = detail.Transaction_id;
                    queryResponse.time_end       = detail.Time_end;
                    result = true;
                }
            }
            catch (Exception ex)
            {
                LogHelper.WeChatLog(string.Format("微信 查询订单时 异常:{0}", ex.Message));
            }

            if (result == false && request.IsLastRequest == 1)
            {
                CloseOrder(request.Out_trade_no, sceneryDomain);
            }
            return(queryResponse);
        }
Exemplo n.º 7
0
        /// <summary>
        /// 预创建交易
        /// </summary>
        /// <param name="request"></param>
        /// <param name="sceneryDomain"></param>
        /// <returns></returns>
        public PrecreateResponse Precreate(PrecreateRequest request, SceneryDomain sceneryDomain)
        {
            AlipayQRCodeDomain qrCode = new AlipayQRCodeDomain();

            qrCode.BatchNumber = request.out_trade_no;
            qrCode.SceneryName = sceneryDomain.SceneryName;
            qrCode.Creater     = request.terminal_id;
            qrCode.Updater     = request.terminal_id;
            qrCode.Phone       = request.Phone;

            request.extend_params.sys_service_provid = sceneryDomain.Apipay.PID;
            PrecreateResponse responseAlipay = new PrecreateResponse();

            try
            {
                //创建淘宝支付信息
                client = new DefaultAopClient(serverUrl, sceneryDomain.Apipay.APP_ID, sceneryDomain.Apipay.APP_PRIVATE_KEY, "", version,
                                              sign_type, sceneryDomain.Apipay.ALIPAY_PUBLIC_KEY, charset);
                //生成商户订单号
                request.out_trade_no = GenerateSerialIdService.Get(FixedPrefix.Alipay, CustomPrefix.A, sceneryDomain.SceneryTCId.ToString()).SerialId;
                string content = JsonConvert.SerializeObject(request);
                qrCode.RequestJson = content;

                qrCode.Out_trade_no = request.out_trade_no;
                LogHelper.AlipayLog(string.Format("商户订单号:{0} 请求josn:{1}", request.out_trade_no, content));

                string QrCode = "";
                AlipayTradePrecreateResponse payResponse = Prepay(content);
                //payResponse.QrCode即二维码对于的链接
                //将链接用二维码工具生成二维码打印出来,顾客可以用支付宝钱包扫码支付。
                if (payResponse != null)
                {
                    string result = payResponse.Body;
                    if (payResponse.Code != ResultCode.SUCCESS)
                    {
                        qrCode.Remark = result;
                    }
                    else
                    {
                        qrCode.Remark = payResponse.Code;
                    }
                    switch (payResponse.Code)
                    {
                    case ResultCode.SUCCESS:
                        //预下单成功
                        QrCode        = payResponse.QrCode;
                        qrCode.QrCode = QrCode;
                        LogHelper.AlipayLog(string.Format("请求成功,二维码地址:{0}", QrCode));
                        break;

                    case ResultCode.FAIL:
                        StringBuilder sb2 = new StringBuilder();
                        sb2.Append("{\"out_trade_no\":\"" + request.out_trade_no + "\"}");
                        LogHelper.AlipayLog(string.Format("请求失败,保存信息:{0}", result));
                        Cancel(sb2.ToString());
                        break;
                    }
                }

                responseAlipay.QRCode       = QrCode;
                responseAlipay.Out_trade_no = request.out_trade_no;
                qrCode.AppId = sceneryDomain.Apipay.APP_ID;
            }
            catch (Exception ex)
            {
                LogHelper.AlipayLog(string.Format("获取支付宝URL:请求失败,保存信息:{0}", ex.Message));
            }
            finally
            {
                try
                {
                    new AlipayQRCodeDao().Add(qrCode);
                }
                catch (Exception ex)
                {
                    LogHelper.AlipayLog(string.Format("获取支付宝URL:新增操作日志失败:{0}", ex.Message));
                }
            }
            return(responseAlipay);
        }
Exemplo n.º 8
0
        /// <summary>
        /// 查询订单状态
        /// </summary>
        /// <param name="request"></param>
        /// <param name="sceneryDomain"></param>
        /// <returns></returns>
        public QueryResponse Query(QueryRequest request, SceneryDomain sceneryDomain)
        {
            var result = false;

            //创建淘宝支付信息
            client = new DefaultAopClient(serverUrl, sceneryDomain.Apipay.APP_ID, sceneryDomain.Apipay.APP_PRIVATE_KEY, "", version,
                                          sign_type, sceneryDomain.Apipay.ALIPAY_PUBLIC_KEY, charset);

            QueryResponse queryResponse = new QueryResponse();
            StringBuilder biz_content   = new StringBuilder();

            biz_content.Append("{\"out_trade_no\":\"" + request.Out_trade_no + "\"}");


            AlipayTradeQueryRequest payRequst = new AlipayTradeQueryRequest();

            payRequst.BizContent = biz_content.ToString();

            Dictionary <string, string> paramsDict  = (Dictionary <string, string>)payRequst.GetParameters();
            AlipayTradeQueryResponse    payResponse = null;


            LogHelper.AlipayLog(string.Format("论寻-请求josn:{0}", biz_content));
            payResponse = client.Execute(payRequst);

            LogHelper.AlipayLog(string.Format("论寻-结果:{0}-{1}-{2}", payResponse.Code, payResponse.TradeStatus, payResponse.Body));
            if (string.Compare(payResponse.Code, ResultCode.SUCCESS, false) == 0)
            {
                if (payResponse.TradeStatus == "TRADE_FINISHED" ||
                    payResponse.TradeStatus == "TRADE_SUCCESS" ||
                    payResponse.TradeStatus == "TRADE_CLOSED")
                {
                    if (payResponse.TradeStatus == "TRADE_SUCCESS")
                    {
                        var detailDao = new AlipayDetailDao();
                        var qrCodeDao = new AlipayQRCodeDao();
                        Alipay_trade_query_response alipayDetail = JsonConvert.DeserializeObject <Alipay_trade_query_response>(payResponse.Body);
                        //需要检查数据库中是否有改数据 有的话 直接返回
                        var QRCodeDetail = qrCodeDao.IsExistOut_trade_no(alipayDetail.alipay_trade_query_response.Out_trade_no, alipayDetail.alipay_trade_query_response.Total_amount
                                                                         , sceneryDomain.Apipay.APP_ID);

                        if (result == null || QRCodeDetail.SceneryName == "-1")
                        {
                            LogHelper.AlipayLog("论寻:无通知参数");
                        }
                        //论寻:数据已经存在,不需要插入
                        if (QRCodeDetail.SceneryName != "-2")
                        {
                            //保存支付宝信息
                            string body = payResponse.Body;
                            alipayDetail.alipay_trade_query_response.SceneryName    = sceneryDomain.SceneryName;
                            alipayDetail.alipay_trade_query_response.Creater        = sceneryDomain.Apipay.APP_ID;
                            alipayDetail.alipay_trade_query_response.Updater        = "";
                            alipayDetail.alipay_trade_query_response.AppId          = sceneryDomain.Apipay.APP_ID;
                            alipayDetail.alipay_trade_query_response.BatchNumber    = QRCodeDetail.BatchNumber;
                            alipayDetail.alipay_trade_query_response.SceneryRate    = sceneryDomain.Rate;
                            alipayDetail.alipay_trade_query_response.AlipayPlayDate = Convert.ToDateTime(alipayDetail.alipay_trade_query_response.Send_pay_date.ToString("yyyy-MM-dd"));
                            detailDao.Add(alipayDetail.alipay_trade_query_response);
                        }
                        else
                        {
                            LogHelper.AlipayLog("论寻:数据已经存在,不需要插入");
                        }
                        queryResponse.buyer_logon_id = alipayDetail.alipay_trade_query_response.Buyer_logon_id;
                        queryResponse.gmt_payment    = alipayDetail.alipay_trade_query_response.Send_pay_date;
                        queryResponse.trade_no       = alipayDetail.alipay_trade_query_response.Trade_no;
                        result = true;
                    }
                }
            }

            if (result == false && request.IsLastRequest == 1)
            {
                var content = new StringBuilder();
                content.Append("{\"out_trade_no\":\"" + payResponse.OutTradeNo + "\"}");
                biz_content = content;
                Cancel(content.ToString());
            }
            return(queryResponse);
        }
Exemplo n.º 9
0
        public void ProcessNotify()
        {
            SceneryDomain sceneryDomain = new SceneryDomain();

            try
            {
                WxPayData notifyData = null;
                WxPayData res        = null;
                try
                {
                    notifyData = GetNotifyData(sceneryDomain);
                }
                catch (WxPayException ex)
                {
                    //若签名错误,则立即返回结果给微信支付后台
                    res = new WxPayData();
                    res.SetValue("return_code", "FAIL");
                    res.SetValue("return_msg", ex.Message);
                    LogHelper.WeChatLog("Sign check error : " + res.ToXml());
                    ResponseMessage.Content = new StringContent(res.ToXml());
                    return;
                }
                //检查支付结果中transaction_id是否存在
                if (!notifyData.IsSet("transaction_id"))
                {
                    //若transaction_id不存在,则立即返回结果给微信支付后台
                    res = new WxPayData();
                    res.SetValue("return_code", "FAIL");
                    res.SetValue("return_msg", "支付结果中微信订单号不存在");
                    LogHelper.WeChatLog("The Pay result is error : " + res.ToXml());

                    ResponseMessage.Content = new StringContent(res.ToXml());

                    return;
                }

                string transaction_id = notifyData.GetValue("transaction_id").ToString();

                //查询订单,判断订单真实性
                var queryResult = QueryOrder(transaction_id, sceneryDomain.WeChat);

                if (queryResult == null)
                {
                    //若订单查询失败,则立即返回结果给微信支付后台
                    res = new WxPayData();
                    res.SetValue("return_code", "FAIL");
                    res.SetValue("return_msg", "订单查询失败");
                    LogHelper.WeChatLog("Order query failure : " + res.ToXml());
                    ResponseMessage.Content = new StringContent(res.ToXml());
                    return;
                }
                //查询订单成功
                else
                {
                    //业务处理
                    var detailDao = new WeChatDetailDao();
                    var qrCodeDao = new WeChatQRCodeDao();
                    //支付成功 查询交易信息
                    WeChatDetailDomain detail = new WeChatDetailDomain();
                    detail.Out_trade_no = queryResult.GetValue("out_trade_no").ToString();
                    detail.Total_fee    = Convert.ToInt32(queryResult.GetValue("total_fee"));


                    //需要检查数据库中是否有改数据 有的话 直接返回
                    var QRCodeDetail = qrCodeDao.IsExistOut_trade_no(detail.Out_trade_no, detail.Total_fee, sceneryDomain.WeChat.APPID);

                    if (QRCodeDetail == null || QRCodeDetail.SceneryName == "-1")
                    {
                        LogHelper.WeChatLog("论寻:无通知参数");
                        res = new WxPayData();
                        res.SetValue("return_code", "FAIL");
                        res.SetValue("return_msg", "无通知参数");
                        LogHelper.WeChatLog("Order query failure : " + res.ToXml());
                        ResponseMessage.Content = new StringContent(res.ToXml());
                        return;
                    }

                    if (QRCodeDetail.SceneryName != "-2")
                    {
                        //保存微信信息
                        detail.SceneryName    = QRCodeDetail.SceneryName;
                        detail.Creater        = sceneryDomain.WeChat.APPID;
                        detail.Updater        = "";
                        detail.AppId          = sceneryDomain.WeChat.APPID;
                        detail.BatchNumber    = QRCodeDetail.BatchNumber;
                        detail.SceneryRate    = QRCodeDetail.SceneryRate;
                        detail.Time_end       = DateTime.ParseExact(queryResult.GetValue("time_end").ToString(), "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
                        detail.WeChatPlayDate = Convert.ToDateTime(detail.Time_end.ToString("yyyy-MM-dd"));

                        detail.Err_code             = "Success";
                        detail.Err_code_des         = "异步";
                        detail.Openid               = queryResult.GetValue("openid").ToString();
                        detail.Trade_type           = queryResult.GetValue("trade_type").ToString();
                        detail.Bank_type            = queryResult.GetValue("bank_type").ToString();
                        detail.Settlement_total_fee = Convert.ToInt32(queryResult.GetValue("settlement_total_fee"));
                        detail.Transaction_id       = queryResult.GetValue("transaction_id").ToString();
                        detailDao.Add(detail);
                    }
                    else
                    {
                        //论寻:数据已经存在,不需要插入
                        LogHelper.WeChatLog("论寻:数据已经存在,不需要插入");
                    }

                    res = new WxPayData();
                    res.SetValue("return_code", "SUCCESS");
                    res.SetValue("return_msg", "OK");
                    LogHelper.WeChatLog("order query success : " + res.ToXml());
                    ResponseMessage.Content = new StringContent(res.ToXml());
                }
            }
            catch (Exception ex)
            {
                LogHelper.WeChatLog("Notify 异常:" + ex.Message);

                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "系统异常");
                LogHelper.WeChatLog("Sign check error : " + res.ToXml());
                ResponseMessage.Content = new StringContent(res.ToXml());
            }
        }