C#微信公众号开发 -- (二)验证成为开发者

接下来就是验证成为开发者了。先来看一下验证的界面及需要填写的信息

在接口配置信息中填写需要处理验证信息的页面或者一般性处理文件,这里以aspx页面为例

URl中的格式为:http://XXX.com/wxapi.aspx ,其中XXX.com也即是上文提到的需要有一个外网可以访问的域名,wxapi.aspx即为处理开发者验证信息的页面

Token可以随便写,只要与wxapi.aspx定义的token一致就行了。填写完成之后先不要急着提交,因为这时候你的wxapi.aspx还需要加入微信开发者认证的代码,具体代码如下:

复制代码
public partial class wxapi : System.Web.UI.Page
    {
        const string _token = "在微信公众测试号后台写的那个Token";
        private const string _myOpenid = "你自己微信公众测试号的appID";
        string postStr = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            //***********  验证成为开发者之后将此代码注释 *************//
            string httpMethod = Request.HttpMethod.ToLower();
            if (httpMethod == "post")
            {
                //第一次验证的时候开启
                FirstValid();
            }
            else
            {
                Valid();  //如果不是post请求就去做开发者验证
            }
        }

        /// <summary>
        /// 验证成为开发者
        /// </summary>
        private void Valid()
        {
            string echoStr = Request.QueryString["echoStr"].ToString();
            if (CheckSignature())
            {
                if (!string.IsNullOrEmpty(echoStr))
                {
                    Response.Write(echoStr);
                    Response.End();
                }
            }
        }

        /// <summary>
        /// 验证微信签名
        /// </summary>
        /// * 将token、timestamp、nonce三个参数进行字典序排序
        /// * 将三个参数字符串拼接成一个字符串进行sha1加密
        /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
        /// <returns></returns>
        private bool CheckSignature()
        {
            string signature = Request.QueryString["signature"].ToString();
            string timestamp = Request.QueryString["timestamp"].ToString();
            string nonce = Request.QueryString["nonce"].ToString();
            string[] ArrTmp = { _token, timestamp, nonce };
            Array.Sort(ArrTmp);     //字典排序
            string tmpStr = string.Join("", ArrTmp);
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            tmpStr = tmpStr.ToLower();
            if (tmpStr == signature)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 第一次验证配置
        /// </summary>
        private void FirstValid()
        {
            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))
            {
                ResponseMsg(postStr);
            }
        }

        /// <summary>
        /// 返回信息结果(微信信息返回)
        /// </summary>
        /// <param name="weixinXML"></param>
        private void ResponseMsg(string weixinXML)
        {
            //回复消息的部分:你的代码写在这里
        }
}
复制代码

其中_token就是上面提到的在微信公众测试号后台写的那个Token,_myOpenid即是你自己测试号信息下的appID。
然后将自己的wxapi.aspx发布到服务器上面,随后点击微信测试帐号接口配置信息下的提交。

若提示配置失败则检查自己的token和appid是否与微信测试帐号后台接口一致。

若提示配置成功即为通过了微信开发者验证。

注:只有在这里配置成功了,才能在后面做自定义菜单创建,用户的信息调用及向用户发送消息、推广消息

猜你喜欢

转载自www.cnblogs.com/Violety/p/9814667.html