支付宝PC支付同步跳转验签失败,一般原因是很多人会把配置里面的支付宝公钥配置成应用公钥导致失败,我这里不是此原因直接排除。
通过打印接收的参数发现一些猫腻。
由于接收到的数据包里面有一个与支付不相关的参数导致验签失败,罪魁祸首就是这个s,最后发现是因为之前用的TP,后面换成Laravel后nginx的配置直接复制了一遍,里面的重写部分也是沿用TP的配置,导致接收到的数据里面多出一个s参数,将重写部分修改一下即可。
修改前:
location / {
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
autoindex off;
}
修改后:
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$query_string;
autoindex off;
}
还有一个问题,沙箱测试PC支付时提示钓鱼风险
直接新打开一个浏览器测试