curl 提交post请求,pay/notify接收失败(发现不是post请求)
来源:11-2 支付宝通知接口

猴塞雷2
2017-06-03
老师,我在做通知接口的时候遇到了问题,同步通知状态良好,但是我发现付款成功后不能够进行异步通知,无法修改订单的状态,经过调试后我好像知道了原因:(但是不知道怎么解决)
首先,我在phpinfo()中确认了我的服务器支持curl,在notify.php中我使用模拟数据进行发送,原本的$_POST被改成了数组
发送的url是 pay/notify,我需要先判断curl请求是否发送成功,于是我在notify方法加了下面这行代码,如果待会儿5号订单的状态被改变,证明请求成功发送。后来订单状态确实改变,说明请求成功发送
但是我如果把代码改成下面这样,在更改6号订单状态之前,先验证提交是否是post提交,发现6号订单状态没有改变,说明curl请求post提交的数据没有进到 if 里面。说明当我curl请求的数据是支付宝返回的post通知参数时,得到的参数根本没有进入 if 当中,也没有办法进行验证。
这个问题要怎么解决呢?
3回答
-
这个问题应该是支付宝的post请求无法通过yii2的csrf验证,另外请求参数无法接收,参考解决方案:http://www.yiichina.com/question/2367
0132017-06-17 -
猴塞雷2
提问者
2017-06-17
问题解决了,这几天忙着准备期末考回复晚了。
是这样的,如果你的异步接收地址填写正确的话,支付宝服务器是一定会给你发送通知的,我的问题在于:
使用了https发送curl请求,也不是不可以,只是要对老师的代码做出一些修改,查询一下手册可以实现
关键问题,curl请求yii2的默认路由 ....?r=.... 会被当成get,从而忽视掉post,必须重写URL,但是nginx默认不支持pathinfo,所以重写之后可能会报错,这时在配置文件里加上这一段,重启nginx,问题解决
012017-06-17 -
Jason
2017-06-05
回来晚了,这会你那可以吗
0152017-06-07
相似问题