2016-10-29 10:03:28 4555次浏览 2条回答 1 悬赏 20 金钱

$alipay_config['return_url'] = "http://xxxx/frontend/web/index.php?r=order/return";
可以验证成功。
但是,
$alipay_config['notify_url'] = "http://xxx/frontend/web/index.php?r=order/notify";
根本没有任何操作。

nofity内容如下:

public function actionNotify(){
    file_put_contents('test.txt', 'data');
}

换成 $alipay_config['notify_url'] = "http://xxx/frontend/web/test.php?r=order/notify";
test.php 可以发现会生成了test.test
内容:
file_put_contents('test.txt', 'data');

由于yii初始路由方式为index.php?r=XX/XX 所以后面也算是带参的url,在支付成功后会出现验证失败的情况,解决办法是更改alipy_core.function.php中的paraFilter()方法

function paraFilter($para) {
   $para_filter = array();
   while (list ($key, $val) = each ($para)) {
      if($key == "sign" || $key == "sign_type" || $val == "" || $key == 'r')continue;
      else   $para_filter[$key] = $para[$key];
   }
   return $para_filter;
}
补充于 2016-10-30 20:33

notify_url是POST请求,
要关闭YII2的CSRF才可以。同时,也不能带参数。

最佳答案

  • 且试天下 发布于 2016-10-30 16:46 举报

    回调地址不允许这样&a=3这种带参数的形式 如果要带参数 请用pathinfo模式

  • 回答于 2017-12-09 13:56 举报

    楼主 为什么我下载的最新版支付宝 alipy_core.function.php找不到这个文件?那我应该怎么修改啊?

您需要登录后才可以回答。登录 | 立即注册
okokad
经理

okokad

注册时间:2016-02-29
最后登录:2017-07-01
在线时长:49小时26分
  • 粉丝12
  • 金钱25
  • 威望80
  • 积分1315

热门问题