协议规则

## 调用API必须遵循以下规则 ||| |-|-| |传输方式|为保证安全性,采用HTTPS传输| |提交方式|采用POST方法提交| |数据格式|提交和返回数据都为JSON格式| |字符编码|统一采用UTF-8字符编码| |签名算法|MD5、SHA1、SHA256,后续会兼容HMAC等| |签名要求|请求和接收数据均需要对核心参数进行校验签名,详细方法请参考[安全规范-签名算法](doc:gG9qrNct)| 核心参数: | 参数名 | 类型 | 必填 | 参与签名 | 说明 | | ------------ | ------------ | ------------ | ------------ | ------------ | | appId | String | 是 | 是 | 平台分配给合作方的appid,联系平台商务获取 | | userId | String | 否 | 是 | 开票助手用户ID | | userNo | String | 否 | 是 | 第三方平台的用户唯一标识 | | accessKey |String | 否 | 是 |额外认证参数| | accessSecret |String | 否 | 是 |额外认证秘钥(accessKey和accessSecret必须同时存在)| | nonceStr | String | 是 | 是 | 随机字符串,每次请求都不一样 | | timestamp | String | 是 |是 | 时间戳(单位:毫秒值,如果是Unix timestamp需要✖️1000) | | signType | String | 是 | 是 | 签名类型:MD5、SHA1、SHA256,后续会兼容HMAC等 | | sign | String | 是 | 否 | 签名结果 | >w 注意 ◆ "userId"、"userNo"、"accessKey和accessSecret"三者选填其一即可 ◆ 接口参数与userId(userNo、accessKey和accessSecret)不参与生成签名 ◆ 需要将核心参数与接口参数一起传过来,如下 userId ``` { 接口参数, "appId":"", "userId":"", "nonceStr":"", "timestamp":"", "signType":"", "sign":"" } ``` userNo ``` { 接口参数, "appId":"", "userNo":"", "nonceStr":"", "timestamp":"", "signType":"", "sign":"" } ``` accessKey和accessSecret ``` { 接口参数, "appId":"", "accessKey":"", "accessSecret":"", "nonceStr":"", "timestamp":"", "signType":"", "sign":"" } ```