public function verify()
{
// 判断请求是否为空
if (empty($_POST) && empty($_GET)) {
return false;
}
$data = $_POST ?: $_GET;
// 生成签名结果
$is_sign = $this->getSignVeryfy($data, $data['sign']);
// 获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息)
$response_txt = 'true';
if (!empty($data['notify_id'])) {
$response_txt = $this->getResponse($data['notify_id']);
}
// 验证
// $response_txt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
// isSign的结果不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关
if (preg_match('/true$/i', $response_txt) && $is_sign) {
return true;
} else {
return false;
}
}