微信公众号建设
微信服务器就相当于一个转发服务器,手机、Pad等终端发起请求至微信服务器,然后微信服务器将请求转发给用户自定义服务,服务处理完毕,然后再挥发给微信服务器,微信服务器再将具体响应回复到手机、Pad等终端。其通信协议为HTTP,数据格式为XML。
具体的流程如下图:
我们需要做的事情,就是对HTTP请求,做出响应:对具体的请求内容,我们按照特定的XML格式去解析;请求处理完毕后,也要按照特定的XML格式返回;只需要一个简单的实现HttpHandler即可。
当然,微信平台还能实现更加复杂的业务,比如微信可以作为内嵌的浏览器,我们可以通过微信的链接,打开htm界面,然后实现自己的逻辑。
- 网址接入
公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数:
开发者通过检验signature对请求进行校验,若确认此次GET请求来自微信服务器则原样返回echostr参数内容,此时接入生效,否则接入失败。
signature请求的校验方式,结合了开发者的token参数,以及请求中的timestamp参数和nonce参数,具体的加密/校验流程为:
1、将token、timestamp、nonce三个参数进行字典序排序;
2、将三个参数字符串拼接成一个字符串进行sha1加密;
3、开发者获得加密后的字符串与signature对比,标识该请求来源于微信。
//—–000—–验证威信TOKEN
public function validWeixin()
{
$echoStr = $_GET[“echostr”];
$signature = $_GET[“signature”];
$timestamp = $_GET[“timestamp”];
$nonce = $_GET[“nonce”];$token = TOKEN; //前面已经define
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );if( $tmpStr == $signature )
{
echo $echoStr;
exit;
}
else;
}
- 消息推送
当微信用户向公众账号发消息时,微信服务器将会POST该消息到填写的URL上,该消息结构如下。
消息的接收,以文本为例:
注意事项:
1、用户OpenID对一个公众号是固定唯一的串;
2、微信服务器在五秒内收不到响应,则会断掉连接。
例如处理接收的文本消息:
- 消息回复
消息的回复,同样以文本为例:
例如回复一个文本消息:
再例如回复一个多图文消息:
- 点击菜单直接打开网页
这个是略为新一些的用法,主要授权给第三方使用。首先需要在开发者高级接口中打开OAuth2.0授权,填写回调地址。
如果你的网址没有被列入过黑名单,那么就会在顶部出现“授权成功”。
其次是要构建授权页面:https://open.weixin.qq.com/connect/oauth2/authorize?appid=yourAPPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect。
要修改微信的自定义菜单,把type由click修改为view:
这是成果,欢迎扫描:
发表评论
Want to join the discussion?Feel free to contribute!