标签:ide image private 微信公众平台开发 app join get value int
微信公众平台开发,是服务器和服务器之间的通讯,为了完成两个不同系统的之间的通讯,则需要进行一些验证,所以我们在公众平台后台测试账号哪里配置我们这边的接口信息,在进行着一些开发之前,需要我们先做一些准备工作
微信是服务器和服务器之间的交换,所以我们需要一台服务器
(虚拟空间,VPS都可以)
搭建一个web测试站,需要注册一个域名(80端口的)
可以是子域名 比如weixin.bamn.cn 必须是80端口,否则无法使用
我还需要为填写的URL进行一些操作
如果你的接口是PHP的可以参考官网提供的
我们这里是ASP.NET:
http://weixin.bamn.cn/WeiXinTokenApi.aspx 如果是https则443端口
微信服务器那边会往我们上面的地址 进行get操作,我们接口中可以拿到微信服务器传过来的三个参数signature timestamp nonce
1获取微信服务器传过来的四个参数
2 对这三个参数进行“字典序排序”
3 拼接三个字符串
4 对拼接的字符串进行sha1加密
4 成功验证 原样返回
具体可以查看WeiXinTokenApi.aspx.cs页面的代码
protected void Page_Load(object sender, EventArgs e) { if (Request.RequestType.ToLower().Equals("post")) { //接收消息 ResponseMsg(); } else { //校验接口 主要在这里做校验操作 CheckSignature(); } Response.End(); }
主要就是这个CheckSignature方法进行校验了,校验是GET的请求的
private void CheckSignature() { try { //1获取微信服务器传过来的四个参数 string signature = Request.QueryString["signature"]; string timestamp = Request.QueryString["timestamp"]; string nonce = Request.QueryString["nonce"]; string echostr = Request.QueryString["echostr"];//该字符串用来成功验证后原样返回 string token = TOKEN; string[] tmpArr = new string[] { token, timestamp, nonce };//2 对这三个参数进行“字典序排序” Array.Sort(tmpArr); string tmpStr = string.Join("", tmpArr);//3 拼接三个字符串 tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//4 sha1加密 tmpStr = tmpStr.ToLower(); if (tmpStr == signature) { SetCacheDateTime("Item", tmpStr + ":" + signature + " " + echostr, 3600); //4 成功验证原样返回 HttpContext.Current.Response.Write(echostr); } else { SetCacheDateTime("Item", "验证不通过", 3600); Response.Write("验证不通过");//随便返回 } } catch (Exception ex) { SetCacheDateTime("Item", ex.Message, 3600); Response.Write(ex.Message);//随便返回 } }
只有校验成功了,我们在微信公众平台后台点击保存才会成功保存的
标签:ide image private 微信公众平台开发 app join get value int
原文地址:http://www.cnblogs.com/maijin/p/6076755.html