说说这次给公司网站开发微信支付接口遇到的坑吧= =
公司使用的是ThinkPHP3.1框架,老夫一折腾后终于把代码都整合到了框架中,然后
遇到的第一个错误:redirect_URL错误
解决办法:在微信公众号中 左侧菜单中找到微信支付这个选项 然后进入开发配置,在公众号支付下的支付授权目录那里把域名填入即可www.hostname.xxx/
理论上是redirect_URL 是没有问题了但是我想给支付页面传参数啊~
遇到的第二个错误:TP框架的URL模式导致redirect_URL参数错误 无法使用
解决办法:经过老夫多番调试发现是微信给的dome中url拼接出来问题 并不兼容TP的URL模式 打开WxPay.JsApiPay.php文件48行
将:$baseUrl = urlencode(‘http://’.$_SERVER[‘HTTP_HOST’].$_SERVER[‘PHP_SELF’].$_SERVER[‘QUERY_STRING’]);
改为:
$baseUrl = urlencode(‘http://’.$_SERVER[‘HTTP_HOST’].$_SERVER[‘PHP_SELF’].’?’.$_SERVER[‘QUERY_STRING’]);
$baseUrl=str_replace(“.html”, “”,$baseUrl).”?temp=temp”;
这有个很好用的小工具:微信在线开发调试工具
然后撸完了发现得处理一下安全问题 老夫又进行了订单md5参数验证
遇到的第三个错误:付款金额不能有小数点,单位只能为分 这个的错误提示已经忘记是什么了
$input->SetTotal_fee(1); 设置付款金额乘两次10 就是分了~ 数学不好不知道对不对- –
遇到的第四个问题:支付回调相关的问题
首先我看了回调的GET和POST的所有数据没有一点点关于微信支付的数据- -蛋疼的我 百度半天 文档找半天都没找到如何获取数据
最后发现特么的
微信把数据存在了$GLOBALS[“HTTP_RAW_POST_DATA”];中
好吧 var_dump看了一下数据是xml的 终于给我找到了- -最后用simplexml_load_string($data,’SimpleXMLElement’, LIBXML_NOCDATA);
解析获得到了交易结果
然后直接echo ‘<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>’;exit();
给微信返回信息,还是支付宝接口比较好弄,微信的好蛋疼啊~~~~~~~~~