xyhs 2018-03-04 18:01:16 8759次浏览 5条评论 3 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;再继续测试,完美解决。

仅把淌坑简历发布到网上,减少大家的学习成本。

觉得很赞
  • 评论于 2018-03-20 09:29 举报

    easywechat4.0有Yii2的扩展包吗

  • 评论于 2018-03-26 14:09 举报

    有的 不过版本比较老 是3.0~的,可以直接下载4.0的easywechat扩展,然后直接调用

  • 评论于 2018-04-08 00:28 举报
    Yii::$app->response->content = $response->getContent();// 格式化好的 XML
    Yii::$app->end();
    

    notify 返回响应,待验证

  • 评论于 2018-04-08 21:08 举报

    我都是直接return $response的,官方文档有说这个。说是框架不能用$response->send()

    2 条回复
    评论于 2018-04-09 16:31 回复

    yii 2.0.15 会报 header 已发送异常

    评论于 2018-04-09 20:44 回复

    惊了。

  • 评论于 2018-06-21 16:17 举报

    所以要exit

您需要登录后才可以评论。登录 | 立即注册