H5 接入指南

最近更新:2020年7月1日

接入流程图

pic244

在开放平台创建应用后,获取appId、appSecret、salt

一、header公共参数

参数名参数类型是否必须示例参数说明
appIdString开放平台申请的Id
appSecretString开放平台申请的secret
signString经过加密生成的sign
timestampString2020-05-21 11:07:50发送请求的时间,格式"yyyy-MM-dd HH:mm:ss"
nonceStringSUzI1NiIsIn唯一的随机字符串(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

名称类型是否必须备注说明
appIdString应用标识创建应用后自动生成
appSecretString应用秘钥创建应用后自动生成

请求体 Body

名称类型是否必须备注说明
mobileString用户手机以mobile作为用户标识
outUserIdString第三方平台用户标识第三方平台用户ID
aliasString昵称主档案字段
sexString性别主档案字段 MALE:男 FEMALE:女
birthdayString生日主档案字段 yyyy-MM-dd
heightInteger身高CM
weightInteger体重KG
smokerString是否吸烟Y:是 N:否 NA:不确定(默认)
diabetesString是否高血糖Y:是 N:否 NA:不确定(默认)
hypertensionString是否高血压Y:是 N:否 NA:不确定(默认)
pregnancyString是否怀孕Y:是 N:否 NA:不确定(默认)

返回数据

名称类型是否必须备注说明
codeinteger响应码0-success 非0-error
msgstring响应信息
dataobject业务对象{  openId:"efadkafhfw38994",  channel:"38",  redirectUrl: "第三方跳转H5 URL"  }

2. 接口名称:疾病—挂号科室匹配

注:该接口仅适用产品“AI分诊”

请求体 Body

名称类型是否必须备注说明
userIdString第三方平台用户标识第三方平台用户ID(唯一值)
caseIdString评估编号评估编号
dateDate评估日期时间评估日期时间
diseaseIdString疾病ID疾病ID(ICD-10)
diseaseString疾病名称疾病名称
departmentDepartmentInfo挂号科室名称推荐挂号科室 key=id,value=name

DepartmentInfo

名称类型是否必须备注说明
firstDepartCodeString一级科室code
firstDepartNameString一级科室name
secondDepartCodeString二级科室code
secondDepartNameString二级科室name
thirdDepartCodeString三级科室code
thirdDepartNameString三级科室name

返回数据

名称类型是否必须备注说明
codeinteger响应码0-success 非0-error
messagestring响应信息
dataobject业务对象{  url: "第三方跳转H5 URL"  }

四、接入成功(示意图)

pic123