公众号集成微信支付,统一下单 API 调用成功,并返回了 prepay_id ,而在通过 WeixinJSBridge.invoke('getBrandWCPayRequest' 接口来发起支付时总是报:“调用支付JSAPI缺少参数:total_fee",网上搜的各种可能性都检查过,都应该不是这些原因。真的快搞不下去了。求帮助!是基于沙箱模式来进行的联调,统一下单前所得到的 key 是由 generateSignature 接口取得的。
以下是发起统一下单时,提交给接口的数据:
每次不重复的订单号:20190303114531XXXX
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<nonce_str>Vy9ad7wup2bYSV6a9jJPePNx0DvcTM28</nonce_str>
<openid>obS755qKXXXXXXX</openid>
<sign>DEBA37FDD5A828D996399495C34D0A63</sign>
<fee_type>CNY</fee_type>
<body>Test-JSAPI</body>
<mch_id>152XXXXXX</mch_id>
<spbill_create_ip>120.78.XXX.XXX</spbill_create_ip>
<out_trade_no>20190303114531XXXX</out_trade_no>
<device_info>WEB</device_info>
<total_fee>101</total_fee>
<appid>wxf8ef34148XXXXXX</appid>
<trade_type>JSAPI</trade_type>
<sign_type>MD5</sign_type>
</xml>
以下是统一下单后,接口返回的数据:
<xml>
<trade_type><![CDATA[JSAPI]]></trade_type>
<prepay_id><![CDATA[wx20190303114XXXXXX]]></prepay_id>
<nonce_str><![CDATA[Vy9ad7wup2bYSV6a9jJPePNx0DvcTM28]]></nonce_str>
<return_code><![CDATA[SUCCESS]]></return_code>
<err_code_des><![CDATA[ok]]></err_code_des>
<sign><![CDATA[8998B37CBF2AAF2ECBF4E9XXXXXXX]]></sign>
<mch_id><![CDATA[152XXXXXXXX]]></mch_id>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wxf8ef341XXXXXX]]></appid>
<device_info><![CDATA[WEB]]></device_info>
<result_code><![CDATA[SUCCESS]]></result_code>
<err_code><![CDATA[SUCCESS]]></err_code>
</xml>
以下是调 WeixinJSBridge.invoke('getBrandWCPayRequest' 接口前做签名生成的数据。
appId : wxf8ef341XXXXXX
timeStamp : 1551584732
nonceStr : dk1YLp8ji3bd816tPITXhYfNs4X9oTYT
package : prepay_id=wx201903031145XXXXXX
signType : MD5
paySign : C3658A64F04963523B64BE00ABC0440A
prepay_id : wx201903031145XXXXXX
注:签名应该是通过了,麻烦大家帮我分析一下是什么原因?
1)package参数格式错误,package参数格式应该是这样: package:"prepay_id=wx201612032137789b201de80e0661234657"
2)package参数没有获取,返回null。
3)请检查预支付会话标识prepay_id是否已失效
4)请求的appid与下单接口的appid是否一致