Wechat库怎么使用

2025-09-27 21:46:22

1、例如:

<font size="4">// 继承Wechat

class TestWechat extends Wechat {

}

// step 1: 创建TestWechat类的实例

$wechat = new TestWechat(array(

    'token' => 'weixin',

    'aeskey' => 'xxx',

    'appid' => 'wx5d1fb434a1652ae8',

    'debug' => true

    ));

// setp 2: 检测消息

$wechat->run();</font>

2、在创建`TestWechat`实例过程中会调用父类`Wechat`的构造函数,这里完成了token的验证,以及请求数据的解析和暂存.下面是对Wechat构造函数的说明.

<font size="4">public function __construct($config=array('token'=>'', 'aeskey'=>'', 'appid'=>'', 'debug' => FALSE)) {

  // 获取创建实例时传进来的阐述

  $token = $config['token'];

  $aeskey = $config['aeskey'];

  $appid = $config['appid'];

  $debug = $config['debug'];

  // 调用token验证函数,如果失败直接退出

  // 无论是验证token还是用户发送消息都会检测token,已提高程序的安全性

  if (!$this->validateSignature($token)) {

    exit('签名验证失败');

  }

  // 检测是否是单纯的token验证请求

  // 如果是   返回echostr并退出

  if ($this->isValidateIncomingConn()) {

    // 网址接入验证

    exit($_GET['echostr']);

  }

  // 如果是用户发送的信息请求,需要验证'HTTP_RAW_POST_DATA'数据

  if (!isset($GLOBALS['HTTP_RAW_POST_DATA'])) {

    exit('缺少数据');

  }

  $this->debug = $debug;

  set_error_handler(array(&$this, 'errorHandler'));

  // 设置错误处理函数,将错误通过文本消息回复显示

  // 检测消息是否加密

  if (isset($_GET['encrypt_type'])) {

    $this->encrypted = $_GET['encrypt_type'] == 'aes';

  }

  // 如果消息加密了,调用函数对消息进行解密

  if ($this->encrypted) {

    $this->msgCryptor = new wxBizMsgCrypt($token, $aeskey, $appid);

  }

  // 将请求消息储存起来备用

  $this->savePostData();

}</font>

3、之后会调用run()函数,run函数会检测微信服务器发送过来的消息类型,然后根据不同的类型,调用Wechat中的对应函数进行处理.因为我们使用的`TestWechat`集成了`Wechat`,我们只需要在`TestWechat`中复写一下用到的函数,就会在接收到相应的消息时调用到我们复写的函数.这也是我们再上一个帖子中复写`onText`函数的原因.

<font size="4">public function run() {

  switch ($this->getRequest('msgtype')) {

    // 如果消息类型为 event

    case 'event':

      switch ($this->getRequest('event')) {

        // 订阅消息

        case 'subscribe':

          $this->onSubscribe();

          break;

        // 退订消息

        case 'unsubscribe':

          $this->onUnsubscribe();

          break;

        //

        case 'SCAN':

          $this->onScan();

          break;

        case 'LOCATION':

          $this->onEventLocation();

          break;

        case 'CLICK':

          $this->onClick();

          break;

      }

      break;

    // 文本消息

    case 'text':

      $this->onText();

      break;

    // 图片消息

    case 'image':

      $this->onImage();

      break;

    // 位置消息

    case 'location':

      $this->onLocation();

      break;

    // 链接消息

    case 'link':

      $this->onLink();

      break;

    // 语音消息

    case 'voice':

      $this->onVoice();

      break;

    default:

      $this->onUnknown();

      break;

  }

}</font>

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢