请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

curl 提交post请求,pay/notify接收失败(发现不是post请求)

老师,我在做通知接口的时候遇到了问题,同步通知状态良好,但是我发现付款成功后不能够进行异步通知,无法修改订单的状态,经过调试后我好像知道了原因:(但是不知道怎么解决)

首先,我在phpinfo()中确认了我的服务器支持curl,在notify.php中我使用模拟数据进行发送,原本的$_POST被改成了数组

https://img1.sycdn.imooc.com/szimg//593199540001614702590087.jpg

发送的url是 pay/notify,我需要先判断curl请求是否发送成功,于是我在notify方法加了下面这行代码,如果待会儿5号订单的状态被改变,证明请求成功发送。后来订单状态确实改变,说明请求成功发送

https://img1.sycdn.imooc.com/szimg//59319b0000011f1005890162.jpg

但是我如果把代码改成下面这样,在更改6号订单状态之前,先验证提交是否是post提交,发现6号订单状态没有改变,说明curl请求post提交的数据没有进到 if 里面。说明当我curl请求的数据是支付宝返回的post通知参数时,得到的参数根本没有进入 if 当中,也没有办法进行验证。

https://img1.sycdn.imooc.com/szimg//59319be600013a5105840158.jpg

这个问题要怎么解决呢?



正在回答

3回答

这个问题应该是支付宝的post请求无法通过yii2的csrf验证,另外请求参数无法接收,参考解决方案:http://www.yiichina.com/question/2367

0 回复 有任何疑惑可以回复我~
  • 提问者 猴塞雷2 #1
    我已经关闭了csrf验证,按照参考改写了Alipay_code中的方法,还是不行。后来调试了一下,发现当我正常付款时,pay/notify 方法根本没有收到请求,但是当我用Postman对 notify.php发出post请求时,pay/notify方法 收到了请求,但是 if(Yii::app->request->isPost) 的判断是false,无法进入 if 语句中。整个人都懵逼了,不知道是什么原因
    回复 有任何疑惑可以回复我~ 2017-06-03 14:10:14
  • Jason 回复 提问者 猴塞雷2 #2
    你先确定这个方法请求到了没,在方法里面做一个文件的标识,看看支付宝是否请求
    回复 有任何疑惑可以回复我~ 2017-06-03 21:48:57
  • 提问者 猴塞雷2 回复 Jason #3
    发现问题了,这个方法并没有被支付宝请求,我现在检查了notify_url 以及关闭了服务器的防火墙,仍然没有收到,现在在蚂蚁金服开放平台上咨询,谢谢老师
    回复 有任何疑惑可以回复我~ 2017-06-04 00:30:23
提问者 猴塞雷2 2017-06-17 00:10:28

问题解决了,这几天忙着准备期末考回复晚了。

是这样的,如果你的异步接收地址填写正确的话,支付宝服务器是一定会给你发送通知的,我的问题在于:

  1. 使用了https发送curl请求,也不是不可以,只是要对老师的代码做出一些修改,查询一下手册可以实现

  2. 关键问题,curl请求yii2的默认路由 ....?r=.... 会被当成get,从而忽视掉post,必须重写URL,但是nginx默认不支持pathinfo,所以重写之后可能会报错,这时在配置文件里加上这一段,重启nginx,问题解决

    https://img1.sycdn.imooc.com/szimg//5944028b0001280905990112.jpg

0 回复 有任何疑惑可以回复我~
  • Jason #1
    恩,好的,这应该也算是Yii2的一个小bug
    回复 有任何疑惑可以回复我~ 2017-06-17 11:29:52
Jason 2017-06-05 22:04:42

回来晚了,这会你那可以吗

0 回复 有任何疑惑可以回复我~
  • 提问者 猴塞雷2 #1
    可以的可以的,我私信你了
    回复 有任何疑惑可以回复我~ 2017-06-05 22:21:10
  • 提问者 猴塞雷2 #2
    在线等
    回复 有任何疑惑可以回复我~ 2017-06-05 22:23:26
  • Jason 回复 提问者 猴塞雷2 #3
    是QQ吗?
    回复 有任何疑惑可以回复我~ 2017-06-05 22:24:42
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信