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 附带信息(暂时不用)