qq_27774913 2018-09-14 12:35 采纳率: 0%
浏览 2597

各位大神 求微信关注后自动回复图文 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;

    }

}

}

?>

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-09-14 15:35
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘