Yii2 整合 EasyWechat 4.0版本以上 [ 2.0 版本 ]
网上搜索了下,max_wen的整合版本,发现easywechat太老了,现在最新的easywechat都4.0以上了,很多地方不符合,担心3.0的版本和微信的官方sdk有不匹配的地方,就单独调用easywechat。
先使用
1 composer require "overtrue/wechat:~4.0" -vvv
更新最新版本,注意php也要7.0以上,变更版本后,最好查询下composer使用的php环境变量是不是最新的,大坑1,否则你是一直更新不了最新的easywechat4.0版本
2 公众号的开发者配置部分就省去不说了,网上有很多教程。
3 大坑2 在任何一个控制器的action里面,测试以上代码,发现测试不通,web访问发现不是xml数据,百般测试后,发现只需要官方的代码$response->send();
的最后面增加一个exit();
,结束程序运行,因为$response->send()
本身就是输出xml数据了,yii2框架也要输出,本来完整的xml数据就不完整了,所以xml解析不正确。
4 大坑3 单独测试官方测试的server.php
文件,不通过yii2,需要增加这行 require __DIR__.'/../../vendor/autoload.php';
这个也是花钱看官方的视频文件才知道,这个估计是官方留的另外一个吭了,不增加这个代码就提示找不到Factory;
5 大坑4 到这里,开发者账户是能配置通过了, token也响应正确,再测试消息,发现还是不通,仔细分析日志后,发现接受不到数据,就怀疑是不是post和get的问题,想起yii2 有个csf post验证,关闭 $enableCsrfValidation=fasle;
再继续测试,完美解决。
仅把淌坑简历发布到网上,减少大家的学习成本。
xyhs 上海
最后登录:2020-08-08
在线时长:6小时14分
- 粉丝8
- 金钱120
- 威望20
- 积分380
共 5 条评论
easywechat4.0有Yii2的扩展包吗
有的 不过版本比较老 是3.0~的,可以直接下载4.0的easywechat扩展,然后直接调用
Yii::$app->response->content = $response->getContent();// 格式化好的 XML Yii::$app->end();
notify 返回响应,待验证
我都是直接
return $response
的,官方文档有说这个。说是框架不能用$response->send()
yii 2.0.15 会报 header 已发送异常
@hobart 惊了。
所以要exit