为了账号安全,请及时绑定邮箱和手机立即绑定

为什么关注不能自动回复

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

<?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 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

qq_倞晨渼景_03988080 提问者

嗯嗯 代码贴出来了 麻烦帮我看看 谢谢
2017-04-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP实现微信公众平台开发—提升篇
  • 参与学习       64946    人
  • 解答问题       371    个

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

进入课程

为什么关注不能自动回复

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号