微信公众平台开发2:示例代码分析
来源:互联网 发布:encore cc 2015 mac 编辑:程序博客网 时间:2024/04/29 21:02
大致分为四个部分:
- 定义TOKEN
- 声明一个类 wechatCallbackapiTest
- 创建类wechatCallbackapiTest 的一个实例对象 $wechatObj
- 调用类的 valid() 方法。
详细分析
定义TOKEN
TOKEN 是用来交互时进行安全认证的,开发者可以随意定义,但要和公众平台里设置的一样。
声明一个类
声明一个类 wechatCallbackapiTest,该类中包含有三个方法。
- valid() 申请 成为开发者 时向微信发送验证信息。验证通过后,需要注释掉对此函数的调用。
- responseMsg()处理并回复用户发送过来的消息,也是用的最多的一个函数,几乎所有的功能都在这里实现。
在此处可以获取到用户的openid
public function responseMsg(){//get post data, May be due to the different environments//接收微信公众平台发送过来的用户消息,该消息数据结构为XML,不是php默认的识别数据类型,//因此这里用了$GLOBALS['HTTP_RAW_POST_DATA']来接收$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//extract post dataif (!empty($postStr)){//使用 simplexml_load_string() 函数将接收到的XML消息数据载入对象$postObj中。$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$fromUsername = $postObj->FromUserName;//用户的 openid$toUsername = $postObj->ToUserName;//公众账号的ID$keyword = trim($postObj->Content);//trim() 函数从字符串的两端删除空白字符和其他预定义字符,得到用户输入的关键词$time = time();//微信输出内容模板$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";if(!empty( $keyword )){$msgType = "text";//给用户返回文本消息类型$contentStr = "Welcome to wechat world!";//回复的消息内容$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;}else{echo "Input something...";//you can output help}}else {echo "";exit;}}
- checkSignature()
开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,原样返回echostr参数内容,则接入生效,否则接入失败。
signature结合了开发者填写的token参数和请求中的timestamp参数、nonce随机数参数。
加密/校验流程:
- 1. 将token、timestamp、nonce三个参数进行字典序排序
- 2. 将三个参数字符串拼接成一个字符串后进行sha1加密
- 3. 开发者获得加密后的字符串可与signature对比,验证该请求是否来源于微信
调用类的valid()方法执行接口验证,接口设置成功后需要将其注释掉。
艺搜参考
http://www.cnblogs.com/mchina/archive/2013/06/07/3120592.html
大致分为四个部分:
- 定义TOKEN
- 声明一个类 wechatCallbackapiTest
- 创建类wechatCallbackapiTest 的一个实例对象 $wechatObj
- 调用类的 valid() 方法。
详细分析
定义TOKEN
TOKEN 是用来交互时进行安全认证的,开发者可以随意定义,但要和公众平台里设置的一样。
声明一个类
声明一个类 wechatCallbackapiTest,该类中包含有三个方法。
- valid() 申请 成为开发者 时向微信发送验证信息。验证通过后,需要注释掉对此函数的调用。
- responseMsg()处理并回复用户发送过来的消息,也是用的最多的一个函数,几乎所有的功能都在这里实现。
在此处可以获取到用户的openid
public function responseMsg(){//get post data, May be due to the different environments//接收微信公众平台发送过来的用户消息,该消息数据结构为XML,不是php默认的识别数据类型,//因此这里用了$GLOBALS['HTTP_RAW_POST_DATA']来接收$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//extract post dataif (!empty($postStr)){//使用 simplexml_load_string() 函数将接收到的XML消息数据载入对象$postObj中。$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$fromUsername = $postObj->FromUserName;//用户的 openid$toUsername = $postObj->ToUserName;//公众账号的ID$keyword = trim($postObj->Content);//trim() 函数从字符串的两端删除空白字符和其他预定义字符,得到用户输入的关键词$time = time();//微信输出内容模板$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";if(!empty( $keyword )){$msgType = "text";//给用户返回文本消息类型$contentStr = "Welcome to wechat world!";//回复的消息内容$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;}else{echo "Input something...";//you can output help}}else {echo "";exit;}}
- checkSignature()
开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,原样返回echostr参数内容,则接入生效,否则接入失败。
signature结合了开发者填写的token参数和请求中的timestamp参数、nonce随机数参数。
加密/校验流程:
- 1. 将token、timestamp、nonce三个参数进行字典序排序
- 2. 将三个参数字符串拼接成一个字符串后进行sha1加密
- 3. 开发者获得加密后的字符串可与signature对比,验证该请求是否来源于微信
调用类的valid()方法执行接口验证,接口设置成功后需要将其注释掉。
艺搜参考
http://www.cnblogs.com/mchina/archive/2013/06/07/3120592.html
0 0
- 微信公众平台开发2:示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发(PHP)(二) 微信公众平台示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 微信公众平台开发 微信公众平台示例代码分析
- 微信公众平台 示例代码 分析
- 微信公众平台官方示例分析
- 微信公众平台接入java示例代码
- OpenGL进阶(二十) - 绘制一个长方形和一个三角形
- 理解哈希表
- 【hihoCoder】#1039 : 字符消除
- 【NOIP2011模拟9.1】统计 (Standard IO)
- 【每日收获6】网络连接错误和java的部分缺陷
- 微信公众平台开发2:示例代码分析
- 二分查找法
- hdu5826 physics(物理推公式)
- 3000门徒内部训练绝密视频(泄密版)第5课:彻底精通Scala隐式转换和并发编程及Spark源码阅读
- Constructing Roads In JGShining's Kingdom
- 微信公众平台开发4:天气预报
- 架构师之路--服务器集群搭建、管理、与快速部署
- Jquery城市联动
- leetcode-171. Excel Sheet Column Number