美文网首页
关于responseMsg()设置好后,还是收不到消息

关于responseMsg()设置好后,还是收不到消息

作者: 大笨蛋就是我呀 | 来源:发表于2019-01-23 18:17 被阅读0次

在微信公众号开发中,要经历一个自动回复消息的设置,在接口文件中,responseMsg()里是这样的

public function responseMsg()

    {

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

        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

          //extract post data<br />

        //判断XML数据是否为空<br />

        if (!empty($postStr)){

                /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,<br />

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

                libxml_disable_entity_loader(true);

                //通过simplexml进行xml解析<br />

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

                //手机端<br />

                $fromUsername = $postObj->FromUserName;

                //微信公众平台<br />

                $toUsername = $postObj->ToUserName;

                //接受用户发送的关键词<br />

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

                //实践戳<br />

                $time = time();

                //文本发送模板<br />

              $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>";

                //判断XML数据是否为空          <br />

                if(!empty( $keyword ))

                { 

                    //回复类型,如果是"text",代表文本类型<br />

                      $msgType = "text";

                    //回复内容<br />

                    $contentStr = "Welcome to wechat world!";

                    //格式化字符串<br />

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

                    //返回XML数据给手机端<br />

                    echo $resultStr;

                }else{

                    echo "Input something...";

                }

        }else {

            echo "";

        }

    }

我这样设置好后,给测试号发消息时得不到回应,因为我用的是php7.0以上版本,所以,将

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 改为file_get_contents("php://input");即可

相关文章

网友评论

      本文标题:关于responseMsg()设置好后,还是收不到消息

      本文链接:https://www.haomeiwen.com/subject/olesjqtx.html