基本信息
- laravel5.4
- 西部数码云服务器
- 微信开放平台测试号
laravel开发重要的是路由,请求的大多数是POST和GET,在微信开发中需要注意的是:微信验证token的请求是GET方式,但是真正介入微信服务器采用的是POST方式,所以微信后台配置验证接口时候,要使用GET方式,验证成功配置完成再改成POST方式。
路由:
Route::group(['prefix' => 'backed', 'namespace' => 'Backeds'], function () {
Route::get('weixin/token', 'WeixinController@token');
Route::post('weixin/token', 'WeixinController@token');
Route::any('weixin/api', 'WeixinController@api');//下面有具体方法代码
});
laravel中还有一个需要注意的是中间件的概念,中间件是所有请求都需要经过验证才能分发给相应的控制器的玩意.laravel中POST提交都必须包含csrf防止跨域攻击的,在微信开发接口中需要关闭:
打开:app\Http\Middleware\VerifyCsrfToken.php
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'weixin/api',
];
}
接下来在对应的Controller中创建WeixinController.php
php artisan make:controller WeixinController
<?php
namespace App\Http\Controllers\Backeds;
use DB;
use App\Http\Requests;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class WeixinController extends Controller
{
//验证消息
public function api()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
//检查签名
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = "weixin";//可以随便填,只要和后台添加的一样就行
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if($tmpStr == $signature){
return true;
}else{
return false;
}
}
}
到此为止,打开微信公众号后台,开始配置微信服务器
配置URL:http://wechat.xhqlzj.com/backed/weixin/api
配置Token:weixin(Token要和WeixinController中checkSignature方法里面定义的token一样)
接下来会有详细的微信开发文章,欢迎关注。获取更多的相关资料可以关注公众号