1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 微信公纵平台基本配置php_PHP实现微信扫码登陆(三)--微信公众平台配置

微信公纵平台基本配置php_PHP实现微信扫码登陆(三)--微信公众平台配置

时间:2023-09-29 16:11:53

相关推荐

微信公纵平台基本配置php_PHP实现微信扫码登陆(三)--微信公众平台配置

1. 公众平台配置

登录微信公众平台

开发--> 基本配置, 将服务器ip12.23.34.45加入到ip白名单中

image.png

验证token

image.png

此时点击提交, 肯定会失败, 因为微信服务器请求PHP服务器, 转发到/accept下, 还没有php路由去处理该请求, 使用laravel编写处理方法, 验证消息的确来自微信服务器

2. 编写验证token逻辑

路由文件web.php

Route::middleware(['weixin.verify'])->group(function (){

// 处理get请求, 验证token, 使用authToken处理

Route::get('accept', 'Auth\WeixinController@authToken');

// 微信服务器发来的post消息, 使用acceptMessage方法处理

Route::post('accept', 'Auth\WeixinController@acceptMessage');

});

中间件weixin.verify, 用于验证消息的确来自微信服务器

app/Http/Middleware/VerifyWeixin.php

namespace App\Http\Middleware;

use Closure;

use Log;

class VerifyWeixin

{

/**

* Handle an incoming request.

*

* @param \Illuminate\Http\Request $request

* @param \Closure $next

* @return mixed

*/

public function handle($request, Closure $next)

{

// 获取到微信请求里包含的几项内容

Log::alert($request->all());

$signature = $request->input('signature');

$timestamp = $request->input('timestamp');

$nonce = $request->input('nonce');

// 微信服务器配置中填写的token, 此处应该加入到配置文件中

$token = 'wodetoken';

// 加工出自己的 signature

$our_signature = array($token, $timestamp, $nonce);

sort($our_signature, SORT_STRING);

$our_signature = implode($our_signature);

$our_signature = sha1($our_signature);

Log::alert($our_signature);

// 用自己的 signature 去跟请求里的 signature 对比

if ($our_signature != $signature) {

return fasle;

}

return $next($request);

}

}

注册中间件

app/Http/Kernel.php

protected $routeMiddleware = [

'weixin.verify' => \App\Http\Middleware\VerifyWeixin::class,

];

控制器逻辑

app/Http/Controllers/Auth/WeixinController.php

/**

* 认真编码 快乐生活

* User: helloJiu

* Date: /11/27

* Time: 13:16

*/

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class WeixinController extends Controller

{

// 通过中间件后, 直接将echostr返回, token验证通过

public function authToken(Request $request)

{

return $request->input('echostr');

}

}

重新提交, token完成验证

验证完全可以在public目录下创建一个php文件去实现该功能, 但是后续的接受微信消息, 如订阅, 扫描, 输入事件等, 也需要使用中间件验证是否是微信服务器发来的请求

3. 启用服务器配置

image.png

这样公众号收到消息后, 微信服务器就会通过post的方式推送到我们自己服务器的accept路由下, 使用Auth\WeixinController@acceptMessage去处理

acceptMessage方法后续编写

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。