微信支付常见问题

日期:2015-02-12 13:52:55    来源:www.gzbifang.com

最近正在开发微信支付相关的项目,将开发过程中遇到的各种问题、各种坑汇集于此,仅供各位兄弟姐妹参考(PHP版本)。
  1. 相信第一次开发微信支付的童鞋都是从下载修改微信提供的例子开始,而微信官方提供的“微信公众号支付接口文档V3.3.7”中的PHP版本例子,一开始就跟大家开了个玩笑(这里强烈鄙视一下微信开发团队!!)

    Notice: Use of undefined constant CURLOP_TIMEOUT - assumed 'CURLOP_TIMEOUT' in /wx_pay_test/WxPayPubHelper/WxPayPubHelper.php on line 155
    Warning: curl_setopt() expects parameter 2 to be long, string given in wx_pay_test/WxPayPubHelper/WxPayPubHelper.php on line 155

    正确的写法为: curl_setopt($ch, CURLOPT_TIMEOUT, $second);


  2. “access_control:not_allow” 可能出现的问题是:

    1)如果是未通过审核的微信服务号,确认是否已经把测试用的微信普通用户号加入到“测试白名单(微信支付->开发配置->测试白名单)”

    2)负责发起支付的php程序所在的目录,是否已经设置被设置成为“支付授权目录”或“测试目录”,例如:需要把例子中的http://www.*****.com/WxPayController/ 设置为支付授权目录或测试目录


  3. “支付金额参数total_fee问题”,这个金额是提交给微信的扣款金额,单位是,所以假如扣款:12.98元, 提交的数据应该是 1298


  4. 别尝试使用AJAX 方式调用js_api_call.php,来进行微信支付。


  5. 公众号支付使用了无效的商户号”,导致这个错误出现的原因有很多,下面只能提供一个调试的方法,可根据自己的实际情况处理。由于微信支付测试比较困难,只有在微信内才可以测试。一些 xml格式的文件无法使用var_dump来输出,网上搜索找到一个生成log记录信息的方式:

    // 打印log
        function  log_d($word) 
        {
            $log_name="./logd.log";//log文件路径
            $fp = fopen($log_name,"a");
            flock($fp, LOCK_EX) ;
            fwrite($fp,"执行日期:".strftime("%Y-%m-%d-%H:%M:%S",time())."\n".$word."\n\n");
            flock($fp, LOCK_UN);
            fclose($fp);
        }

    在demo里面的 WxPayPubHelper.php 里面 用 $this->log_d(xxx);调用。


    普通的对象输出可使用:var_dump(××××);


  6. 支付成功后的 notify_url ,无法接受到数据问题:

    首先 notify_url 不能使用如 &a=1&b=2 格式 应使用如下 /a/1/b/2 Pathinfo模式 如果是Linux环境还需要对文件夹有 相应的权限 才能写入信息。

    开发者可以在 notify_url 中根据 支付返回的状态进行一些相应的操作 例如修改订单状态...发送模板消息 提醒用户交易成功等等。



标签:微信支付 微信支付遇到的问题 微信支付接口 微信支付错误汇总

联系

伦经理

10年+互联网IT从业经验,丰富企信息化实战经验