接口约定
2024年9月26日大约 1 分钟
接口约定
编码
数据编码统一为 utf-8
。
密钥
接口文档中提到的 merch_sn
& secret
,是指商户号及密钥,可在商户后台设置接口密钥信息栏查看。
字段选填
对于接口参数标记为 选填
的字段,可传入具体的值或者空字符串。
数据提交
对于有数据提交的接口,统一使用 POST
的方式 。相关请求头的 Content-Type
字段为:
application/json
签名算法
为保障接口安全,系统端会对接收到的所有数据,使用请求头 Signature
匹配校验,防止数据被非法篡改。
Signature
签名步骤
- 假设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名 ASCII 码从小到大排序(字典序),使用 URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串 signstr。
- 在 signstr 最后拼接上 &secret=密钥 得到字符串,并对字符串进行 MD5 运算,再将得到的字符串所有字符转换为大写,得到Signature值。
签名规则
- 参数名 ASCII 码从小到大排序(字典序)。
- 参数的值为空不参与签名。
- 参数名区分大小写。
签名示例
例如签名参数如下:
{
"merch_sn": "12345678",
"order_id": "8883214567"
}
对参数按照 key=value 的格式,并按照参数名 ASCII 字典序排序
merch_sn=12345678&order_id=8883214567
对上一步中的字符串拼接 &secret=密钥
merch_sn=12345678&order_id=8883214567&secret=XXXXXXXXXXXXX
对上一步中的字符串取 md5 并转化为大写
sign = hashlib.md5(signstr.encode()).hexdigest().upper()
币种
货币名称 | 货币编码 |
---|---|
印度卢比 | INR |
印尼盾 | IDR |
赞比亚克瓦查 | ZMW |
巴西雷亚尔 | BRL |