初始化微信公众号项目

一、前言

在上面一章,我们使用原生的PHP简单对接了微信公众号,但实际项目中,肯定是使用框架来做的,毕竟框架对参数的过滤,SQL的参数绑定都做了处理,还有很多方便的地方是我们使用原生PHP没有的。

这里,我们将本次微信公众号项目框架选择为Yii2。

二、创建项目

1、安装yii2框架
composer create-project --prefer-dist yiisoft/yii2-app-basic wechat
2、为项目添加easywechat composer包
composer require overtrue/wechat:~4.0 -vvv
3、修改nginx配置文件
# 修改项目目录
root   /data/wechat/web;

# 将 location / 这段变为下面的内容
location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

不要忘记重启Nginx。

4、让项目支持pathinfo格式的url

类似于这样的格式:https://wechat.haveyb.com/site/index

修改config/web.php,将urlManager数组注释打开,并将enablePrettyUrl设置为true

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
    ],
],
5、创建controllers\base\WechatBaseController.php

<?php

namespace app\controllers\base;

use EasyWeChat\Factory;
use Exception;
use yii\base\Controller;

class WechatBaseController extends Controller
{
    /**
     * 仅用于给微信公众号确认服务器能够正常响应
     *
     * @throws Exception
     */
    public function actionIndex()
    {
        $config = [
            'app_id' => 'wx3985213fe939a31f',
            'secret' => '778ba9fab544d242dcf5029b2e8c1a98',
            'token' => 'haveTOKEN',
            'response_type' => 'array',
            //...
        ];

        $app = Factory::officialAccount($config);

        $response = $app->server->serve();

        // 将响应输出
        $response->send();exit;
    }
}
6、修改测试号中的配置:

 

三、规整项目结构

1、配置文件

Yii框架本身的配置文件都在config目录下,可以通过Yii::$app->params来读取params.php下具体的参数,但是我们整个项目不可能把所有配置都写在一个配置文件里,这样太乱了,因此我们这样修改:

config/params.php

<?php

// 微信配置相关
$wechatConfig = require __DIR__ . '/wechat.php';

// 其他配置

// 最后通过array_merge合并,注意,配置键必须带业务前缀,比如微信相关的配置,比如是wechat_,参考config/wechat.php

return array_merge($wechatConfig);

config/wechat.php

<?php

return [
    // 微信公众号账号相关配置
    'wechat_official_account' => [
        'app_id' => 'wx3985213fe939a31f',
        'secret' => '778ba9fab544d242dcf5029b2e8c1a98',
        'token' => 'haveTOKEN',
        'response_type' => 'array',
        //...
    ],
    // 微信支付
    'wechat_payment' => [

    ],
    // 小程序
    'wechat_mini_program' => [

    ],
    // 开放平台
    'wechat_open_platform' => [

    ],
    // 企业微信
    'wechat_work' => [

    ],
    // 企业微信第三方服务商
    'wechat_open_work' => [

    ],
    // 小微商户
    'wechat_micro_merchant' => [

    ],
];
2、controller及service目录规划
controllers
    base
        WechatBaseController.php
    officialAccount
        UserController.php
        MessageController.php
        ...
    payment
        ...

services
    common
        CommonService.php
    officialAccount
        UserService.php
        MessageService.php
        ...

 

四、总结

到这里,就完成了从原生到框架的转移,后面的包括网页授权、接收回复消息、公众号素材管理、公众号用户管理、自定义菜单、消息转发到多客服、群发消息、模板消息、二维码的使用、JSSDK的使用、多客服系统的使用、支付订单的创建、处理支付结果都将在框架中实现。