微信公众号开发之连简单的自动回复都不能实现

在我的歌声里 发布于 2017/02/04 13:58
阅读 605
收藏 1

各位网友:

        我们公司安排我们做微信公众号接口开发,就是由编辑模式进入开发模式,接入自己的服务器。所以我就去图书馆借了本书《微信公众平台搭建、开发与实践指南》照着搭建环境和敲代码,但是我发现个问题:我申请的测试公众号可以成功接入服务器,但是无法实现自动回复这个最基本的功能,导致我无法继续往下实验。

        服务器:申请的新浪云(未实名认证),用的是免费应用,模板 php 5.3,我使用的是在线编辑模式。

        语言:php

        就是我发现个问题,如果我用书中自动回复的代码,发消息给公众号,没有任何回复。

    但是我用百度上的代码进行同样操作,公众号会回复:该公众号无法提供服务,请稍后再试。是否可以说是百度的代码有问题?

我怀疑是否是我没实名认证,不过我用实名认证的百度云服务器,svn下载和提交代码,也不能实现啊。现在处于抓狂中。

    希望有过这方面经验的网友可以给予指导和解答,谢谢。

    以下代码是成功接入服务器之后实现自动回复的代码

<?php

//经测试,没成功,微信号提示:该公众号暂时无法提供服务,请稍后再试
//简单案例:自动回复消息
//header('content-type:text');
define("TOKEN", "weixin");    //定义token
$wechatObj = new wechat_php();   //生成类实例
$wechatObj->responseMsg(); //调用类的校验方法

class wechat_php
{
    public function valid()
    {/* 
        $echoStr = $_GET["echostr"];   //获取GET请求的参数echostr
    
        //校验signature
        if ($this->checkSignature()){   //调用校验方法
            echo $echoStr;
            exit();
        } */
    }
    
  
  //校验方法
  private function checkSignature()
  {
     /*  $signature = $_GET["signature"];    //获取GET请求的参数signature
      $timestamp = $_GET["timestamp"];    //获取GET请求的参数timestamp
      $nonce = $_GET["nonce"];            //获取GET请求的参数nonce
      $token = TOKEN;                     //TOKEN常量保存设置的token值
      $tmpArr = array($token,$timestamp,$nonce);   //将三个参数保存到数组中
      sort($tmpArr);                  //将数组中的三个数据排序
      $tmpStr = implode($tmpArr);       //将数组中的三个数据排成一个字符串
      $tmpStr = sha1($tmpStr);        //将字符串进行SHA-1散列运算
  
      if($tmpStr == $signature){
          return true;
      }else{
          return false;
      }
   */
  }
  
  public function responseMsg()  //响应用户信息
  {
      //获取微信服务器POst请求中的数据
      $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
  
      if (!empty($postStr))
      {
          $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
          //微信用户名
          $fromUsername = $postObj->FromUserName;
          //开发者微信号
          $toUsername = $postObj->ToUserName;
          //文本消息内容
          $keyword = trim($postObj->Content);
  
          $time = time();
  
          //回复消息的XML格式
          $textTpl = "<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[image]]></MsgType>
            <Content><![CDATA[%s]]></Content>
            <FuncFlag>0</FuncFlag>
            </xml>";
  
          if(!empty( $keyword ))            //消息不为空
          {
              $msgType = "text";          //回复消息的类型
  
              $contentStr = "谢谢你关注我!";  //回复的内容
  
              $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,
                  $msgType,$contentStr);
  
              echo $resultStr;
  
          }else {
              echo "请输入。。。";
          }
      }else{
          echo "";
          exit();
      }
  }

}
?>

 

加载中
0
miss_all
miss_all

腾讯的东西,你去问百度干嘛,微信公众号的文档虽然烂。不过应该也能看吧

去这里看看,不知道对你有没有用 https://mp.weixin.qq.com/wiki

0
d
dark2010

https://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html

返回顶部
顶部