当前位置 博文首页 > json_li的博客:微信公众号服务器配置及接入验证
目录
?
一、填写服务器配置
二、微信服务器验证
登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,
其中URL是开发者用来接收微信消息和事件的接口URL(即自己服务器接收处理url)。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。
EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:
填写好服务器之后,先不要提交,在服务器响应url处增加方法处理,以响应微信的验证
路由配置
//微信公众号事件接口
Route::any('wxNotify', 'ApiWeChatController@wxNotify');
控制器代码如下
/**
* 微信事件通知
*/
public function wxNotify()
{
$model = new ApiOther();
# 接收值方式为laravel框架封装方法 非框架可使用 $_GET
$signature = request()->input('signature');
$timestamp = request()->input('timestamp');
$nonce = request()->input('nonce');
$echostr = request()->input('echostr');
echo $model->checkSignature($signature, $timestamp, $nonce, $echostr);
}
模型层代码如下
/**
* 微信验证签名
* @param $signature
* @param $timestamp
* @param $nonce
* @param $echostr
* @return bool
*/
public function checkSignature($signature, $timestamp, $nonce, $echostr)
{
if (empty($signature) || empty($timestamp) || empty($nonce)) return false;
$token = 'xxxxxxxxxxxx'; # 自己设定的Token
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
// 检验signature,若确认此次GET请求来自微信服务器,原样返回echostr参数内容,则接入生效,否则接入失败
if ($tmpStr == $signature) {
return $echostr;
}
return false;
}
写好后,可提交微信配置,开启服务器配置
这样验证URL有效性成功后即接入生效,用户每次向公众号发送消息、或者产生自定义菜单、或产生微信支付订单等情况时,
开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应。
cs