协议规则

  • 通讯方式
    请求:HTTP(S) + JSON
    响应:HTTP(S) + JSON

  • 报文编码集

    • 字符集编码:统一使用UTF-8编码
    • 请求方式:POST方式进行提交
    • 数据格式:请求以JSON格式提交,返回为JSON格式。
    • 请求的 Content-Type: application/json
  • 报文签名
    报文请求和应答需要经过签名验证,签名数据放在报文的 sign 字段里,具体签名算法如下: 签名生成的通用步骤如下:
    1、设所有发送或者接收到的数据为集合 M,将集合 M 内非空参数值的参数按照参数名 ASCII 码从小到大排序(字典序),使用 URL 键值对的格式(即 key1=value1&key2=value2…)拼接成字符串 stringA。
    特别注意以下重要规则:
    (1) 参数名 ASCII 码从小到大排序(字典序);
    (2) 如果参数的值为空不参与签名;
    (3) 参数名区分大小写;
    (4) 对于 JSON 子域(JSONObject 和 JSONArray),签名时整个子域作为字符串参与签 名,需要注意的是 fastjson 会对字段重新排序,建议用 json-lib 进行序列化。 (5)验证调用返回或主动通知签名时,传送的 sign 参数不参与签名,将生成的签名与该 sign 值作校验。
    (6) 接口可能增加字段,验证签名时必须支持增加的扩展字段
    2、在 stringA 最后拼接上 secret 得到 stringSignTemp 字符串,并对 stringSignTemp 进行 MD5 运算,再将得到的字符串所有字符转换为大写,得到 sign 值 signValue。如下:
    appid=277784626A9E6xddddxxxxxxx&nonce_str=dssdhrtsdfdsgrhgdf&pay_result=success&sn=1809CA885752&total_fee=123.33&trade_time=2019-09-01 20:00:03&trade_type=wx&trans_no=861447657788889877655&key=dssdhx3df54467

文档更新时间: 2020-08-21 11:21   作者:陈炳森