支付宝异步通知问题

最近在做支付宝app支付,支付宝文档里这样说:**程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h);
程序执行完成后,该页面不能执行页面跳转。如果执行页面跳转,支付宝会收不到success字符,会被支付宝服务器判定为该页面程序运行出现异常,而重发处理结果通知;** 我在异步通知方法内这样写 echo success; 可还是会收到多次通知,怎么回事呢

阅读 8k
9 个回答

我做过支付宝支付,异步通知一般都是echo "success"或者echo "fail",亲测是OK的,你也可以在异步方法里面写入日志文件,查看日志

不能有引号? 在php中没有引号的success是什么呢?php解析器会认为是常量,你又没有定义这个常量,那么值是null。实际上你给支付宝返回的是null。正确的做法是echo "success"; 或者 return "success"

必然是echo出的东西不是仅success。

打一下log,看一下实际的回调流程。然后用log记录下的POST数据,自己模拟执行几遍,可以用Postman之类的工具,模拟调试。

异步方法中加入日志,查看日志。

try catch 一下 也许程序报错了

就是给他返回一个success的字符串,不要想太多

这个我做过,直接 echo 'success';就行不是这里出的问题。你查一下是不是php的错误提示没关,他页面显示的时候加上了warn等一些东西,所以报错了,你自己检查下看看,把php.ini的错误提示关掉。

通过echo "success";给支付宝服务器通知商户这边的异步处理完成成功,当然认的是字符串了

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题