1 概述
本文档描述了业务综合平台对外http接口协议,包括接口定义、数据格式、参数和返回信息等,满足第三方系统与业务综合平台对接需求。
本文档接口协议仅满足如下流程:
第三方平台作为业务发送方,调用业务综合平台对外API系统,完成相关业务功能的实现。
2 接入说明
第三方系统开发商接入业务综合平台的开发工作流程如下图所示,包括以下几个步骤:
1、第三方系统开发商提出集成开发申请,从企智获取所需的接口文档,接口地址;
2、业务综合平台提供调试环境的合作商id(partnerId),以及调试合作商密钥(partnerSecret数据加密使用),提供给第三方系统开发商;
3、第三方系统开发商根据接口文件定义的规范和协议,访问业务综合平台调试服务器提供的接口服务,完成集成开发工作;
4、集成开发完成后,业务综合平台提供正式环境的合作商id(partnerId),创建正式合作商密钥(partnerSecret数据加密使用),并提供给第三方系统开发商;
5、第三方系统开发商把集成开发的内容部署到生产环境,并把调试接口地址改为正式接口地址。
3 名词说明及验签
partnerId: 合作商id
partnerSecret: 合作商密钥
sign: 签名
accessToken: 令牌
bizData: 参数json格式(具体见各接口参数定义)
seqId:当次请求唯一码,方便跟踪数据在上下游链路的流向,非必须
业务通用格式
{
"partnerId": "合作商id",
"accessToken": "令牌",
"bizData": {
"参数A": "parameA",
"参数B": "parameB",
"参数C": "parameC",
"参数D": "parameD"
},
"seqId":"12345678保证唯一"
}
验签
sign:签名(signature),使用MD5算法对请求Json体和partnerSecret(合作商密钥)生成的签名。规则如下:
sign=md5(jsonbody+partnerSecret) ,合作商密钥partnerSecret同客户号一起提供。
如: md5({"partnerId":"合作商id","accessToken":"令牌","bizData":{"参数A":"parameA","参数B":"parameB","参数C":"parameC","参数D":"parameD"},"seqId":"12345678保证唯一"}+ partnerSecret)
签名以键值对的形式sign=XXXXX)存储在消息头里面
4 AccessToken管理
4.1 获取accessToken
请求格式Test Path(测试地址): http://newapi.zhihuishitang.net/gateway/openApi/accessToken/get
Prod Path(正式地址): https://sc-api.zhihuishitang.net/gateway/openApi/accessToken/get
Method(请求方式): POST
{
"partnerId": "合作商id",
"partnerSecret": "合作商密钥"
}
请求参数说明:
参数 | 类型 | 描述 |
---|---|---|
partnerId | String | 合作商id |
partnerSecret | String | 合作商密钥 |
{
"success": true,
"code": "10000",
"msg": "业务处理成功",
"data": {
"accessToken": "accessToken值"
},
"extra": null
}
返回参数说明:
参数 | 类型 | 描述 |
---|---|---|
success | Boolean | 是否成功 |
code | String | 编码10000表示成功 |
msg | String | 返回信息(失败返回失败原因) |
data | String | 返回数据 |
├─ accessToken | String | accessToken |
extra | String | 附带信息(暂时不用) |
6 扣款业务
6.1 用户组扣款
请求格式Test Path(测试地址): http://newapi.zhihuishitang.net/gateway/openApi/order/pay/userGroupOrder
Prod Path(正式地址): https://sc-api.zhihuishitang.net/gateway/openApi/order/pay/userGroupOrder
Method(请求方式): POST
{ "partnerId": "合作商id", "accessToken": "accessToken", "bizData": { "userId": "用户唯一ID", "cardNo": "卡号", "deviceNo": "设备唯一编号NO", "payType": "支付类型(例:1刷卡,2人脸)" }, "seqId":"当次请求唯一码" }
请求参数说明:
参数 | 类型 | 描述 |
---|---|---|
partnerId | String | 合作商id |
accessToken | String | accessToken |
bizData | String | 参数集合 |
├─ userId | String | 用户唯一ID(支付类型为人脸时必填,刷卡选填) |
├─ cardNo | String | 卡号(十位十进制卡号) |
├─ deviceNo | String | 设备唯一编号NO(必填) |
├─ payType | String | 支付类型(1刷卡,2人脸)(必填) |
seqId | String | 当次请求唯一码(非必须) |
*备注:支付类型人脸时,userId为必填选项,支付类型为卡号时,userId,cardNo必填,卡号规则,卡号倒置,转换为十位十进制,不足十位前面补0.例:220A612C转换为2C610A22再转为0744557090,220A61转换为610A22再转为0006359586
返回格式{ "success": true, "code": "10000", "msg": "业务处理成功", "data": { "departmentName": "研发部", "realityPayAmount": "0.01", "freeBalance": "9999.01", "userName": "张三", "employeeNo": "XS001" }, "extra": null }
返回参数说明:
参数 | 类型 | 描述 |
---|---|---|
success | Boolean | 是否成功 |
code | String | 编码10000表示成功 |
msg | String | 返回信息(失败返回失败原因) |
data | String | 返回数据 |
├─ userName | String | 姓名 |
├─ employeeNo | String | 工号 |
├─ departmentName | String | 部门名称 |
├─ realityPayAmount | String | 支付金额 |
├─ freeBalance | String | 可用余额 |
extra | String | 附带信息(暂时不用) |
6.2 用户组扣款(补扣)
请求格式Test Path(测试地址): http://newapi.zhihuishitang.net/gateway/openApi/order/pay/userGroupOrderRepair
Prod Path(正式地址): https://sc-api.zhihuishitang.net/gateway/openApi/order/pay/userGroupOrderRepair
Method(请求方式): POST
{ "partnerId": "合作商id", "accessToken": "accessToken", "bizData": { "userId": "用户唯一ID", "cardNo": "卡号" "deviceNo": "设备唯一编号NO", "payType": "支付类型(例:1刷卡,2人脸)", "payTime": "扣款时间", "periodPlanId": "餐段计划id", "periodNameId": "餐段名字id" }, "seqId":"当次请求唯一码" }
请求参数说明:
参数 | 类型 | 描述 |
---|---|---|
partnerId | String | 合作商id |
accessToken | String | accessToken |
bizData | String | 参数集合 |
├─ userId | String | 用户唯一ID(支付类型为人脸时必填,刷卡选填) |
├─ cardNo | String | 卡号(十位十进制卡号) |
├─ deviceNo | String | 设备唯一编号NO(必填) |
├─ payType | String | 支付类型(1刷卡,2人脸)(必填) |
├─ payTime | Long | 支付时间(必填) |
├─ periodPlanId | Long | 餐段计划id(补扣失败再次修正时填写) |
├─ periodNameId | Long | 餐段名字id(补扣失败再次修正时填写) |
seqId | String | 当次请求唯一码(非必须) |
*备注1:支付类型人脸时,userId为必填选项,支付类型为卡号时,userId,cardNo必填,卡号规则,卡号倒置,转换为十位十进制,不足十位前面补0.例:220A612C转换为2C610A22再转为0744557090,220A61转换为610A22再转为0006359586
*备注2:餐段计划id,餐段名字id字段.第一次补扣失败之后,人工查询添加进行第二次补扣
返回格式{ "success": true, "code": "10000", "msg": "业务处理成功", "data": { "departmentName": "研发部", "realityPayAmount": "0.01", "freeBalance": "9999.01", "userName": "张三", "employeeNo": "XS001" }, "extra": null }
返回参数说明:
参数 | 类型 | 描述 |
---|---|---|
success | Boolean | 是否成功 |
code | String | 编码10000表示成功 |
msg | String | 返回信息(失败返回失败原因) |
data | String | 返回数据 |
├─ userName | String | 姓名 |
├─ employeeNo | String | 工号 |
├─ departmentName | String | 部门名称 |
├─ realityPayAmount | String | 支付金额 |
├─ freeBalance | String | 可用余额 |
extra | String | 附带信息(暂时不用) |