签名认证与环境说明
更新时间: 2020-09-28
总述
1) Http请求方式
POST
2) 加密方式
- MD5签名
- DES加密消息体
3) 密钥
测试SecrectKey:12345678
生产SecrectKey:上线时确认
4) 字符集
所有字符集均采用UTF-8
5) 报文消息格式
Json消息格式。
请在Http请求头中指定Content-Type
Json:application/json
Json:
{
}
1. 供应商提供API规范
1.1 url列表:
参考各接口的文档描述定义url。
1.2 参数介绍
API的输入参数包含系统级参数和应用级参数。
系统级参数:
对于每个API均一致,用于加密、标识用户身份、API协议版本等用途。
系统级参数明细: |名称|是否必选|含义|类型|取值示例及说明|附加信息| |:---:|:---:|:---:|:---:|:---:|:---:| |domain|是|供应商URL|String| |url中定义| |channel|是|渠道|String| |url中定义| |version|是|API版本号|String|2.0|url中定义| |timestamp|是|时间戳|String|yyyyMMddHHmmss|url中定义| |sign|是 |API输入参数签名结果|String|XXXXXXX|url中定义|
应用级参数:
针对API的不同用途,应用级参数各不相同,详细参见供应商对接文档。
1.3 消息体加密
使用DES加密,密钥为携程提供的SecrectKey。加密体是{应用级参数及参数值},加密。
密文= DESEncrypt({应用级参数及参数值}, SecrectKey)
DES加密规格:
ECB;
PKCS5Padding;
字节编码方式:16进制大写
示例
明文:
{"ctripPurchaseOrderId":881824257631123456,"vendorOrderId":"20201022205600","cancelReason":"系统取消"}
密文:(密钥:12345678)
0DFE985414998D36084BFF624CBAFC39D2B67742D881F7A40F9F9E9DC859C20BB19688B198C96439B2DE94C064F1FF14F187736F95529336FF71457A5BDFA882F8915340F3253FCB75283643F74C415ACD7E77E0A8505853A0764C44996A5919A6448FBF5B28F9B20C2F7CAFAB0AB326
1.4 签名方法
MD5签名将供应商ID、版本号、渠道、时间戳、加密密钥、消息体长度字符串拼接之后MD5加密。
Auth=MD5(VendorID+ Version + Channel +TimeStamp+SecrectKey+{消息体加密后内容}.Lenth)转换为小写字符
- +代表字符串拼接
- {消息体加密后内容}.Lenth. 代表加密后消息体长度,注意消息体中请清除所有/r/n 空格之类的格式化符号。
示例
VendorID:1000009
Version:2.0
Channel:JNT
TimeStamp:20201022202528
SecrectKey: 12345678
消息体加密后长度:224(消息体加密中的示例)
明文:
10000092.0JNT2020102220252812345678224
密文:
0cd45ac608448cb94b6bd886c7bb125c
2. 携程提供API规范
2.1 通信方式
携程采用API的方式为供应商提供业务数据推送等服务。
API地址:
- 生产环境:https://openapi-car.ctrip.com/chvendormessagebus
- 沙箱环境:https://testapi-car.ctrip.com/chvendormessagebus/sandbox
2.2 消息体加密
使用DES加密,密钥为携程提供的SecrectKey。加密体是{body内容},加密。
密文=DESEncrypt({body内容}, SecrectKey)
DES加密规格:
ECB;
PKCS5Padding;
字节编码方式:16进制大写
2.3 签名
MD5签名将供应商Id、请求时间戳、加密密钥、消息体长度字符串拼接之后MD5加密。
Auth =MD5(VendorID+TimeStamp+SecrectKey+{Envelope加密后内容}.Lenth) 转换为小写字符
- +代表字符串拼接
- {Envelope加密后内容}.Lenth代表加密后Envelope长度,注意Envelope中请清除所有/r/n 空格之类的格式化符号。