laravel结合easyWeChat的使用
工欲善其事必先利其器
框架要求
Laravel>= 5.1安装
Laravel < 5.8
composer require “overtrue/laravel-wechat:~4.0”
Laravel >= 5.8
composer require “overtrue/laravel-wechat:~5.0”
配置
Laravel 应用
1.在 config/app.php 注册 ServiceProvider 和 Facade (Laravel 5.5 + 无需手动注册)
'providers' => [// ...Overtrue\LaravelWeChat\ServiceProvider::class,
],'aliases' => [// ...'EasyWeChat' => Overtrue\LaravelWeChat\Facade::class, ],
2.创建配置文件:
php artisan vendor:publish --provider="Overtrue\LaravelWeChat\ServiceProvider"
3.修改应用根目录下的 config/wechat.php 中对应的参数即可。
4.每个模块基本都支持多账号,默认为 default。
使用
在中间件 App\Http\Middleware\VerifyCsrfToken 排除微信相关的路由,如:
protected $except = [// ...'wechat',
];
下面以接收普通消息为例写一个例子:
假设您的域名为 overtrue.me 那么请登录微信公众平台 “开发者中心” 修改 “URL(服务器配置)” 为: http://overtrue.me/wechat。
路由:
Route::any('/wechat', 'WeChatController@serve');
注意:一定是 Route::any, 因为微信服务端认证的时候是 GET, 接收用户消息时是 POST !
注意:在laravel中有token验证,所以有两种方法
1.在将csrf验证关闭(不安全,不推荐) 详情:http://www.cnblogs.com/HD/p/4555369.html
2.我们在项目中使用:
在中间件VerifyCsrfToken.php中修改内容为:
protected function tokensMatch($request)
{// If request is an ajax request, then check to see if token matches token provider in// the header. This way, we can use CSRF protection in ajax requests also.$token = $request->ajax() ? $request->header('X-CSRF-TOKEN') : $request->input('_token');return $request->session()->token() == $token;
}public function handle($request,\Closure $next){//todo:需要在添加了登录验证之后,取消if($request->method() == 'POST'){return $next($request);}return parent::handle($request,$next); }
然后在vue中的bootstrap.js中的引入axios中添加
window.axios.defaults.headers.common = {'X-CSRF-TOKEN': document.querySelector('meta[name="X-CSRF-TOKEN"]').content,'X-Requested-With': 'XMLHttpRequest'
};
在index.blade.php中添加
<meta name="X-CSRF-TOKEN" content="{{csrf_token()}}">
关于laravel 的 csrf token的更多详情,请看:http://www.cnblogs.com/zhuchenglin/p/7723997.html
以上基本可以配置完成,主要在于laravel的token验证。
创建控制器 WeChatController:
<?phpnamespace App\Http\Controllers;use Log;class WeChatController extends Controller
{/*** 处理微信的请求消息** @return string*/public function serve(){Log::info('request arrived.'); # 注意:Log 为 Laravel 组件,所以它记的日志去 Laravel 日志看,而不是 EasyWeChat 日志$app = app('wechat.official_account');$app->server->push(function($message){return "欢迎关注 overtrue!";});return $app->server->serve();}
}
然后将这个代码上传到云服务器(注:服务器一定要在公网中(或通过某种工具使自己的电脑映射到公网上),否则微信无法验证)
默认配置好虚拟主机,(必须用80端口(http://)/443端口(https://)),指向:项目名/public
然后打开微信公众号后台(我用测试账号来说明问题,如果是真正的服务号的话,要开启开发者模式)
填写的url要能找到你那个控制器中的serve()方法
Token要和上面的配置文件中填写的一样
如果按照上面的步骤一步一步来的话,应该可以保存成功(即初步验证成功)
laravel结合easyWeChat的使用相关推荐
- Laravel使用EasyWechat 进行微信支付
微信支付和EasyWeChat这个包都是巨坑, 文档写的稀烂, 记录下防止以后又重复踩坑: 安装教程在这: https://www.jianshu.com/p/82d688e1fd2a 转载于:htt ...
- 基于laravel+workerman+easywechat的公众号客服系统
1.流程:用户在公众号发送文本消息,通过公众号消息模板推送通知给客服,客服点击通知,跳转小程序与用户对话.用户可以直接在公众号内与客服对话. 2.所用技术栈: "php": &qu ...
- 微信wechat.class.php,laravel使用组件实现微信网页授权登入
laravel框架中的实现简单实现微信网页授权登入 首先引入基于laravel的easywechat的组件,laravel版本5.8 $ cd laravel $ composer require & ...
- 微信网页授权登入--laravel组件 laravel-wechat调用
组件地址:https://github.com/overtrue/laravel-wechat laravel框架中的实现简单实现微信网页授权登入,首先引入基于laravel的easywechat的组 ...
- Laravel微信Native支付、微信jsapi支付
** 之前一直使用thinkphp做开发,偶然的一次机会运用了laravel框架并且做了一个微信扫码支付功能,发现laravel扩展功能大大超过了tp,接下来分享一下laravel的EasyWeCha ...
- Laravel + EasyWeChat 微信登陆功能
基于:Laravel 5.8.*,以下代码可能存在一些继承函数,详情可访问开源项目:Github.Gitee. 第一步:去微信公众号中设置和获取信息 注意:公众号必须已经认证,且必须拥有网页授权获取用 ...
- Laravel 5.8+EasyWeChat 6.0开发公众号基本要求和文档
Laravel 5.8+EasyWeChat 6.0开发公众号基本要求和文档 Laravel版本5.8 PHP版本要求>=7.4 overtrue /laravel-wechat 6.0扩展包 ...
- Laravel框中使用EasyWeChat 使用网页授权
微信公众号授权原理及步骤 1.EasyWeChat 是一个由 @overtrue 基于 MIT 协议开发的高质量开源微信第三方 SDK.EasyWeChat 的安装非常简单,因为它是一个标准的 Com ...
- laravel+easywechat对接微信公众号自动回复图文消息
laravel+easywechat对接微信公众号自动回复图文消息 图文回复消息创建 对接数据库根据关键词返回图文信息 前面我们对接配置了微信公众号,laravel5.4 对接微信公众号使用larav ...
最新文章
- golang中的目录操作
- JavaWeb学习之路——SSM框架之Spring(四)
- param.requires_grad = False的作用
- mvc.net分页查询案例——实体层(HouseModel.cs)
- stm32手册_STM32的GPIO概念简介
- MySql中的内外联结查询
- 关于Camel In Action 的理解
- python实现界面自由切换_写了个播放器的界面,可以9,4,1窗口自由切换,谁用拿走吧...
- Benchmark与Profiler---性能调优得力助手
- UCRT: VC 2015 Universal CRT, by Microsoft
- java fadein_原生JS实现 fadeIn / fadeOut 方法
- 我和宁夏日报 【白述礼】
- 2017年数据库技术盘点
- v-model 自带绑定的number 、lazy 、debounce属性
- python进行整数计算_零基础学python_05_数字(整数+浮点数)
- 阿里云播放器AliyunPlayer的走马灯组件的位置
- 【原创】CSDN·Markdown·KaTex/LaTex 用法小全
- PHP开发基于Mirai的QQ机器人
- Instance Tunnel 使用
- 微信群管理工具哪个好?最安全的微信群管理工具推荐!