支付宝支付收不到回调的坑 [ 新手入门 ]
踩了三天的坑,一直找不到收不到回调的原因,而且联系客服也显示回调地址与自己填的不符合,查了生成的日志,发现和自己提交的一直,结果百度发现了问题所在,特此记录一下,方便其他人出坑
- 关于设置公钥
一定要注意,是“支付宝公钥”,不要填应用公钥,不然就坑了 - 关于回调的域名地址(本人就是在这坑了)
干净些,不要有参数,如:
/*****.com/notify.php
,千万不要写:*****.com/back.php?r=notify
。 这个注意是针对用框架的,一定要把url美化了,不然直接用带参数的,回调的时候会把“?”后面的参数全部去掉的, 那么肯定访问不到实际回调函数了,只能是首页之类的了 - 注意设置回调域名设置 在支付宝申请应用的时候会有 一个地方填回调地址和回调网关,这个一定要区分好
- 关于参数中含有中文 支付宝回调是直接给的中文的,没有编码。自己记录日志的时候编码再放到日志的,所以直接拿日志里面的内容用签名工具验证,怎么都验证不通过。所以用demo里的默认不编码就可以了,不要把中文编码了。
原文链接:https://blog.csdn.net/u012533474/article/details/80108575 不是我的,百度到的,尊重作者
共 2 条回复
-
lis_cookie 回复于 2018-08-04 17:22 举报
这几天我也遇到一个比较恶心的,不知道为什么用yii2自带的
Yii::$app->request->post()
方法去获取POST参数会被过滤?导致数据验签在验签证书的时候一直失败【error:0906D06C:PEM routines:PEM_read_bio:no start line】, 最后想到把获取POST参数方式用$_POST直接获取,也没用getRawBody去测试,毕竟还是要爬坑。共 11 条回复lis_cookie 回复于 2018-08-06 19:34 回复@郝立国 csrf验证默认这个controller都关闭了,获取到post数据也正常,只是一直不能验签正常,直接获取POST就正常,那只能想到的是Yii自带的post过滤了支付宝异步服务器发过来的数据
lis_cookie 回复于 2018-08-06 19:35 回复@nauhein 对于第三方支付异步服务器的话必须局部关闭csrf,否则会一直400
@lis_cookie yii框架没有过滤数据,post接收的数据能验签了?你应该是应用公钥和支付宝公钥没整对,用支付宝给的软件生成的公钥添加到支付宝上,然后获取到支付宝公钥,这才是你需要的,还有一种就是你追一下代码,他里面的代码有需要更改的
lis_cookie 回复于 2018-08-07 12:36 回复@郝立国 奇怪的就是在这里,我只是更改接收POST参数方式就正常验签,这里就和支付宝配置没关系了。
@lis_cookie 查看过用框架接收的参数和$_POST有什么不同了吗,我的是接收数据都一样的。。
lis_cookie 回复于 2018-08-07 18:34 回复@郝立国 打印的参数是一样的,这也是比较好奇的
lis_cookie 回复于 2018-08-10 15:53 回复@郝立国 嗯嗯,是的,现在的话我可能暂时用默认的$_POST接受参数进行验证,等API上线运行稳定之后去追查该问题的来源
郝立国
最后登录:2024-01-11
在线时长:77小时3分
- 粉丝6
- 金钱2925
- 威望110
- 积分4795