您的位置:首页 > 移动开发 > 微信开发

微信公众平台开发2:示例代码分析

2016-09-30 17:39 357 查看
大致分为四个部分:定义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 data        if (!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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: