微信公众平台开发历程(二)

来源:互联网 发布:mac抹掉磁盘重装黑屏 编辑:程序博客网 时间:2024/06/07 13:17

闲话不说,趁着老板艾灸去了赶紧开始吧(温度39,艾灸不敢想象啊...)


微信基本配置

我用的是我们公司的服务号,开通了认证,能获得的权限更多一点。
要开发,你的手上还要有个服务器,让你的项目跑在服务器端,服务器端口开好80和443就够了,这个很重要。


首先,我们新的帐号要开启开发权限,新版本的微信是这样的:




点进去选择开通之后我们能找到这一块页面,服务器的url和令牌。




我们先说一下这个url和令牌是什么吧:

URL简单来说这是一个servlet,作用有两个:

1、处理微信服务器发来的消息 :当你在微信公众号里面有任何操作的时候,微信公众号会以xml格式的信息将你的操作发给这个servlet,然后你根据这个xml来判断你做了什么,再将你操作需要的返回结果用xml的格式返回给微信,微信公众号会根据你返回的xml来做出相应的动作(跳转、返回文字、返回图文信息等等)。

2、确认请求来自微信服务器 :微信服务器会将signature、timestamp、nonce、echostr这几个字符串以参数方式给你,然后你要将这将token(你的令牌)、timestamp、nonce三个参数进行字典序排序 ,将三个参数字符串拼接成一个字符串进行sha1加密 ,将sha1加密后的字符串可与signature对比,标识该请求来源于微信,若校验成功则原样返回echostr,表示接入成功,否则接入失败。

看下这个servlet,里面的具体校验方法或者消息处理请去柳峰老师的微博,这里有张飞机票:




我刚开始写的时候一直没有在web.xml里面配置这个servlet,一直不能校验成功,蠢的自己都怀疑,毕竟还是太年轻,上课还不好好听...


微信自定义菜单


微信自定义菜单生成其实很简单,官网api飞机票不给了,直接上截图:



自定义菜单生成有限,总结好以后再使用吧。

官方接口:http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

我们先来解析一下这个url,后面的都其他的接口大同小异了。

首先,微信官方是https协议,这里敲黑板,划重点:

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,所以,我们在向https协议传送数据的时候要通过这个ssl就要有证书信任管理器,柳峰老师的博客中也提到了这个(我是飞机票),上截图:





当然,我在这里遇到好多次坑爹的时候,问题是向微信接口发送数据的时候总是报unknown host : api.weixin.qq.com
遇到这个问题,首先不要方,先确认一下自己的代码是不是真的没有问题,没有问题的话,上招吧,查看你的服务器是否能够ping通这个域名,ping不同,你就要看看你的43端口是否打开了,https是走的443端口,http是80端口。基本上我的问题就是因为443端口没开...

其次,微信的access_token每天都有获取次数上限,并且每次获取到的access_token值有效时间是两个小时,so,我们要尽可能的用好这个access_token,柳峰老师的方法是写了个线程,具体如下:



每次要调用access_token是只要调用方法:TokenThread.accessToken.getToken()  就可以了(代码中jsapi_ticket是jssdk的调用,请暂时忽略)。

有了access_token下面我们就可以拼装生成按钮的报文了,官方给的json报文是这样的(刚发现有了新的报文,暂时先忽略):



json怎么拼看个人习惯,我比较喜欢bean转json。

我们现在有了json,有了access_token,那我们就可以用post方式将我们的json发送给微信,成不成功微信会给出回应:



如果成功,菜单生成时间大概是2分钟-5分钟:




阅读全文
0 0
原创粉丝点击