H5 接入指南
最近更新:2020年7月1日
接入流程图
在开放平台创建应用后,获取appId、appSecret、salt
一、header公共参数
参数名 | 参数类型 | 是否必须 | 示例 | 参数说明 |
---|---|---|---|---|
appId | String | 是 | 开放平台申请的Id | |
appSecret | String | 是 | 开放平台申请的secret | |
sign | String | 是 | 经过加密生成的sign | |
timestamp | String | 是 | 2020-05-21 11:07:50 | 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" |
nonce | String | 是 | SUzI1NiIsIn | 唯一的随机字符串(15分钟内) |
二、生成sign(前后端公用)
1. 按照请求参数名的字母升序排列非空请求参数(包含appId),使用URL键值对的格式(即key1=value1&key2=value2…)
拼接成字符串stringA;
2. stringA最后拼接上`salt`得到字符串`stringSignTemp`;(md5)
3. 对`stringSignTemp`进行加密运算,并将得到的字符串所有字符转换为大写,得到sign值。
graph TD
appId --> sign
接口参数 --> sign
salt -.参与加密, 但不传输.-> sign
/**
* 方法描述:签名字符串
*/
public static String sign(Map<String, Object> params, String salt) {
StringBuilder sb = new StringBuilder();
params.put("salt", salt);
// 将参数以参数名的字典升序排序
Map<String, Object> sortParams = new TreeMap<>(params);
// 遍历排序的字典,并拼接a=b&c=d格式
for (Map.Entry<String, Object> entry : sortParams.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().toString().trim();
if (!StringUtils.isEmpty(value)){
sb.append("&").append(key).append("=").append(value);
}
}
String rawString = sb.toString().replaceFirst("&","");
log.info("签名前字符串:"+ rawString);
params.remove("salt");
String signString = md5(rawString).toUpperCase();
log.info("签名后字符串:"+signString);
return signString;
}
三、接口列表
1. 接口名称:用户注册授权
Method:POST
(测试环境)Path:https://stg-open.adahealth.cn/api/user/v2/register
(生产环境)Path:https://open.adahealth.cn/api/user/v2/register
Header
名称 | 类型 | 是否必须 | 备注 | 说明 |
---|---|---|---|---|
appId | String | 是 | 应用标识 | 创建应用后自动生成 |
appSecret | String | 是 | 应用秘钥 | 创建应用后自动生成 |
请求体 Body
名称 | 类型 | 是否必须 | 备注 | 说明 |
---|---|---|---|---|
mobile | String | 是 | 用户手机 | 以mobile作为用户标识 |
outUserId | String | 是 | 第三方平台用户标识 | 第三方平台用户ID |
alias | String | 是 | 昵称 | 主档案字段 |
sex | String | 是 | 性别 | 主档案字段 MALE:男 FEMALE:女 |
birthday | String | 是 | 生日 | 主档案字段 yyyy-MM-dd |
height | Integer | 否 | 身高 | CM |
weight | Integer | 否 | 体重 | KG |
smoker | String | 否 | 是否吸烟 | Y:是 N:否 NA:不确定(默认) |
diabetes | String | 否 | 是否高血糖 | Y:是 N:否 NA:不确定(默认) |
hypertension | String | 否 | 是否高血压 | Y:是 N:否 NA:不确定(默认) |
pregnancy | String | 否 | 是否怀孕 | Y:是 N:否 NA:不确定(默认) |
返回数据
名称 | 类型 | 是否必须 | 备注 | 说明 |
---|---|---|---|---|
code | integer | 是 | 响应码 | 0-success 非0-error |
msg | string | 否 | 响应信息 | |
data | object | 是 | 业务对象 | { openId:"efadkafhfw38994", channel:"38", redirectUrl: "第三方跳转H5 URL" } |
2. 接口名称:疾病—挂号科室匹配
注:该接口仅适用产品“AI分诊”
请求体 Body
名称 | 类型 | 是否必须 | 备注 | 说明 |
---|---|---|---|---|
userId | String | 是 | 第三方平台用户标识 | 第三方平台用户ID(唯一值) |
caseId | String | 是 | 评估编号 | 评估编号 |
date | Date | 是 | 评估日期时间 | 评估日期时间 |
diseaseId | String | 是 | 疾病ID | 疾病ID(ICD-10) |
disease | String | 是 | 疾病名称 | 疾病名称 |
department | DepartmentInfo | 是 | 挂号科室名称 | 推荐挂号科室 key=id,value=name |
DepartmentInfo
名称 | 类型 | 是否必须 | 备注 | 说明 |
---|---|---|---|---|
firstDepartCode | String | 是 | 一级科室code | |
firstDepartName | String | 是 | 一级科室name | |
secondDepartCode | String | 是 | 二级科室code | |
secondDepartName | String | 是 | 二级科室name | |
thirdDepartCode | String | 是 | 三级科室code | |
thirdDepartName | String | 是 | 三级科室name |
返回数据
名称 | 类型 | 是否必须 | 备注 | 说明 |
---|---|---|---|---|
code | integer | 是 | 响应码 | 0-success 非0-error |
message | string | 否 | 响应信息 | |
data | object | 是 | 业务对象 | { url: "第三方跳转H5 URL" } |