最近在移动端停下来了,一直在搞PHP和前端,公司想我们的app实现H5化,最近在接入支付宝时,使用的是支付宝官方接口,在各种权限都申请完成之后,本地本人自己搭的服务器上可以运行,并且实现了付款功能,但是一到服务器上就报错,报错就是上面的 : 交易订单处理失败,请稍后再试。ALI38173,我很纳闷,为啥我本地可以,服务器就不能呢?后来参考了官方解释:
官方解释网址为:https://support./docs/doc.htm?spm=a219a.7386797.0.0.JUPUDC&treeId=193&articleId=105849&docType=1
附图:
它就说我选择参数少了,没有办法,直接进linux环境,打印我们的代码,刚开始还以为服务器哥们没有上传好我的代码,就进去看看了,发现我缺少的参数是 bizContent,它一直是NULL的:
官方自带的一个信息类AlipayTradeWapPayContentBuilder中有一个方法:
public function getBizContent(){if(!empty($this->bizContentarr)){$this->bizContent = json_encode($this->bizContentarr,JSON_UNESCAPED_UNICODE);}return $this->bizContent;}
这里面的json_encode($this->bizContentarr,JSON_UNESCAPED_UNICODE),我们的系统并不支持,所以才造成了我们系统返回NULL对象,改成这个就好了:
$this->bizContent = json_encode($this->bizContentarr);
至于原因,我想应该是我们自己服务器的PHP环境吧,json_encode($obj , JSON_UNESCAPED_UNICODE)是PHP5.4以上的环境才有的,而我本人的服务器环境是PHP5.5,所以说我真是日了服务器大爷的狗了,提前说一声不行么???