在使用Composer安装yii2-wx时出现新版无法安装解决方案

阅读 22
收藏
2018-09-27
原文链接:nai8.me

使用Composer进行安装

你可以使用composer进行自动安装和升级,北哥也推荐你这样做。

composer require "abei2017/yii2-wx"

如果composer出现问题,请在后面添加 -vvv 参数,这样可以看到具体报错信息。

composer require "abei2017/yii2-wx" -vvv

安装成功后yii2-wx会存储到程序的vendor/abei2017文件夹下。

使用composer的时候,不建议使用国内镜像,国外的虽然慢但是版本不会有问题。如果你非要使用国内镜像,最好多尝试几个,找个稳定的。

一般镜像版本同步不全的时候会有类似报错

- The requested package abei2017/yii2-wx 1.3.0 exists as abei2017/yii2-wx[dev-master, v1.0, v1.1, v1.1.1] but these are rejected by your constraint.

人工安装

如果你的环境无法使用composer那也没关系,可以进入 下载页面 下载对应版本后人工部署,步骤如下:

  1. 将安装包解压放到程序某目录下(比如新建一个ext文件夹)
  2. 打开yii2的config/web.php文件增加一个别名
'aliases' => [
    'abei2017/wx'   => '@app/ext/yii2-wx/src',
],

提醒:别名和组件是同一级,不要放错。我们使用别名的主要目的是可以正常的引用。

目录结构

无论是自动安装还是人工安装,yii2-wx的目录结构都是一样的,如下

yii2-wx
- src
-- core //核心文件
-- helpers //帮助文件
-- mini //小程序接口
-- mp //公众号接口
-- Application.php //入口文件
- composer.json
- README.md

配置

按照上面的步骤你已经将yii2-wx成功安装到你的yii2程序中,在使用之前我们需要配置下。

'wx'=>[
    //  公众号信息
    'mp'=>[
        /**
         * 账号基本信息,请从微信公众平台
         */
        'app_id'  => '',         // AppID
        'secret'  => '',     // AppSecret
        'token'   => '',          // Token
        'encodingAESKey'=>'',// 消息加解密密钥,该选项需要和公众号后台设置保持一直
        'safeMode'=>0,//0-明文 1-兼容 2-安全,该选项需要和公众号后台设置保持一直

        'payment'=>[
            'mch_id'        =>  '',
            'key'           =>  '',
            'notify_url'    =>  '',
            'cert_path'     => '', // XXX: 绝对路径!!!!
            'key_path'      => '',      // XXX: 绝对路径!!!!
        ],

        'oauth' => [
            'scopes'   => 'snsapi_userinfo',
            'callback' => '',
        ],
    ],
    'mini'=>[
        'app_id'  => '', 
        'secret'  => '', 
        'payment' => [
            'mch_id'        => '',
            'key'           => ''
        ],
    ]
],

你只要保证mini和mp内数组的key不变即可。比如现在我要生成一个临时二维码,可以如下代码

$app = new Application(['conf'=>Yii::$app->params['wx']['mp']]);
$qrcode = $app->driver("mp.qrcode");

$result = $qrcode->intTemp(3600,9527);

就这样实现了,我们总是先实例化一个Application并传递参数(公众号/小程序),然后使用driver来驱动对应接口的对象并使用对应方法。

相关文献

评论