一、前言
在上面一章,我们使用原生的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的使用、多客服系统的使用、支付订单的创建、处理支付结果都将在框架中实现。