首页  >  问答  >  正文

python - 微信支付一直提示XML格式错误,哪怕是使用官方的模板。

微信支付的统一下单接口要求这样的格式(摘自官方文档):

<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>
天蓬老师天蓬老师2742 天前956

全部回复(2)我来回复

  • PHP中文网

    PHP中文网2017-04-17 17:31:27

    我按你的数据试了一下,没提示XML格式不对,只提示了签名错误。

    所以再检查下代码吧。
    Python什么的编码问题都查查看。

    这个是可以测试通过的:

    <xml>
       <appid>wx2421b1c4370ec43b</appid>
       <attach>支付测试</attach>
       <body>树屋树递快递到寝配送服务</body>
       <detail>树屋树递快递到寝配送服务</detail>
       <device_info>WEB</device_info>
       <fee_type>CNY</fee_type>
       <mch_id>10000100</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>

    回复
    0
  • PHP中文网

    PHP中文网2017-04-17 17:31:27

    1.<product_id>0001</product_id> 官方模板没这个记录

    2.即使能这样写,也不能 0001 ,这是是8进制的写法,你应该写1 而不是 0001

    回复
    0
  • 取消回复