微信支付的统一下单接口要求这样的格式(摘自官方文档):
<xml>
<appid>wx2421b1c4370ec43b</appid>
<attach>支付测试</attach>
<body>JSAPI支付测试</body>
<mch_id>10000100</mch_id>
<nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
<notify_url>http://wxpay.weixin.qq.com/pub_v2/pay/notify.v2.php</notify_url>
<openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>
<out_trade_no>1415659990</out_trade_no>
<spbill_create_ip>14.23.150.211</spbill_create_ip>
<total_fee>1</total_fee>
<trade_type>JSAPI</trade_type>
<sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml>
我POST的数据如下:
<xml>
<appid>wx(打个码)</appid>
<attach>支付测试</attach>
<body>树屋树递快递到寝配送服务</body>
<detail>树屋树递快递到寝配送服务</detail>
<device_info>WEB</device_info>
<fee_type>CNY</fee_type>
<mch_id>(打个码)</mch_id>
<nonce_str><![CDATA[7&-1ib26HO5lWFoavTwe^]]></nonce_str>
<notify_url><![CDATA[http://www.treehouses.cn/front-4ae1dacda1f197bbfbc57ec9fbb4911f/api/wxpayresponse]]></notify_url>
<openid><![CDATA[o8nXct499ctQzioUQt93-vyq9hgM]]></openid>
<out_trade_no><![CDATA[60065]]></out_trade_no>
<product_id>0001</product_id>
<spbill_create_ip><![CDATA[49.140.188.1]]></spbill_create_ip>
<total_fee>1</total_fee>
<trade_type>JSAPI</trade_type>
<sign><![CDATA[F88FABC7BFD25B726864DC6D6FC8313B]]></sign>
</xml>
微信服务器返回的结果是:
<xml><return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[XML格式错误]]></return_msg>
</xml>
Saya mencubanya berdasarkan data anda, tetapi ia tidak menunjukkan bahawa format XML tidak betul, cuma tandatangannya salah.
Jadi mari semak kod sekali lagi.
Semak semua Python dan isu pengekodan lain.
Ini boleh diuji dan lulus:
1.<product_id>0001</product_id> Templat rasmi tidak mempunyai rekod ini
2. Walaupun boleh ditulis seperti ini, ia tidak boleh 0001. Ini adalah kaedah penulisan oktal Anda harus menulis 1 bukannya 0001