示例#1
0
    /// <summary>
    /// 微信发送文本信息
    /// </summary>
    /// <param name="wxRequestXMLModel">消息发送方微信号</param>
    /// <param name="ToUserName">消息接收方微信号,一般为公众平台账号微信号</param>
    /// <param name="Content">消息内容</param>
    private string sendText(WXRequest wxRequest)
    {
        string Result       = "";
        string FromUserName = wxRequest.FromUserName;
        string ToUserName   = wxRequest.ToUserName;
        string Content      = "";

        //创建用户对象
        //非员工信息
        //if ()
        //{
        //if ("ZC")//注册校验,自己可以写自己的用户注册功能
        //{
        //}
        if (wxRequest.MsgType.ToLower() == "event")
        {
            //EnumEvent ee=(EnumEvent)Enum.Parse(typeof(EnumEvent), wxRequest.eventModel.Event);
            if (wxRequest.eventModel.Event == EnumMapHelper.GetStringFromEnum(EnumEvent.subscribe))
            {
                Result = "感谢新的关注!";
            }
            else
            {
                Result = wxRequest.eventModel.EventKey;
            }
        }
        else if (wxRequest.MsgType.ToLower() == "text")
        {
            //EnumEvent ee=(EnumEvent)Enum.Parse(typeof(EnumEvent), wxRequest.eventModel.Event);
            Content = wxRequest.textModel.Content;
        }
        //else
        //{
        //    Result = "您好,感谢查看XX微信平台!您当前状态是“未注册”。注册方法是:发送:ZC#张三";
        //}
        //}
        //else//公司员工
        //{
        //    //属于员工的自己内部业务
        //}


        //创建属性文件
        WXResponse wxResponse = new WXResponse("text");

        Result = (Result == "" ? "内容[" + Content + "]" : Result);
        //FromUserName = "******";//模拟发送人,不支持
        wxResponse.ToUserName        = FromUserName;
        wxResponse.FromUserName      = ToUserName;
        wxResponse.textModel.Content = Result;
        WXTool.WriteLog("三、微信平台发送信息sendStr=" + Result);
        return(wxResponse.ResponseXML());
    }
示例#2
0
    /// <summary>
    /// 验证微信签名
    /// </summary>
    /// * 将token、timestamp、nonce三个参数进行字典序排序
    /// * 将三个参数字符串拼接成一个字符串进行sha1加密
    /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
    /// <returns></returns>
    private bool CheckSignature()
    {
        string signature = Request.QueryString["signature"] as String;
        string timestamp = Request.QueryString["timestamp"] as String;
        string nonce     = Request.QueryString["nonce"] as String;
        string echostr   = Request.QueryString["echostr"] as String;

        string[] ArrTmp = { Token, timestamp, nonce };
        Array.Sort(ArrTmp);     //字典排序
        string tmpStr = string.Join("", ArrTmp);

        tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
        tmpStr = tmpStr.ToLower();
        WXTool.WriteLog("一、微信签名认证:signature=" + signature + ";Token=" + Token + ";timestamp=" + timestamp + ";nonce=" + nonce + ";tmpStr=" + tmpStr);
        if (tmpStr == signature)
        {
            return(true);
        }
        else
        {
            return(false);
        }
    }
示例#3
0
    const string Token = "CucentOA";            //token
    protected void Page_Load(object sender, EventArgs e)
    {
        string postStr = "";

        Response.Write("ssata");

        return;

        //Test();//Debug模式使用,用来模拟微信发送的数据
        Valid();//校验签名
        if (Request.HttpMethod.ToLower() == "post")
        {
            Stream s = System.Web.HttpContext.Current.Request.InputStream;
            byte[] b = new byte[s.Length];
            s.Read(b, 0, (int)s.Length);
            postStr = Encoding.UTF8.GetString(b);
            if (!string.IsNullOrEmpty(postStr))
            {
                WXTool.WriteLog("二、微信平台接收信息postStr=" + postStr);
                ResponseMsg(postStr);
            }
        }
    }
示例#4
0
        /// <summary>
        /// 发送XML信息
        /// </summary>
        public string ResponseXML()
        {
            StringBuilder result = new StringBuilder();

            funcFlag = (funcFlag == null || funcFlag.ToString() == "" ? 0 : funcFlag);

            result.Append("<xml><ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>");
            result.Append("<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>");
            result.Append("<CreateTime>" + WXTool.ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[text]]></MsgType>");
            result.Append("<MsgType><![CDATA[" + this.msgType + "]]></MsgType>");
            switch (this.msgType)
            {
            case "text":
                result.Append("<Content><![CDATA[" + textModel.Content + "]]></Content>");

                /*<xml>
                 * <ToUserName><![CDATA[toUser]]></ToUserName>
                 * <FromUserName><![CDATA[fromUser]]></FromUserName>
                 * <CreateTime>12345678</CreateTime>
                 * <MsgType><![CDATA[text]]></MsgType>
                 * <Content><![CDATA[content]]></Content>
                 * <FuncFlag>0</FuncFlag>
                 * </xml>*/
                break;

            case "music":
                result.Append("<Music><Title><![CDATA[" + musicModel.Title + "]]></Title>");
                result.Append("<Description><![CDATA[" + musicModel.Description + "]]></Description>");
                result.Append("<MusicUrl><![CDATA[" + musicModel.MusicUrl + "]]></MusicUrl>");
                result.Append("<HQMusicUrl><![CDATA[" + musicModel.HQMusicUrl + "]]></HQMusicUrl></Music>");

                /*<xml>
                 * <ToUserName><![CDATA[toUser]]></ToUserName>
                 * <FromUserName><![CDATA[fromUser]]></FromUserName>
                 * <CreateTime>12345678</CreateTime>
                 * <MsgType><![CDATA[music]]></MsgType>
                 * <Music>
                 * <Title><![CDATA[TITLE]]></Title>
                 * <Description><![CDATA[DESCRIPTION]]></Description>
                 * <MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>
                 * <HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>
                 * </Music>
                 * <FuncFlag>0</FuncFlag>
                 * </xml>*/
                break;

            case "news":
                result.Append("<ArticleCount>" + newsModel.ArticleCount + "</ArticleCount><Articles>");
                foreach (NewsArticlesWXResponse_Model item in newsModel.Articles)
                {
                    result.Append("<item><Title><![CDATA[" + item.Title + "]]></Title><Description><![CDATA[" + item.Description + "]]></Description>");
                    result.Append("<PicUrl><![CDATA[" + item.PicUrl + "]]></PicUrl><Url><![CDATA[" + item.Url + "]]></Url></item>");
                }
                result.Append("</Articles>");

                /*<xml>
                 * <ToUserName><![CDATA[toUser]]></ToUserName>
                 * <FromUserName><![CDATA[fromUser]]></FromUserName>
                 * <CreateTime>12345678</CreateTime>
                 * <MsgType><![CDATA[news]]></MsgType>
                 * <ArticleCount>2</ArticleCount>
                 * <Articles>
                 * <item>
                 * <Title><![CDATA[title1]]></Title>
                 * <Description><![CDATA[description1]]></Description>
                 * <PicUrl><![CDATA[picurl]]></PicUrl>
                 * <Url><![CDATA[url]]></Url>
                 * </item>
                 * <item>
                 * <Title><![CDATA[title]]></Title>
                 * <Description><![CDATA[description]]></Description>
                 * <PicUrl><![CDATA[picurl]]></PicUrl>
                 * <Url><![CDATA[url]]></Url>
                 * </item>
                 * </Articles>
                 * <FuncFlag>1</FuncFlag>
                 * </xml> */
                break;
            }
            result.Append("</Articles><FuncFlag>" + funcFlag + "</FuncFlag></xml>");
            return(result.ToString());
        }