コード例 #1
0
        public void WeixinAuthUrl(WeiXinCallBackAuthViewModel weixinauth)
        {
            HttpContext.Response.AddHeader("Status", "200");
            HttpContext.Response.Write("接收成功");
            if (!string.IsNullOrEmpty(weixinauth.echostr))
            {
                var send   = UserBackendService.WeiXinAuthURL(weixinauth);
                var result = Newtonsoft.Json.JsonConvert.DeserializeObject <WeiXinMessageResult>(send);
                if (result.Status)
                {
                    HttpContext.Response.AddHeader("Status", "200");
                    HttpContext.Response.Write(result.Result);
                }
                else
                {
                    HttpContext.Response.Write(result.Code);
                }
            }
            var httpRequestStream = HttpContext.Request.InputStream;
            var message           = UserBackendService.SendCallBackMessage(weixinauth, httpRequestStream);
            var results           = Newtonsoft.Json.JsonConvert.DeserializeObject <WeiXinMessageResult>(message);

            if (results.Status)
            {
                HttpContext.Response.AddHeader("Status", "200");
                HttpContext.Response.Write(results.Result);
            }
        }
コード例 #2
0
        /// <summary>
        /// 验证回调URL有效性
        /// </summary>
        /// <param name="requestauth">微信请求体</param>
        public string WeiXinAuthURL(WeiXinCallBackAuthViewModel requestauth)
        {
            // Infrastructure.WeiXin.WXBizMsgCrypt wxcpt = new Infrastructure.WeiXin.WXBizMsgCrypt(CALLBACKTOKEN, CALLBACKENCODINGAESKEY, CORPID);
            string sVerifyMsgSig    = requestauth.msg_signature;
            string sVerifyTimeStamp = requestauth.timestamp;
            string sVerifyNonce     = requestauth.nonce;
            string sVerifyEchoStr   = requestauth.echostr;
            int    ret      = -1;
            string sEchoStr = "";

            //  ret = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr, ref sEchoStr);
            if (ret == 0)
            {
                return(JsonConvert.SerializeObject(new WeiXinMessageResult {
                    Status = true, Result = sEchoStr, Code = ret.ToString()
                }));
            }
            return(JsonConvert.SerializeObject(new WeiXinMessageResult {
                Status = false, Result = "", Code = ret.ToString()
            }));
        }
コード例 #3
0
        /// <summary>
        /// 信息转发处理
        /// </summary>
        /// <param name="request">请求处理</param>
        /// <param name="requestream">请求流</param>
        /// <returns></returns>
        public string SendCallBackMessage(WeiXinCallBackAuthViewModel request, Stream requestream)
        {
            //  Infrastructure.WeiXin.WXBizMsgCrypt wxcpt = new Infrastructure.WeiXin.WXBizMsgCrypt(CALLBACKTOKEN, CALLBACKENCODINGAESKEY, CORPID);
            int    ret      = -1;
            string sMsg     = ""; //解析之后的明文
            string sReqData = GetXml(requestream);

            // ret = wxcpt.DecryptMsg(request.msg_signature, request.timestamp, request.nonce, sReqData, ref sMsg);
            if (ret != 0)
            {
                return(JsonConvert.SerializeObject(new WeiXinMessageResult {
                    Status = false, Result = "", Code = ret.ToString()
                }));
            }
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(sMsg);


            XmlNode cropid     = doc.SelectSingleNode("//ToUserName");
            string  cropId     = cropid.InnerText;     //获取企业id
            XmlNode from       = doc.SelectSingleNode("//FromUserName");
            string  userid     = from.InnerText;       //获取员工id
            XmlNode type       = doc.SelectSingleNode("//MsgType");
            string  msgtype    = type.InnerText;       //操作的类型
            XmlNode CreateTime = doc.SelectSingleNode("//CreateTime");
            string  createtime = CreateTime.InnerText; //消息的创建时间

            XmlNode AgentID = doc.SelectSingleNode("//AgentID");
            string  agentid = AgentID.InnerText;//应用id

            var Content = string.Empty;

            if (msgtype == "text")
            {
                XmlNode content = doc.SelectSingleNode("//Content");
                Content = content.InnerText;
            }
            else if (msgtype == "event")
            {
                Content = "事件";
            }

            var SendContent = string.Empty;

            #region 监控发给谁
            #region 能力判断

            var UserPower = GetPowerByWeixinUserId(userid);
            if (UserPower.IsPower)
            {
                if (msgtype == "text")
                {
                    #region 帮助功能
                    //根据帮助文档获取
                    var HelpTxt = WeixinPowerHelpText(UserPower);
                    #endregion
                    #region 获取sendContent

                    SendContent = getSendContent(Content, HelpTxt, UserPower);

                    #endregion

                    //#region 修改支付密码
                    ////修改支付密码
                    //if (IsChangePayPassWordPowers)
                    //{
                    //    if (Common.Helpers.StringHelper.StrIsMatch(Content, Service.Enums.WeiXinTaskRegStr.ChangePayPassword).Success)
                    //    {
                    //        SendContent = WeixinContentFillter(Content, Service.Enums.WeiXinTaskRegStr.ChangePayPassword);
                    //    }
                    //    else if (Content == "TX")
                    //    {
                    //        WalletService.WithdrawReady();
                    //        SendContent = "提现信息已发送!:)";
                    //    }
                    //    else if (Content == "支付密码")
                    //    {
                    //        SendContent = Service.Enums.WeiXinTaskRegStr.ChangePayPasswordDsec;
                    //    }
                    //    else
                    //    {
                    //        //SendContent = IsChangePassWordPower ? HelpTxt : "修改支付密码请回复:支付密码 4个字,系统将给你提供修改规则";
                    //        SendContent = HelpTxt;
                    //    }
                    //}
                    //#endregion

                    //#region 修改密码
                    ////修改密码
                    //if (IsChangePassWordPower)
                    //{
                    //    if (Common.Helpers.StringHelper.StrIsMatch(Content, Service.Enums.WeiXinTaskRegStr.ChangePassword).Success)
                    //    {
                    //        SendContent = ChangePassword(Content, Service.Enums.WeiXinTaskRegStr.ChangePassword, Service.Enums.WeiXinTaskRegStr.ChangePasswordDsec);
                    //    }
                    //    else if (Content == "修改密码")
                    //    {
                    //        SendContent = Service.Enums.WeiXinTaskRegStr.ChangePasswordDsec;
                    //    }
                    //    else
                    //    {
                    //        //SendContent = IsChangePayPassWordPowers ? HelpTxt : "修改密码请回复:修改密码 4个字,系统将给你提供修改规则";
                    //        SendContent = HelpTxt;
                    //    }
                    //}
                    //#endregion

                    //#region 查询用户Id
                    ////查询用户ID
                    //if (IsSearchUser)
                    //{
                    //    if (Common.Helpers.StringHelper.StrIsMatch(Content, Service.Enums.WeiXinTaskRegStr.SearchUserId).Success)
                    //    {
                    //        SendContent = GetUser(Content, Service.Enums.WeiXinTaskRegStr.SearchUserId, Service.Enums.WeiXinTaskRegStr.SearchUserIdDsec);
                    //    }
                    //    else if (Content == "查询用户")
                    //    {
                    //        SendContent = Service.Enums.WeiXinTaskRegStr.SearchUserIdDsec;
                    //    }
                    //    else
                    //    {
                    //        // SendContent = IsSearchUser ? "1:如果想修改密码请回复:修改密码 4个字,系统将给你提供修改规则;<br/>2:如果想修改支付密码请回复:支付密码 4个字,系统将给你提供修改规则;" : "修改密码请回复:修改密码 4个字,系统将给你提供修改规则";
                    //        SendContent = HelpTxt;
                    //    }
                    //}
                    //#endregion
                }
                else if (msgtype == "event")
                {
                    XmlNode events       = doc.SelectSingleNode("//Event");
                    string  weixinevents = events.InnerText; //事件类型

                    XmlNode EventKey       = doc.SelectSingleNode("//EventKey");
                    string  weiXinEventKey = EventKey.InnerText;//事件KEY值


                    XmlNode ScanCodeInfo       = doc.SelectSingleNode("//ScanCodeInfo");
                    string  weiXinScanCodeInfo = ScanCodeInfo.InnerText; //扫描信息

                    var weiXinScanType   = string.Empty;
                    var weiXinScanResult = string.Empty;


                    if (!string.IsNullOrEmpty(weiXinScanCodeInfo))
                    {
                        XmlNode ScanType = doc.SelectSingleNode("//ScanType");
                        weiXinScanType = ScanType.InnerText;     //扫描类型
                        XmlNode ScanResult = doc.SelectSingleNode("//ScanResult");
                        weiXinScanResult = ScanResult.InnerText; //扫描结果
                    }

                    if (string.IsNullOrEmpty(weiXinScanResult))
                    {
                        SendContent = "扫码信息有误!";
                    }
                    else
                    {
                        var usertransfer = JsonConvert.DeserializeObject <WxinxinUserTransferViewModel>(weiXinScanResult);
                        if (usertransfer == null)
                        {
                            SendContent = "扫码信息有误!";
                        }
                        else
                        {
                            SendTaskNotify(new TaskRequest()
                            {
                                Content = usertransfer.UserId + "amount:" + usertransfer.Amount + "desc:" + usertransfer.AmountDesc, ListUsers = "*****@*****.**"
                            });
                            // WalletService.Transfer(ITradeTypeConfigurationExtention.ExiuAsUserId, usertransfer.UserId, usertransfer.Amount, "", usertransfer.AmountDesc, usertransfer.Token);
                            SendContent = "转账已完成!";
                        }
                    }
                }
            }
            SendContent = (!UserPower.IsPower) ? "你好,我是驴尾巴!好好工作,不要逗我玩!" : (string.IsNullOrEmpty(Content)) ? "不知道你说的什么!" : SendContent;
            #endregion
            var    CallBackEncryptMsg = string.Empty;
            string result             = SetData(SendContent, userid, cropId, createtime);
            if (msgtype == "text" || msgtype == "event")//如果接收的是消息类型
            {
                //   ret = wxcpt.EncryptMsg(result, request.timestamp, request.nonce, ref CallBackEncryptMsg);
                if (ret != 0)
                {
                    return(JsonConvert.SerializeObject(new WeiXinMessageResult {
                        Status = false, Result = "", Code = ret.ToString()
                    }));
                }
                return(JsonConvert.SerializeObject(new WeiXinMessageResult {
                    Status = true, Result = CallBackEncryptMsg, Code = ret.ToString()
                }));
            }
            return(JsonConvert.SerializeObject(new WeiXinMessageResult {
                Status = true, Result = "未知的操作", Code = ret.ToString()
            }));
        }
コード例 #4
0
 public ActionResult WeiXinChangePassword(WeiXinCallBackAuthViewModel weixinauth)
 {
     return(View());
 }