ZPY博客

修正了微信支付问题后还是报缺少参数,total_fee的错误

昨天在修改了代码后在微信公众号里测试支付时无限弹出缺少参数,total_fee的错误,将错误代码修正后,用微信开发者工具连本地的后台debug看是没问题的。但是一上传到服务器上测试还是无限弹出缺少参数,total_fee的错误。

百思不得其解,本地是好的说明代码没问题,但是又不知道是什么问题。服务器上又debug不了,要看服务器上报的什么错,首先必须得将Log输出到服务器的tomcat目录下。就用最原始的JAVA自带的Log吧。不会的可以自行百度。

在关键代码处写了log后发现真正的报错如下:

2018-12-14 12:54:00.268  INFO 35741 --- [nio-8080-exec-1] tesglog                                  : start wechatPay...
2018-12-14 12:54:00.268  INFO 35741 --- [nio-8080-exec-1] tesglog                                  : money = 8400
2018-12-14 12:54:00.376  INFO 35741 --- [nio-8080-exec-1] tesglog                                  : pay result : <xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg><appid><![CDATA[wx92db80f2feac219e]]></appid><mch_id><![CDATA[1317173401]]></mch_id><nonce_str><![CDATA[MBiEIUEQpmNtC1VC]]></nonce_str><sign><![CDATA[68DF5216E9AC477272E3583F7AC46475]]></sign><result_code><![CDATA[FAIL]]></result_code><err_code><![CDATA[INVALID_REQUEST]]></err_code><err_code_des><![CDATA[201 商户订单号重复]]></err_code_des></xml>
 prepay_id = null

可以看到真正的错误其实是商户订单号重复。。微信开发这点很烦的,很多时候报的错并不是真正的错。必须debug才能看到真正的错误。

知道了真正的错误,解决起来就简单了,将数据库里这条商户号的订单记录删掉,再跑就OK了。