收藏
回答

物流助手下单,一直提示address error

框架类型 问题类型 操作时间 AppID
小程序 Bug 2019-03-08 wx3d79de2aa69a5e3d

- 调用下单接口,一直报错address error,实在看不出地址哪里有问题


- 期望结果:下单成功


- 调用参数:


{'biz_id': '5941987105',
 'cargo': {'count': 2,
           'detail_list': [{'count': 2, 'name': '童年小食品发糕'}],
           'space_x': 20,
           'space_y': 40,
           'space_z': 5,
           'weight': 0.8},
 'delivery_id': 'SF',
 'insured': {'insured_value': 0, 'use_insured': 0},
 'openid': 'oVkLc4mzzcCQAlnrBBl9banoFMUo',
 'order_id': '2018198329849384',
 'receiver': {'address': '拱辰街道西洪北街1118号',
              'area': '荔城区',
              'city': '莆田市',
              'country': '中国',
              'mobile': '18111111111',
              'name': '刘聪',
              'province': '福建省'},
 'sender': {'address': '学院北路368号名城佳园1号楼1301',
            'area': '城厢区',
            'city': '莆田市',
            'country': '中国',
            'name': '曾彬彬',
            'province': '福建省',
            'tel': '05941110280'},
 'service': {'service_name': '顺丰标快', 'service_type': 3},
 'shop': {'goods_count': 2,
          'goods_name': '童年小食品发糕',
          'img_url': 'https://qiniumedia.freelycode.com/vcdn/vt8iqaaq58aa/clientimg/3/project/77c6901d85714dd1b89c4f0c358730fe',
          'wxa_path': '/pages/order-detail/order-detail?orderId=1'}}


- 目前返回结果:

{'errmsg': 'delivery logic fail',

'delivery_resultmsg': 'address error',

'errcode': 9300501, 'waybill_data': [],

'delivery_resultcode': 20002}


实在看不出参数有什么问题。另外地址中的name和company如果超过10个字,就会报下面这个错误。对于company公司名称大于10个字的公司,写不到10个字,则名称是错误的,大于10个字,又说参数太长,感觉无解了。


{'errmsg': 'arg size exceed limit hint: [uZBirA05135659]', 'errcode': 9300526}


这个company和name参数,文档上都说长度限制是64个字节,结果11个字就报错了,这是不是一个bug唉?

回答关注问题邀请回答
收藏

2 个回答

  • 张三疯
    张三疯
    2019-03-08

    1、address error,是因为地址信息用的不是UTF8编码。请确认中文都是UTF8编码。

    2、company和name长度限制是64字节,而不是64个汉字。

    2019-03-08
    有用
    回复 3
    • 2019-03-08

      感谢大神抽空回答,不过问题还是没有解决:

      1、我对请求中的json字符串整体做了utf-8编码,但是依然返回address error。

      2、一个汉字一般是3~4个字节,11个汉字最多就是44个字节,理应没有超过64字节限制的。再者,对于公司名称来说,11个汉字就超出限制了,是否这个限制不太合理?因为公司名称大多数都不止10个字的。

      2019-03-08
      回复
    • 2019-03-09

      我把sender,receiver参数内容全部改写为英文,依旧address error,这是否可以说明不是编码的问题?另外,这个address error是否太笼统了?错误提示是否可以更加详细一点呢?

      2019-03-09
      回复
    • 2019-06-25

      线下服务器能请求的吗?为什么我一直报

      address error

      php环境,把所有的数据都变成了utf-8也没有用呢


      2019-06-25
      回复
  • 2019-03-11

    问题已解决,确实是编码问题,解决方法记录如下,以便其他Pythoner碰到时参考:


    1、首先构建请求参数字典,就是像上文中那样的数据结构。假设这个数据结构的变量名为data。

    2、然后将字典json化为字符串,但是注意添加参数 ensure_ascii=False。

    body = json.dumps(data, ensure_ascii=False)

    Python中默认JSON字符串都是ascii编码,导致中文会被转化成类似'\u1233'这样的字符串,也就是不再是unicode了,所以后面encode就无效了。

    ensure_ascii=False参数使得body保持unicode编码,这样后续的encode才会生效。

    3、最后将 body.encode("utf-8") 作为请求体发送给创建订单的接口。

    2019-03-11
    有用 1
    回复
登录 后发表内容