微信公众号在和服务器后端交互的时候,需要校验服务地址是否可用,原理是微信服务器会发送signature, timestamp, nonce, echostr,这几个参数到你填写的地址,你需要返回按照规则生成的校验token,然后微信会比对你的返回是否正确,正确的话,你的服务器地址就能正常添加了。
代码:
public function server(Request $request)
{
header("Content-type: text/html; charset=utf-8");
// 微信token认证
$signature = $request->get("signature");
$timestamp = $request->get("timestamp");
$nonce = $request->get("nonce");
$echostr = $request->get("echostr");
// 你的设置Token
$token = "token";
// 1)将token、timestamp、nonce三个参数进行字典序排序
$tmpArr = [$nonce, $token, $timestamp];
sort($tmpArr, SORT_STRING);
// 2)将三个参数字符串拼接成一个字符串进行sha1加密
$str = implode($tmpArr);
$sign = sha1($str);
// 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if ($sign == $signature) {
return $echostr;
}
}
添加成功后,这代码就可以删除了。改成你正常的handle信息的代码即可。