用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1454|回复: 3
收起左侧

[HELP] ci写微信验证通过了但是不自动回复?求大神解答啊!?!

[复制链接]
发表于 2016-8-1 07:32:50 | 显示全部楼层 |阅读模式
  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');

  3. class Index extends CI_Controller {

  4.         public function __construct(){
  5.                 parent::__construct();
  6.         }
  7.         /*微信接入的验证*/
  8.         public function index()
  9.         {
  10.                 $signature = $this->input->get('signature');
  11.                 $nonce = $this->input->get('nonce');
  12.                 $timestamp = $this->input->get('timestamp');
  13.                 //第一次验证才会有,其他时候用户发送时候没有
  14.                 $echostr = $this->input->get('echostr');

  15.                 $token = "MYTOKEN";

  16.                 $arr  = array($nonce,$timestamp,$token);
  17.                 sort($arr);
  18.                 $str = implode('', $arr);
  19.                 $str = sha1($str);


  20.                 if($str == $signature && $echostr){
  21.                         //如果第一次接入时候
  22.                         echo $echostr;
  23.                         exit;
  24.                 }else{
  25.                         //用户访问时候也要验证,但是没有echostr
  26.                         $this->responseMsg();
  27.                 }
  28.         }
  29.         /*微信接受消息回复*/
  30.         public function responseMsg(){
  31.                 //用于得到php不能识别的post的数据
  32.                 $postArr = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");
  33.                
  34.                 $postObj = simplexml_load_string($postArr,'SimpleXMLElement', LIBXML_NOCDATA);
  35.                
  36.                 if($postObj){
  37.                         $MsgType = $postObj->MsgType;
  38.                         if($MsgType=='text' ){
  39.                                 $template = "<xml>
  40.                                                  <ToUserName><![CDATA[%s]]></ToUserName>
  41.                                                  <FromUserName><![CDATA[%s]]></FromUserName>
  42.                                                  <CreateTime>%s</CreateTime>
  43.                                                  <MsgType><![CDATA[%s]]></MsgType>
  44.                                                  <Content><![CDATA[%s]]></Content>
  45.                                                  </xml>";
  46.                                 $toUser = $postObj->FromUserName;
  47.                                 $fromUser = $postObj->ToUserName;
  48.                                 $createTime = time();
  49.                                 $msgType = 'text';
  50.                                 $content = "欢迎您来见证我和仙女的爱情!";

  51.                                 $backInfo = sprintf($template,$toUser,$fromUser,$createTime,$msgType,$content);
  52.                                 echo $backInfo;
  53.                         }
  54.                 }
  55.                 else{
  56.                         echo '还未获到参数';
  57.                 }
  58.         }
  59. }
复制代码

是什么地方出了错误啊?还不好调试啊?!
 楼主| 发表于 2016-8-1 07:33:36 | 显示全部楼层
也没有报错啊?搞得郁闷了!?!?!
发表于 2016-8-1 09:12:57 | 显示全部楼层
什么都不做,写个固定的字符串直接回复试试,另外你那个验证逻辑有点问题,如果签名验证不通过,你还是会自动回复,应该是验证通过了,才能有所谓的第一次验证或者回复其他消息
发表于 2016-8-8 17:25:37 | 显示全部楼层
下载一个wechat封装类,快捷省事,而且还很方便很全

本版积分规则