原生

支付宝WAP版接口出现ALI38173提示错误(原创)

作者:本站 2017-09-26 浏览:3269 标签:     

      支付宝WAP版接口出现ALI38173提示错误。      错误出现原因,PHP程序冲windows 服务器迁移到 apache 服务器,支付宝WAP支付出现

      支付宝WAP版接口出现ALI38173提示错误。

      错误出现原因,PHP程序冲windows 服务器迁移到 apache 服务器,支付宝WAP支付出现ALI38173错误提示,而同接口下面的PC版支付接口什么问题都没有。

      关于 ALI38173 这个提示的解释,官网上面的解释是缺少参数,请检查。

      问题所在:AlipayTradeWapPayContentBuilder.php 下面有一个方法

 public function getBizContent()
    {
        if(!empty($this->bizContentarr)){
            $this->bizContent = json_encode($this->bizContentarr,JSON_UNESCAPED_UNICODE);
        }

        return $this->bizContent;
    }

       此方法返回的参数变成空的了,就导致了整体往支付宝递交的参数变为空了。通过度娘查了一下,是

JSON_UNESCAPED_UNICODE

      导致的问题,这个JSON的方法是不兼容5.4以下版本的。果然,把apache下面的 php版本升级到5.5,支付接口顺利运行。

      到这里,就已经是找到问题所在了。

      两个个方法解决:

      1.升级PHP版本,一劳永逸的。

      2.对于没法升级PHP版本的,可以考虑直接改造这个方法。或者去掉这个JSON方法试试,理论上也是可以允许的。下面是从度娘上面找来的方法,没有去试,大家要是改不动PHP版本的,可以是尝试一下,CSDN上面的,应该可以运行。

  function json_encode($array)
    {
        if(version_compare(PHP_VERSION,'5.4.0','<')){            $str = json_encode($array);            $str = preg_replace_callback("#\\\u([0-9a-f]{4})#i",function($matchs){
                 return iconv('UCS-2BE', 'UTF-8', pack('H4', $matchs[1]));
            },$str);            return $str;
        }else{            return json_encode($array, JSON_UNESCAPED_UNICODE);
        }
    }

     


  • 0

  • 2

  • 1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.如有文章有版权争议,请给我们留言或者邮件告知我们,邮箱地址:028mw@126.com。