收藏
回答

订单查询接口,返回的header,每次调用可能不同

接口https://api.mch.weixin.qq.com/pay/orderquery返回的header不同,导致库解码的时候编码错误。这个是一个海外商户号。

同样的调用代码,有时候返回`application/xml`,有时候返回`text/plain`。

>>> q = interface.OverseaWechatQueryOrder();q.query({'ooid': '200162437'})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/uu/project/uupay/virtualenv/lib/python3.5/site-packages/uukit-1.13.8-py3.5.egg/uukit/interface.py", line 1159, in query
    return self.post(data=data_xml, headers=headers)
  File "/home/uu/project/uupay/virtualenv/lib/python3.5/site-packages/uukit-1.13.8-py3.5.egg/uukit/interface.py", line 94, in post
    return self._query(data, headers, requests.post, **kwargs)
  File "/home/uu/project/uupay/virtualenv/lib/python3.5/site-packages/uukit-1.13.8-py3.5.egg/uukit/interface.py", line 86, in _query
    self._analyze()
  File "/home/uu/project/uupay/virtualenv/lib/python3.5/site-packages/uukit-1.13.8-py3.5.egg/uukit/interface.py", line 1184, in _analyze
    self._response_txt = util.ensure_binary(self._response_txt, 'latin1').decode(config.PAY.OVERSEA_WECHAT_ENCODE)
  File "/home/uu/project/uupay/virtualenv/lib/python3.5/site-packages/uukit-1.13.8-py3.5.egg/uukit/util.py", line 529, in ensure_binary
    s = s.encode(encode)
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 206-210: ordinal not in range(256)
>>> q.response.headers
{'Connection': 'keep-alive', 'Request-ID': '08C5C9D4FF0510B70318B9B1B74C20B72B28C9B704-0, 08C5C9D4FF0510B8031891AFB74C20A68B0828DF5E-0', 'Cache-Control': 'no-cache, must-revalidate', 'Content-Type': 'application/xml; charset=utf-8', 'Content-Length': '442', 'X-Content-Type-Options': 'nosniff', 'Server': 'nginx', 'Keep-Alive': 'timeout=8', 'Date': 'Wed, 06 Jan 2021 02:47:33 GMT'}

>>> q = interface.OverseaWechatQueryOrder();q.query({'ooid': '200162437'})
'FAIL'
>>> q.response.headers
{'Connection': 'keep-alive', 'Request-ID': '08CFC8D4FF0510E9061886C08C5820D24F28969203-0, 08CFC8D4FF0510DE0618EBB2C05520944A28F8F405-0', 'MMLAS-VERIFYRESULT': 'CAA=', 'Content-Type': 'text/plain', 'Content-Length': '442', 'Server': 'nginx', 'Keep-Alive': 'timeout=8', 'Date': 'Wed, 06 Jan 2021 02:45:35 GMT'}
回答关注问题邀请回答
收藏

2 个回答

  • 支付社区运营
    支付社区运营
    2021-01-08

    建议您前往微信支付APIV3文档, 点击右下角‘技术咨询’实时寻求技术帮助。

    请注意在线技术支持的在线时间:10:00-12:00;14:00-18:00

    若您的问题得到解决,请回社区晒出解决方案,以帮助更多遇到此问题的人,感谢您的支持~

    在线咨询主要解决微信支付接口的技术类问题,比如调用接口报错等问题,如遇非此类问题请寻找其他更合适的方式咨询哈。


    2021-01-08
    有用
    回复
  • 陈刚
    陈刚
    2021-09-29

    python开发者可以使用已经封装好的“微信支付 V3 API Python SDK”

    https://github.com/minibear2021/wechatpayv3


    2021-09-29
    有用 1
    回复
登录 后发表内容
问题标签