各位大神 求微信关注后自动回复图文 PHP代码

我用的如下代码。。。不知道哪里错了 PHP小白 token验证是通过的 目的是关注公众号后自动发一个图文 求助啊 正确的应该怎么写

<?php
define("TOKEN", "weixin");

$wechatObj = new wechatCallbackapiTest();

$wechatObj->valid();

class wechatCallbackapiTest
{

public function valid()

{

    $echoStr = $_GET["echostr"];


    //valid signature , option

    if($this->checkSignature()){

        echo $echoStr;

        exit;

    }

}


public function responseMsg()

{

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

    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];


    //extract post data

$tmpstr = $postArr;

    //处理消息,并设置回复类型
    $postObj = simplexml_load_string($postArr);
    if(strtolower($postObj->MsgType)=='event'){


             if (strtolower($postObj->MsgType) == "text" && trim($postObj->Content == "单图文")){

          $toUser    =  $postObj->FromUserName;

          $fromUser  =  $postObj->ToUserName;

          $array = array(
              array(
                "title"=>"XXX",
                "description"=>"XXXXXXX",
                "picUrl"=>"httpXXXXn1.jpg",
                "url"=>"httpsXXX.com/",
              ),
          );

          $template  =  "<xml>
                        <ToUserName><![CDATA[%s]]></ToUserName>
                        <FromUserName><![CDATA[%s]]></FromUserName>
                        <CreateTime>%s</CreateTime>
                        <MsgType><![CDATA[%s]]></MsgType>
                        <ArticleCount>".count($array)."</ArticleCount>
                        <Articles>";

          foreach ($array as $key => $v) {
              $template  .= "<item>
                            <Title><![CDATA[".$v['title']."]]></Title>
                            <Description><![CDATA[".$v['description']."]]></Description>
                            <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
                            <Url><![CDATA[".$v['url']."]]></Url>
                            </item>";
          }


          $template.= "</Articles></xml>";

          $time     = time();

          echo  sprintf( $template,$toUser,$fromUser,$time,"news");
 }else {

        echo "";

        exit;

    }

}

        }

private function checkSignature()

{

    $signature = $_GET["signature"];

    $timestamp = $_GET["timestamp"];

    $nonce = $_GET["nonce"];


    $token = TOKEN;

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

    sort($tmpArr);

    $tmpStr = implode( $tmpArr );

    $tmpStr = sha1( $tmpStr );


    if( $tmpStr == $signature ){

        return true;

    }else{

        return false;

    }

}

}

?>

0

2个回答

0

<?php
header("Content-type: text/html; charset=utf-8"); 
$nonce = $_GET['nonce'];
$token = 'winxin';
$timestamp = $_GET['timestamp'];
if (isset($_GET['echostr'])) {
    if (bindServerCheck()) {
        echo $_GET['echostr'];
    }
    exit();
}
responseMsg();

 //消息回复
function responseMsg() {
    //1.获取到微信推送过来post数据(xml格式)
    $postArr = $GLOBALS['HTTP_RAW_POST_DATA'];
    //2.处理消息类型,并设置回复类型和内容
    $postObj = simplexml_load_string($postArr, 'SimpleXMLElement', LIBXML_NOCDATA);
    //判断该数据包是否是订阅de事件推送
    if (strtolower($postObj->MsgType) == 'event') {
        //如果是关注 subscribe事件
        if (strtolower($postObj->Event) == 'subscribe') {
            $toUser = $postObj->FromUserName;
            $fromUser = $postObj->ToUserName;
            $time = time();
            $msgType = 'text';
            $content = '欢迎关注我的微信公众号 test 123';

 
             //修改为
              if (is_utf8($content)) {
                $content = $content;
              } else {
               $content = iconv('gb2312', 'UTF-8//IGNORE', $content);
              }

            $template = "
                            <![CDATA[%s]]>
                            <![CDATA[%s]]>
                            %s
                            <![CDATA[%s]]>
                            <![CDATA[%s]]>
                            ";
            $info = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
            echo $info;
        }
    }
}

// 开发者模式绑定校验
function bindServerCheck($token) {
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    $tmpArr = array(
        $token,
        $timestamp,
        $nonce
    );
    sort($tmpArr);
    $tmpStr = implode($tmpArr);
    $tmpStr = sha1($tmpStr);
    if ($tmpStr == $signature) {
        return true;
    } else {
        return false;
    }
}

  function to_utf8($in) 

        if (is_array($in)) { 
            foreach ($in as $key => $value) { 
                $out[to_utf8($key)] = to_utf8($value); 
            } 
        } elseif(is_string($in)) { 
            if(mb_detect_encoding($in) != "UTF-8") 
                return utf8_encode($in); 
            else 
                return $in; 
        } else { 
            return $in; 
        } 
        return $out; 

 function is_utf8($str)
{
  return preg_match('//u', $str);
}

?>

0
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
微信公众号新关注后自动回复8条图文外连完整PHP源码
微信公众号新关注后自动回复8条图文外连完整PHP源码,可以用此源码直行涨粉其它号
微信公众平台消息自动回复+图文自动php
微信公众平台消息自动回复+图文自动php。简答的基础案例代码,即拿即用!
微信公众号添加关注后自动回复图文信息
登录到微信公众号的后台后,在左侧找到自动回复的按钮,并点击进入。如果只是想在公众号被关注后自动推送纯文字不含图片的的信息的话,直接在右侧被添加自动回复一项下面设置就可以了。如果希望回复的是图文信息,那么接着往下看。 点击关键词自动回复,在出现的页面中点击下部的添加规则按钮。 步骤阅读 在规则名后的输入框中输入规则名称,名称可以任意,
微信公众号首次关注自动回复图文消息
一、 进入关键词自动回复添加规则 二、 修改规则名为任意字符,如“图文”(必填) 三、 添加关键词,输入代码 “Hello2BizUser”,点击确定 四、 点击图文符号,并勾选所需推送图文 五、 点击保存(可能会出现短暂白屏,属正常现象)
关于微信自动回复图文消息
回复图文消息需要在前台页面多加入几个字段,标题,内容,访问地址......我们需要建一个news表,用来储存表单提交的数据,回复的关键字依然放在rlue表中。在后台写一个方法replynews,代码如下:public function replyNews(){ if(IS_GET){ $this-&amp;gt;display(); }else{ $result=I('post.');...
微信公众号添加关注后自动回复图文信息(素材)
公众号在被添加关注后其实不仅可以回复单纯的文字,还有一个效果更好的方式是直接回复图文,在图文信息中传达你的感谢和说明一些公众号的情况。那么微信公众号添加关注后怎么自动回复图文信息?下面小编就为大家介绍一下,一起来看看吧! 方法/步骤 1、登录到微信公众号的后台后,在左侧找到自动回复的按钮,并点击进入。如果只是想在公众号被关注后自动推送纯文字不含图片的的信息的话,直接在右侧被添加自动
PHP微信开发---简单的文本自动回复
首先,先去微信公众平台注册一个账号(注册要填的东西挺多的),注册好之后,登录进去。 可以看到左侧的“开发者中心”,开启开发者中心前好像还要你完善一些资料,按照步骤完善即可。进入开发者中心之后,先去编辑 修改配置,修改配置的时候,注意: URL是你自己的域名下的PHP脚本(往下读有该脚本的demo),该脚本用于和微信接口对接。比如http://w
微信关注 自动回复 关注消息 php
&amp;lt;?phpheader(&quot;Content-type: text/html; charset=utf-8&quot;); $nonce = $_GET['nonce'];$token = 'winxin';$timestamp = $_GET['timestamp'];if (isset($_GET['echostr'])) {    if (bindServerCheck()) {        ec...
微信公众号开发--关注后自动回复(Java记录篇)
转载自 http://blog.csdn.net/lyq8479/article/details/8944988 文中所用到的jar dom4j XStream的jar包 扫描下方二维码可关注 你我杂志刊 关注或者 微信搜索公众号 你我杂志刊 开发者通过signature对请求进行校验,若确认此次校验来自微信服务器,请原样返回echostr参数内容,则接入成功,否则接入失败! 打开IDE
【微信开发】公众号自动回复文字和图文链接
需求在公众号内的输入任意文字,文字相关的第三方网站链接实现简单后台设置我们在微信公众平台上,是可以进行简单的自定义消息回复的。这里的显然不能满足我们的需求。配置服务器配置域名略配置测试服务器略。和一般我们配置项目没有区别,所以不再赘述。本次我们的测试域名是 http://wxtest.coderfix.cn/index.php验证Token在微信的公众后台的开发 / 基本配置 / 填写服务器配置中我