为什么关注不能自动回复

来源:3-2 接收事件订阅与回复响应消息(二)

qq_倞晨渼景_03988080

2017-04-20 21:28

为什么关注没有自动回复,求大神们指教,代码是找着老师打的。

<?php

header("Content-type: text/html; charset=utf-8"); 

// 本类由系统自动生成,仅供测试用途

class IndexAction extends Action 

{

    public function index()

    {

//$this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p></div><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8');

//获得参数 signature nonce token timestamp echostr

$nonce     = $_GET['nonce'];

$token     = "weixin";

$timestamp = $_GET['timestamp'];

$echostr   = $_GET['echostr'];

$signature = $_GET['signature'];

//形成数组,然后按字典序排序

$array = array($nonce, $timestamp, $token);

sort($array);

//拼接成字符串,sha1加密 ,然后与signature进行校验

$str = sha1( implode( '',$array ) );

if( $str  == $signature && $echostr ){

//第一次接入weixin api接口的时候

echo  $echostr;

exit;

}else

{

$this->responseMsg();

}

public function responseMsg()

{

//1.获取到微信推送过来post数据(xml格式)

$postArr = $GLOBALS['HTTP_RAW_POST_DATA'];

//2.处理消息类型,并设置回复类型和内容

/*<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[FromUser]]></FromUserName>

<CreateTime>123456789</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[subscribe]]></Event>

</xml>*/

$postObj = simplexml_load_string( $postArr );

//$postObj->ToUserName = '';

//$postObj->FromUserName = '';

//$postObj->CreateTime = '';

//$postObj->MsgType = '';

//$postObj->Event = '';

// gh_e79a177814ed

//判断该数据包是否是订阅的事件推送

if( strtolower( $postObj->MsgType) == 'event'){

//如果是关注 subscribe 事件

if( strtolower($postObj->Event )== 'subscribe' ){

//回复用户消息(纯文本格式)

$toUser   = $postObj->FromUserName;

$fromUser = $postObj->ToUserName;

$time     = time();

$msgType  =  'text';

$content  = '欢迎关注我们的微信公众账号'.$postObj->FromUserName.'-'.$postObj->ToUserName;

$template = "<xml>

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

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

<CreateTime>%s</CreateTime>

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

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

</xml>";

$info     = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);

echo $info;

}

    }

}

}

}


写回答 关注

2回答

  • 慕运维201543
    2018-03-01 11:18:24

    $postArr = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");  //最佳解决方式,适用tp所有版本

  • 咕叽
    2017-04-20 23:12:07

    你要把你的代码贴出来,才能看哪里出问题了!

    qq_倞晨渼...

    嗯嗯 代码贴出来了 麻烦帮我看看 谢谢

    2017-04-21 13:10:22

    共 1 条回复 >

PHP实现微信公众平台开发—提升篇

本课程详细讲解了接收微信用户发送的消息和接收订阅关注的事件推送

64949 学习 · 371 问题

查看课程

相似问题