电商3.0-运营平台开放接口
    • 概览
    • 快速开始
    • 请求与加密
    • 响应处理
    • 示例与自测
    • 数据约定
    • 返回码与排查
    • 更新日志
    • 订单
      • 查询订单列表
        POST
      • 查询订单详情
        POST
      • 取消预约
        POST
    • 售后
      • 申请退单
        POST
      • 查询退单
        POST
    • 景区
      • 查询景区列表
        POST
      • 查询景区详情
        POST

    示例与自测

    本页的演示数据可用于自测加密、签名和解密实现。每一步的中间值都已列出(十六进制均为大写),任何语言的实现都应逐字节一致;不一致时,从第一个不同的中间值往前查。各接口页的「线上报文(核对用,不能发送)」示例也是用这组演示数据算出的(key 为 DEMO_KEY_DO_NOT_SEND)。

    完整示例#

    项值
    aesKey0123456789abcdef0123456789abcdef
    secretdemo_secret_do_not_use_0000000000000000000000000000000000000000(63 个字符,仅为演示;正式 secret 为 64 个字符,实现中不要校验 secret 长度)
    timestamp1794370000000
    业务参数(明文){"orderNo":"SO202611110001"}
    第一步,加密。 密钥为 aesKey 的 32 个字节,IV 为 0123456789abcdef 这 16 个字节:
    密钥(32 字节)   3031323334353637383961626364656630313233343536373839616263646566
    IV(16 字节)     30313233343536373839616263646566
    明文(28 字节)   7B226F726465724E6F223A22534F323032363131313130303031227D
    填充后(32 字节) 7B226F726465724E6F223A22534F323032363131313130303031227D04040404
    密文(32 字节)   E37118455BD7F25C6A2FAAD1FD767E88148D82CA2CD071D7F09515409B030E19
    body(44 个字符) 43EYRVvX8lxqL6rR/XZ+iBSNgsos0HHX8JUVQJsDDhk=
    这个 body 同时含 +、/、=,可以用来检查 Base64 字母表、填充和 URL 编码问题(见请求与加密的「Base64 变体与 URL 编码」)。它只有 44 个字符,不会触发换行;换行问题用第五步的 88 字符向量检查。
    第二步,拼接待签名串(密文 + 时间戳 + secret,共 120 个字符,UTF-8 编码后为 120 字节):
    43EYRVvX8lxqL6rR/XZ+iBSNgsos0HHX8JUVQJsDDhk=1794370000000demo_secret_do_not_use_0000000000000000000000000000000000000000
    第三步,计算 MD5:
    sign = 6D1F10D8A10FB9580628DA5C4C00E1CD
    第四步,发送请求:
    第五步,处理响应。 响应体不以 { 开头时用同一个 aesKey 解密,得到统一响应 JSON。下面的响应密文可用来自测解密,结果含中文,可同时检查 UTF-8 解码:
    响应体(88 个字符) eSsA+X75kefBUTb/yembJ6a8+mxk87202MXBC38kzIGz4NhL+repxbzV2gaEXHJkPr1KY2HtnDYJHVT1nfFzgA==
    密文(64 字节)     792B00F97EF991E7C15136FFC9E99B27A6BCFA6C64F3BDB4D8C5C10B7F24CC81B3E0D84BFAB7A9C5BCD5DA06845C72643EBD4A6361ED9C36091D54F59DF17380
    去填充后(60 字节) 7B22636F6465223A323031302C226D7367223A22E8AEA2E58D95E4B88DE5AD98E59CA8222C2264617461223A6E756C6C2C226F6B223A66616C73657D
    明文              {"code":2010,"msg":"订单不存在","data":null,"ok":false}
    用 OpenSSL 可以独立验证(-K 是 aesKey 的十六进制,-iv 是其前 16 字节的十六进制,-A 表示 Base64 不换行;解密时加 -d):
    自测判据(任何语言都一样):
    1.
    对上面的演示数据,第一步到第三步的每个中间值都逐字节一致。
    2.
    把第五步的明文按第一步加密(同一 aesKey、同一 IV),结果必须正好是第五步那 88 个字符的响应体。
    第二条的结果超过 76 个字符、明文含中文,用来发现 MIME / PEM 换行和非 UTF-8 编码。只通过第一条不能说明实现正确。

    代码示例#

    以下三份示例都包含加密、解密、签名和完整调用,直接运行会依次输出上面第一步的 body、第三步的 sign、自测判据第 2 条的响应体,以及 body 解密后的明文。

    Java(JDK 11+,无第三方依赖)#

    Python(pip install pycryptodome requests)#

    Node.js(18+,无第三方依赖)#

    修改于 2026-11-11 19:32:32
    上一页
    响应处理
    下一页
    数据约定
    Built with