+发表新主题
查看: 1427|回复: 0

[开发入门] 微信开发入门系列教程(二)-- 收发文本消息

[复制链接]

[开发入门] 微信开发入门系列教程(二)-- 收发文本消息

[复制链接]
风的传说自由 发表于 2015-7-8 17:03:20 浏览:  1427 回复:  0 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
152159xahqqlxoz3lhha8o.png


之前验证服务器URL的时候,使用了官方提供的Demo,如果验证通过了以后,我们可以直接在公众号中随便回复一条文本信息,就会得到公众号的默认返回信息“该公众号暂时无法提供服务,请稍后再试”,这是因为Demo中没有对用户发送的消息做任何的相应处理(其实是有对应的处理方法responseMsg(),只不过没有调用)。

  1. public function responseMsg()

  2. {

  3.         //get post data, May be due to the different environments

  4.         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];



  5.               //extract post data

  6.         if (!empty($postStr)){

  7.                 /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,

  8.                 the best way is to check the validity of xml by yourself */

  9.                 libxml_disable_entity_loader(true);

  10.                 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

  11.                 $fromUsername = $postObj->FromUserName;

  12.                 $toUsername = $postObj->ToUserName;

  13.                 $keyword = trim($postObj->Content);

  14.                 $time = time();

  15.                 $textTpl = "<xml>

  16.                                 <ToUserName><![CDATA[%s]]></ToUserName>

  17.                                 <FromUserName><![CDATA[%s]]></FromUserName>

  18.                                 <CreateTime>%s</CreateTime>

  19.                                 <MsgType><![CDATA[%s]]></MsgType>

  20.                                 <Content><![CDATA[%s]]></Content>

  21.                                 <FuncFlag>0</FuncFlag>

  22.                                 </xml>";            

  23.                 if(!empty( $keyword ))

  24.                 {

  25.                               $msgType = "text";

  26.                         $contentStr = "Welcome to wechat world!";

  27.                         $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

  28.                         echo $resultStr;

  29.                 }else{

  30.                         echo "Input something...";

  31.                 }



  32.         }else {

  33.                 echo "";

  34.                 exit;

  35.         }

  36. }
复制代码
在index.php中如果我们调用一下responseMsg方法,那么我们给公众号发送的文本就能够被响应,但由于默认只处理了文本消息,所以发送其他消息也会出现从上面的代码可以看出“该公众号暂时无法提供服务,请稍后再试”的提示。我们调用responseMsg方法

  1. $wechatObj = new wechatCallbackapiTest();

  2. $wechatObj->responseMsg();
复制代码
responseMsg方法很好理解,先获取到微信服务器发post过来的XML数据,然后我们读出对应的字段,再把我们要回复给用户的信息封装进XML数据包(注意ToUserName和FromUsername在接收和返回时的不同),最后再把数据返回给微信服务器。
发送文本消息后,会得到默认回复“Welcome to wechat world!”。
152159xahqqlxoz3lhha8o.png



回复

使用道具 举报


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版| 赣南网

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4

用微信扫一扫

赣南网