china-wangyu / wechat
wechat PHP 微信 微信授权 微信用户信息 微信token 微信模板 微信自定义菜单生产 微信JDK 微信关键字回复 微信模板消息发送
This package's canonical repository appears to be gone and the package has been frozen as a result. Email us for help if needed.
    1.0.9
    2018-12-03 10:31 UTC
Requires
- php: >= 7.2.0
 
This package is not auto-updated.
Last update: 2025-09-03 15:49:52 UTC
README
- 微信基础授权
 - 微信用户信息
 - 微信token
 - 微信模板
 - 微信自定义菜单生产
 - 微信JDK
 - 微信关键字回复
 - 微信模板消息发送
 - 基础功能
 
本扩展功能的运行环境要求
PHP5.6以上。 本扩展1.0.5及以上版本,运行环境要求PHP7.2以上。
>### 使用 git 安装
    码云   :git@github.com:china-wangyu/wechat.git
>### 使用 composer  安装
由于众所周知的原因,国外的网站连接速度很慢。因此安装的时间可能会比较长,我们建议通过下面的方式使用国内镜像。打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:
    composer config -g repo.packagist composer https://packagist.phpcomposer.com
使用: 在composer.json添加
"require": {
    "china-wangyu/wechat": "^1.0.0"
},
然后(命令行):
composer update
接口使用说明
接口目录
WeChat         模块目录
├─ Core        核心目录
        ├─Base.php               抽象基类,主要用户放置一些公用的方法体
        
        ├─User.php               获取微信授权、用户openid、用户信息
        
        ├─Token.php              获取微信access_token (考虑token时限,已用 $_SESSION['access_token'] 储存)
        
        ├─Ticket.php             获取微信jsapi_ticket、获取微信JDK签名 (考虑微信jsapi_ticket时限、已用 $_SESSION['jsapi_ticket'] 储存)
        
        ├─Template.php           获取微信所有消息模板、格式化微信消息模板 (考虑微信消息模板变量问题、及消息发送,以将需要参数存放在$变量名['param'])
        
        ├─Send.php               微信模板消息发送、微信关键字回复、微信自定义菜单生成
        
        ├─QrCode.php             微信生成二维码
        
        ├─Menu.php               微信菜单
        
        ├─Material.php           微信素材
        
        ├─Authorize.php          微信授权认证类
        
├─ Extend         依赖目录
         ├─File.php                 文件存储类。
                
         ├─Json.php                 Json返回类。
        
         ├─Request.php              curl请求封装类。
         
         ├─Tool.php              工具类。
         
├─ Lib            第三方目录
         
         ├─phpqrcode.php                 PHP生成二维码类。 
微信用户 User
微信授权、获取 code
    * [code 重载http,获取微信授权]
    * @param  string   $appid           [微信公众号APPID]
    \WeChat\Core\User::code('微信appid');  # 重载微信授权
微信用户 openid
    * [openid 获取用户 OPENID]
    * @param  string  $code                         [微信授权CODE]
    * @param  string  $appid                        [微信appid]
    * @param  string  $appSecret                    [微信appSecret]
    * @param  boolen  $type                         [true:获取用户信息  false:用户openid]
    * @return [array] [用户信息 用户openid]
    \WeChat\Core\User::openid(input('get.code'), '微信appid', '微信appSecret');
微信用户信息 userinfo (1种: 没有获取openid时)
    * [openid 获取用户 OPENID]
    * @param  string  $code                         [微信授权CODE]
    * @param  string  $appid                        [微信appid]
    * @param  string  $appSecret                    [微信appSecret]
    * @param  boolen  $type                         [true:获取用户信息  false:用户openid]
    * @return [array] [用户信息 用户openid]
    \WeChat\Core\User::openid('获取GET方式的参数code', '微信appid', '微信appSecret', true);
微信用户信息 userinfo (2种: 获取openid时)
    * [userInfo 获取用户信息]
    * @param  [type] $access_token   [授权获取用户关键参数:access_token]
    * @param  [type] $openid         [用户openid]
    \WeChat\Core\User::userInfo($access_token, $openid);
微信用户信息 newuserinfo (3种: 获取access_token时)
    * [userInfo 获取用户信息]
    * @param  [type] $access_token   [普通access_token]
    * @param  [type] $openid         [用户openid]
    \WeChat\Core\User::newUserinfo($access_token, $openid);
微信 Token
获取 access_token
    * [gain 获取微信access_token]
    * @param  string   $appid                 [微信AppID]
    * @param  string   $appSecret             [微信AppSecret]
    * @return [string] [微信access_token]
    \WeChat\Core\Token::gain('微信appid', '微信appSecret');  # 获取微信access_token
    
    成功:
            array{
                'access_token'=>'**************************************',
                'expires_in'=> ****,
            }
            
    失败:
        array{
                    'errormsg'=>'*************',
                    'errorcode'=> ***,
                }
微信 Ticket
微信 jsapi_ticket
    * [gain 微信jsapi_ticket]
    * @param  string   $access_token          [微信token]
    * @return [string] [微信jsapi_ticket]
    \WeChat\Core\Ticket::gain('微信普通token');
微信 JDK 签名
    * [sign 获取微信JSDK]
    * @param  [string] $ticket        [获取微信JSDK签名]
    * @return [array]  [微信JSDK]
    \WeChat\Core\Ticket::sign('微信jsapi_ticket');
    
    成功:
        array{
            "errcode"=>0,
            "errmsg"=>"ok",
            "ticket"=>"kgt8ON7yVITDhtdwci0qeQM5xOrtZmRriogQ-yl-zBNBoXs56JmAWkbJVY68uajNBIIR4xa5t_dx9W0X6a-tnQ",
            "expires_in"=>7200,
            "time"=>1543832364
        }
            
    失败:
        array{
            'errormsg'=>'*************',
            'errorcode'=> ***,
        }
微信模板消息 Template
获取所有模板 gain
    * [gain 获取所有消息模板内容]
    * @param  string $accessToken    [微信token]
    * @return [type] [description]
    \WeChat\Core\Template::gain('微信token');
微信推送 Send
关键字推送 keyWord
     * 被动回复消息
     * @param array $triggerConfig 微信消息对象
     * @param array $triggerData   用户数据
     
    \WeChat\Core\Send::trigger($triggerConfig, $triggerData);
    例如: 使用说明见Authorize类使用方法
        
模板消息推送 msg
    * [msg 发送模板消息]
    * @param  string $accessToken [微信token]
    * @param  string $templateid [模板ID]
    * @param  string $openid     [用户openid]
    * @param  array  $data       [模板参数]
    * @param  string $url        [模板消息链接]
    * @param  string $topcolor   [微信top颜色]
    * @return [ajax] [boolen]
    \WeChat\Core\Send::msg($accessToken, $templateid, $openid, $data = [], $url = '', $topcolor = '#FF0000');
微信菜单 Menu
获取菜单 gain
    * [gain 获取菜单]
    * @param  string $accessToken [微信token]
    * @return [array] [微信返回值:状态值数组]
    \WeChat\Core\Menu::gain($accessToken);
设置菜单 set
    * [set 生成菜单]
    * @param  string $accessToken [微信token]
    * 例如:$menu =[
                    [
                         'type'=> 'click', //
                         'name'=> '这是第一级button',
                         'list' => [
                            [
                                 'type'=> 'view',
                                 'name'=> '百度',
                                 'url' => 'http://www.baidu.com',
                             ]
                         ],
                    ],
                     [
                         'type'=> 'miniprogram',
                         'name'=> 'xx小程序',
                         'url' => 'http://www.baidu.com',
                         'appid' => 'asdasdas', 小程序APPID
                         'pagepath' => '/page/index/index', // 小程序页面链接
                     ]
                 ];
    * @param  array   $menu                                  [菜单内容 ]
    * @return [array] [微信返回值:状态值数组]
    \WeChat\Core\Menu::set($accessToken, $menu);
二维码 Qrcode
微信带参二维码 wechat
    * 创建微信带参二维码生成
    * @inheritdoc 详细文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433542
    * @param string $accessToken 授权TOKEN
    * @param string $scene_str 字符串
    * @param string $scene_str_prefix 字符串前缀
    * @param int $type 二维码类型:(小于等于1) = 有效时长30天  (大于等于2) = 永久
    * @return array|bool|mixed
    
    \WeChat\Core\QrCode::wechat(string $accessToken,string $scene_str, string $scene_str_prefix = 'wene_', int $type = 1)
    
    成功:
        array(4) {
          ["ticket"] => string(96) "ticket字符串"
          ["expire_seconds"] => int('时长')
          ["url"] => string(45) "二维码内容"
          ["showUrl"] => string(147) "在线地址"
        }
        
    失败:
        array{
            'errormsg'=>'*************',
            'errorcode'=> ***,
        }
创建二维码 create
        * 生成二维码
        * @inheritdoc 文档说明:http://phpqrcode.sourceforge.net/
        * @param string $text 二维码内容
        * @param bool $filePath    二维码储存路径
        * @param string $level 二维码容错机制
        * @param int $size 点大小
        * @param int $margin   点间距
        * @param bool $saveandprint    保存或打印
        * @return string|void
              
        public static function create(string $text = '',
                                     bool $filePath = false,
                                     string $level = QR_ECLEVEL_L,
                                     int $size = 6,
                                     int $margin = 2,
                                     bool $saveandprint=false)
                                       
        使用方式:
        
        1. 生成二维码,但不生成二维码文件
        $qrocde = \WeChat\Core\QrCode::create('二维码内容');
        
        2. 生成二维码文件
        $qrocde = \WeChat\Core\QrCode::create('二维码内容','文件存放路径');
文件参数储存 File
      * 文件参数储存,可扩展
      * @param string $var  key
      * @param array $val value
    
    // 存值
    \WeChat\Extend\File::param('key','value');
    
    // 取值
    \WeChat\Extend\File::param('key');
微信素材类 Material
获取素材总数 getMaterialCount
    * 获取素材总数
    * @param string $access_token 普通授权token
    * @return array
    
    \WeChat\Core\Material::getMaterialCount($access_token);
获取素材列表 getMaterialCount
    * 获取素材列表
    * @param string $access_token 普通授权token
    * @return array
    
    \WeChat\Core\Material::getMaterialList($access_token);
微信授权认证 抽象 类 Authorize
对接微信开发者模式
使用方式
- 第一步:创建自己的微信开发者对接类继承   微信授权认证 
抽象类Authorize 
    <?php
    
    class Wechat extends \WeChat\Core\Authorize
    {
       /**
        * 设置与微信对接的TOKEN凭证字符
        * Authorize constructor.
        * @param string $token 微信开发模式TOKEN字符串
        * @param string $appID 微信appid
        * @param string $appScret 微信appScret
        * @inheritdoc 详细文档:https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=1833550478&lang=zh_CN
        */
        public function __construct($token, $appID, $appScret)
        {
            parent::__construct($token, $appID, $appScret);
        }
    }
- 第二步:重写微信事件方法和用户输入方法
 
    /**
         * 首次关注事件
         * @return mixed|void
         */
        public function follow()
        {
            // TODO: Implement follow() method.
            $sendMsg = '首次关注,类型:搜索或朋友分享推荐';
            $this->text($sendMsg);
        }
    
        /**
         * 扫码关注事件
         * @return mixed|void
         */
        public function scanFollow()
        {
            // TODO: Implement scanFollow() method.
            $this->text('扫码关注');
        }
    
        /**
         * 点击事件
         * @return mixed|void
         */
        public function click()
        {
            // TODO: Implement click() method.
            $this->text('这个是用户点击事件~');
        }
    
        /**
         * 扫码商品事件
         * @return mixed|void
         */
        public function scanProduct()
        {
            // TODO: Implement scanProduct() method.
            $this->text('用户商品扫码');
        }
    
        /**
         * 扫码事件
         * @return mixed|void
         */
        public function scan()
        {
            // TODO: Implement scan() method.
            $this->text('扫码进入');
        }
    
        /**
         * 用户输入
         * @return mixed|void
         */
        public function input()
        {
            // TODO: Implement input() method.
            $this->text('用户输入' );
        }
可返回消息的模板和方法简介
只在继承微信开发者模式对接类
Authorize里面使用
    $this->userInfo;  // 微信用户信息。
可返回消息的模板和方法简介
只在继承微信开发者模式对接类
Authorize里面使用
- 推送文本消息 
text 
    
    * 发送文本消息
    * @param string $content 回复的文本内容
    
    $this->text($content);
- 推送图片消息 
image 
    
    * 发送图片消息
    * @param string $mediaId 素材ID
    
    $this->image($mediaId)
- 推送音频消息 
voice 
    
    * 发送语音消息
    * @param string $mediaId 素材ID
    
    $this->voice($mediaId)
- 推送视频消息 
video 
    
    * 发送视频消息
    * @param string $mediaId 素材ID
    * @param string $title 视频标题
    * @param string $description   视频消息的描述
    
    $this->video($mediaId, $title, $description)
- 推送音乐消息 
music 
    
    * 发送音乐消息
    * @param string $title 消息标题
    * @param string $description   描述
    * @param string $musicURL  音乐链接
    * @param string $HQMusicUrl    高清音乐URL
    * @param string $ThumbMediaId  缩略图的媒体id,通过素材管理中的接口上传多媒体文件,得到的id
    
    $this->music( $title, $description, $musicURL, $HQMusicUrl, $ThumbMediaId )
- 推送图文消息 
news 
    
    /**
     * 发送图文消息
     * @param array $Articles 图文数组
     * @format 格式 $Articles = array(
                                    array(
                                       'Title'=>'标题',
                                      'Description'=>'注释',
                                      'PicUrl'=>'图片地主(含域名的全路径:图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200)',
                                      'Url'=>'点击图文消息跳转链接'
                                    ),
                                );
     */
    
    $this->news($Articles)
>| 注:如有疑问,请联系邮箱 china_wangyu@aliyun.com
>| 或,请联系QQ 354007048 / 354937820