示例#1
0
        public static bool Post(string url, string data, out string msg)
        {
            try
            {
                TxtLoger.SavaLogToTXT("url为:" + url + ",  data为:" + data, "a");
                WebRequest  request = WebRequest.Create(url);
                WebResponse response;
                request.Method = "POST";
                byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(data);

                TxtLoger.SavaLogToTXT("byteArray的长度为:" + byteArray.Length, "a");
                request.ContentType   = "application/x-www-form-urlencoded";
                request.ContentLength = byteArray.Length;
                Stream dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();
                response   = request.GetResponse();
                dataStream = response.GetResponseStream();
                StreamReader reader       = new StreamReader(dataStream, Encoding.UTF8);
                string       responseForm = reader.ReadToEnd();
                reader.Close();
                dataStream.Close();
                response.Close();
                msg = responseForm;
                TxtLoger.SavaLogToTXT("成功发送 ,msg 为:" + msg, "a");
                return(true);
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                TxtLoger.SavaLogToTXT("post 数据发生异常 详细信息为:" + ex.Message, "a");
                return(false);
            }
        }
        private int UpdateTaskModel(PayStatusNotifyTask paynotify)
        {
            var res = new ServiceResult("更新支付通知任务表失败!");

            try
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("update PayStatusNotifyTask set ");
                if (paynotify.TaskStatus != null)
                {
                    sb.Append(" TaskStatus=@TaskStatus ");
                }
                sb.Append(",TaskNum=@TaskNum");
                sb.Append(" where TaskID=@TaskID");
                System.Data.SqlClient.SqlParameter[] parm = { new System.Data.SqlClient.SqlParameter("@TaskStatus", paynotify.TaskStatus),
                                                              new System.Data.SqlClient.SqlParameter("@TaskNum",    paynotify.TaskNum),
                                                              new System.Data.SqlClient.SqlParameter("@TaskID",     paynotify.TaskID) };
                return(QueryService.Platform.ExecuteSqlCommand(sb.ToString(), parm));
            }
            catch (Exception ex)
            {
                TxtLoger.SavaLogToTXT("更新支付通知任务表失败:机构号为:" + paynotify.SourceID + ",update异常详情:" + ex.Message, "a");
                res.IsError(ex);
            }
            return(0);
        }
        /// <param name="httpMessage">out msg</param>
        /// <param name="sourceId">机构号</param>
        private bool VerifyCode(string httpMessage, string sourceId)
        {
            var res = new ServiceResult();

            try
            {
                NoticeResponse1006 respose = JsonUtils.Deserialize <NoticeResponse1006>(httpMessage);
                if (respose.Code == "100")
                {
                    TxtLoger.SavaLogToTXT("推送成功!机构号为:" + sourceId + ",响应状态为:" + Enum.GetName(typeof(EnumPlatform.EResponseCode), respose.Code), "a");
                    return(true);
                }
                else
                {
                    TxtLoger.SavaLogToTXT("推送失败!机构号为:" + sourceId + ",响应状态为:" + Enum.GetName(typeof(EnumPlatform.EResponseCode), respose.Code), "a");
                    res.IsFailure("推送失败!机构号为:" + sourceId + ",响应状态为:" + Enum.GetName(typeof(EnumPlatform.EResponseCode), respose.Code));
                    return(false);
                }
            }
            catch (Exception ex)
            {
                TxtLoger.SavaLogToTXT("推送支付通知接受响应码异常:机构号为:" + sourceId + ",响应异常详情:" + ex.Message, "a");
                res.IsError(ex, "推送支付通知接受响应码异常:机构号为:" + sourceId + ",响应异常详情:" + ex.Message);
                return(false);
            }
        }
        public string Notice(string sourceID, NoticeRequest1006 sendData)
        {
            string data = JsonUtils.Serialize(sendData);

            TxtLoger.SavaLogToTXT("推送,前data为:" + data, "a");
            var    signData = new SignData(sourceID);
            string signStr  = signData.Sign(data);
            var    obj      = new
            {
                data     = Base64Utils.EncodeBase64String(data),
                signdata = Base64Utils.EncodeBase64String(signStr),
            };

            TxtLoger.SavaLogToTXT("obj是 数据是:" + obj.ToJson(), "a");
            return(JsonUtils.Serialize(obj));
        }
        public void Execute(IJobExecutionContext context)
        {
            TxtLoger.SavaLogToTXT("开始执行", "a");
            var res = new ServiceResult("PayStatusNotifyJob异常!");

            try
            {
                //通知次数<8
                var PayNotifyList = QueryService.Platform.FindList <PayStatusNotifyTask>(t => t.TaskStatus == false && t.TaskNum < 8 && t.DelFlag == false);
                if (null != PayNotifyList)
                {
                    TxtLoger.SavaLogToTXT("中行数为:" + PayNotifyList.Count, "a");
                }
                foreach (PayStatusNotifyTask paynotify in PayNotifyList)
                {
                    if (paynotify.Status == 1)
                    {
                        NoticeRequest1006 sendCmd = new NoticeRequest1006
                        {
                            SourceID    = paynotify.SourceID,
                            PaymentNo   = paynotify.PaymentNo,
                            Amount      = paynotify.Amount,
                            Status      = paynotify.Status,
                            PayTime     = string.Format("{0:yyyyMMddHHmmss}", paynotify.PayTime),
                            BandCODFlag = paynotify.BandCODFlag
                        };
                        string msg = "向代销机构推送数据";

                        //获取代销机构回调地址
                        string url = ConfigManager.AppSetting("CallBack_" + paynotify.SourceID);
                        //发送前签名data
                        //string notice = HttpHelper.Notice(paynotify.SourceID, sendCmd);
                        string notice = Notice(paynotify.SourceID, sendCmd);
                        TxtLoger.SavaLogToTXT("签名,后notice为:" + notice, "a");

                        //bool IsPost = HttpHelper.Post(url, notice, out msg);
                        //if (IsPost)
                        //{
                        //    TxtLoger.SavaLogToTXT("推送,后msg为:" + msg, "a");
                        //    //发送后,解析响应码
                        //    if (VerifyCode(msg, paynotify.SourceID))
                        //    {
                        //        paynotify.TaskStatus = true;
                        //    }
                        //    if (paynotify.TaskNum < 8)
                        //    {
                        //        paynotify.TaskNum = paynotify.TaskNum + 1;
                        //    }
                        //    if (UpdateTaskModel(paynotify) <= 0)
                        //    {
                        //        loger.Debug("更新支付状态通知任务表失败");
                        //    }
                        //}
                        //else
                        //{
                        //    loger.Debug("向代销机构推送数据失败,异常详情为:" + msg);
                        //}
                        paynotify.TaskStatus = true;
                        if (paynotify.TaskNum < 8)
                        {
                            paynotify.TaskNum = paynotify.TaskNum + 1;
                        }
                        if (UpdateTaskModel(paynotify) <= 0)
                        {
                            loger.Debug("更新支付状态通知任务表失败");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                res.IsError(ex);
                TxtLoger.SavaLogToTXT("发生异常:" + ex.Message, "a");
            }
            TxtLoger.SavaLogToTXT("结束执行:", "a");
        }