微信开发学习,官方把一些常用命令都已经封装好了,直接调用即可。但本着钻研的态度,还是来详细看一下。
定义常量TOKEN,,是为了服务器安全,防止他人调用,可以自行更改,更改后公众号借口配置也要做相应更改.
$wechatObj -> valid()为验证开发模式借口,验证完即可注视获或是忽略
valid验证借口的方法,从用户端获取一个随机字符变量$echoStr,checkSIgnature验证签名是否一致,为真是输出变量$echoStr,完成验证操作 。
自动回复信息的方法,用户端发送的数据存入变量$postStr中,格式为xml,$_POST无法解析,$GLOBALS["HTTP_RAW_POST_DATA"]来获取,
解析变量$postStrl,
libxml_disable_entity_loader(true); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);//解析xml $fromUsername = $postObj->FromUserName; //用户名 $toUsername = $postObj->ToUserName; //公众号ID //自定义event,subscribe事件 $type = $postObj -> MsgType; $customevent = $postObj -> Event; //提取纬度和精度 $latitude = $postObj -> Location_X; $longitude = $postObj -> Location_Y; $keyword = trim($postObj->Content); //发来的文本内容 $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>";
$fromUsername微信用户端用户名,
$toUsername公众账号ID
$keyword用户发来的文本内容
$time系统时间
$textTpl微信内容固定格式
<ToUserName>微信目标方
<FromUserName>微信来源方
<CreateTime>>系统时间
<MsgType>回复微信的信息类型
<Content>回复微信的内容
<FuncFlag>是否星标微信
重点来了
$msgType设置回复文本类型
$contentStr我们需要回复的信息,内容在这里更改
$resultStr定义xml
建立私有方法签名,看看即可
获取用户端签名$signature
获取用户端时间戳$timestamp
获取用户端随机数$snonce
常量赋值$token
数组$tomArr
新建名排序
字典排序
sha1加密
判断$tmpStr和$signature变量是否同值