我虽然已经用微信做过很多事情,但是微信的实现不是我弄的,是同事弄好服务与微信的交互,然后我直接调用代码即可,比如 发送消息,比如发送红包(已超过百万RMB),等等!所以这次我想自己试一试!
同事的微信包是自己找的代码,然后自己封装的,我没那么多时间弄(晚上回家写会代码),所以直接用现成的吧!安正超
的包!
Laravel5.4
Mac
下的docker
环境根据文档操作!
Overtrue\LaravelWechat\ServiceProvider::class,
请修改应用根目录下的 config/wechat.php 中对应的项即可;
‘EasyWeChat’ => Overtrue\LaravelWechat\Facade::class,
WechatController
,并写好路由路由:
Route::any(‘/wechat’, ‘WechatController@serve’);
<?php
/**
* Created by PhpStorm.
* User: zhu
* Email: ylsc633@gmail.com
* Date: 2017/11/16
* Time: 下午10:44
*/
namespace App\Http\Controllers\Wechat;
use App\Http\Controllers\Controller;
use EasyWeChat\Foundation\Application;
class WechatController extends Controller
{
protected $app;
public function __construct()
{
$this->app = new Application(config('wechat'));
}
public function serve()
{
$server = $this->app->server;
$server->setMessageHandler(function($message){
return "叶落山城秋";
});
$this->log('this is log by myself. you can use Log what with Laravel');
return $server->serve();
}
}
config/wechat.php
或者在 .env
里添加也可以WECHAT_TOKEN=wechat
note: 这个token随意写
进入你微信公众号的测试号(或者认证的号,功能多)
我以测试号为例:
点击修改:接口配置信息
URL: 你的域名/wechat
token: wechat(上面你随意写的那个,必须一样)
点击修改,如果可以,则通过!
如果token不通过,可能是你服务器配置没有对,你可以试试在浏览器里访问一下这个网址,如果有日志,说明路径没有错,如果日志有问题,可能是你路由设置的问题了!
nginx
日志,发现全部301跳转了JS接口安全域名
填 你的域名就行了,不带http/https
WECHAT_APPID=测试号里的appID
WECHAT_SECRET=测试号里的appsecret
发现一直报错:
该公众号提供的服务出现故障,请稍后再试
按照一般情况会给我返回 叶落山城秋
的
最后我解决了!
有这么写情况!
laravel的 csrf
,因为laravel框架自带了这个,微信请求肯定没有这个,所以不成功!所以你要么关了csrf
,要么,把微信请求的这个地址放在设置外!
域名设置了https
,设置了https
,本来是80端口,全部301走了443端口,而微信要求的是80端口!所以,切回80或者再弄个域名指向这吧!
其实微信这一套很好理解
用户 <-> 微信 <-> 你的服务器
三者之间!
用户给微信交互,微信通过上面那个 你的域名/wechat
发送给你,然后你处理后,返回响应给微信,微信再发给用户,有时候是你主动推送给微信,微信给用户!就这样!
本站(PHP --> Golang)已重构,代码开源
当你能力不能满足你的野心的时候,你就该沉下心来学习