# 挂号 API 接入
# 1.背景介绍
该文档主要是针对腾讯健康小程序现有的挂号流程来设计,后续如果有变更,会在该版本基础上向下兼容处理。 该文档主要用来约定从合作方接口获取数据时的请求和响应
大体的流程时序可以参考下图
a.静态数据的定期同步
b.实时接口调用和挂号流程
# 2.接口说明
接入前必看
具体要实现的接口说明点我 (opens new window)
- 网关接入请看网关接入标准
- 网关接入文档中的
$app
直接用guahao
替代即可eg : https://med-biz-pre.wecity.qq.com/api/guahao/notifyChangeStatus/10000007
- 文档中非必传的字段可以不传,如果传了,相应的值必须要有特定的含义。不能为 undefined 或者 null
- 文档中的必传字段,根据类型可以有不同的默认值。
- a) 类型为 int,如果合作方返回
-1
,意味着该字段合作方无法提供有效值,腾讯侧会丢弃该字段- b) 类型为 string,如果合作方返回
''
,意味着该字段合作方无法提供有效值,腾讯侧会丢弃该字段- c) 类型为 array,如果合作方返回
[]
,意味着该字段合作方无法提供有效值,腾讯侧会丢弃该字段- d) 类型为 object,直接返回
{}
,意味着该字段合作方无法提供有效值,腾讯侧会丢弃该字段
# 2.1 静态基础数据(渠道提供)
1、这里主要指一些静态数据,腾讯侧会定期去拉取合作方方接口,并增量更新
2、考虑到不同合作方对接口拉取规则策略的不同(如:频率,单次拉取数据量等),腾讯侧可以适配不同的拉取策略
3、这些接口对实时性要求不一定高,但要求数据的准确性
# 2.1.1 批量获取医院信息
- 该接口主要用来批量获取合作方提供的医院信息
- 如果指定了 hospitalId,就获取指定医院的信息
接口名:
hospitals
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✖️ | 缺省时查询所有的医院信息 |
2 | cityCode | 城市 code | string | ✖️ | 缺省时查询所有城市医院 |
3 | areaCode | 区域 code | string | ✖️ | 缺省时查询城市下的所有区域医院 |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | count | 总记录条数 | int | ✔️ | |
4 | rsp | 返回详情 | array[HospitalInfo] | ✔️ |
# HospitalInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | |
2 | hospitalName | 医院名称 | string | ✔️ | 如医院有东、西院区,本次合作的业务在东院区,医院名称就需要返回 XX 医院(东院区),不能返回 xx 医院,同理则返回 XX 医院(西院区) |
3 | hospitalShortName | 医院简称 | string | ✖️ | |
4 | cityCode | 城市编码 | string | ✔️ | 参考附录 CityCode & AreaCode |
5 | areaCode | 区域编码 | string | ✔️ | 参考附录 CityCode & AreaCode |
6 | address | 医院地址 | string | ✔️ | |
7 | detail | 医院介绍 | string | ✖️ | |
8 | tel | 医院联系方式 | string | ✖️ | |
9 | geo | 医院经纬度地址 | string | ✔️ | 格式: 经度,维度 (以高德/腾讯地图为准) |
10 | url | 医院官网链接 | string | ✖️ | |
11 | logo | 医院 logo 链接 | string | ✔️ | |
12 | alias | 医院别名 | string | ✖️ | |
13 | hospitalLevel | 医院等级 | int | ✔️ | HospitalLevel |
14 | hospitalType | 医院类型 | int | ✔️ | HospitalType |
15 | hospitalRules | 医院预约规则 | array[string] | ✖️ | |
16 | branches | 分院列表 | array[HospitalInfo] | ✔️ | |
17 | pageSize | 每页拉取的数量 | int | ✖️ | 默认拉取所有 |
18 | pageNo | 拉取第几页的数据 | int | ✖️ | 默认拉取所有 |
19 | payMethod | 支付方式 | int | ✖️ | 0:现场支付 1:现场和线上都支持 2:强制线上 |
20 | payPassTime | 非当天支付过期时间 | int | ✖️ | 单位:分 默认:半小时 部分合作方的当天和非当天支付时间不一样 |
21 | todayPayPassTime | 当天支付过期时间 | int | ✖️ | 单位:分 默认:半小时 |
22 | treatGuide | 就诊指引 | string | ✖️ | |
23 | smsContent | 短信模板 | string | ✖️ | 这里的动态信息用占位符代替,具体的字段参照 SmsTemplateParams |
24 | isNeedTreatCard | 是否需要就诊卡 | int | ✔️ | 0:不需要;1:需要 |
25 | letOutSourceTime | 放号时间 | string | ✖️ | 格式:HH:mm |
26 | letOutDays | 放号天数 | int | ✖️ | 单位:天 |
# SmsTemplateParams
- 如果这里有字段不在列表中的,由于所有的接口命名规范统一,均可以在其他接口中找到相关参考字段
- 举个例子:
短信内容:
深圳市南山人民医院预约提示:订单号143185360,南山疼痛科门诊廖翔医生2019年07月29日(09:30-10:00) ,取号密码:4141471761,持身份证提前30分钟完成取号,无需打印预约凭条(口腔科除外),不能就诊及时取消, 就诊人:杨正祥。
smsContent 内容
${hospitalName}预约提示:订单号${appointId},${departmentName}${doctorName}医生${treatDate}(${sourceBeginTime}-${sourceEndTime}) ,取号密码:${hisTakeNo},持身份证提前30分钟完成取号,无需打印预约凭条(口腔科除外),不能就诊及时取消, 就诊人:${patientName}。
序号 | 字段 | 名称 | 类型 | 备注 |
---|---|---|---|---|
1 | hospitalName | 医院名称 | string | |
2 | departmentName | 科室名称 | string | |
3 | appointId | 医院订单号 | string | |
4 | doctorName | 医院名称 | string | |
5 | treatDate | 就诊日期 | string | |
6 | sourceBeginTime | 就诊开始时间 | string | |
7 | sourceEndTime | 就诊结束时间 | string | |
8 | patientName | 就诊人姓名 | string | |
9 | hisTakeNo | 取号密码 | string |
# 2.1.2 获取科室信息
- 该接口主要用来获取指定医院或分院的所有科室信息
- 对于有些 his 系统,可能实际还是要去 his 实时拉取科室信息。主要是针对当天挂号科室有变化的场景
接口名:
departments
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | |
2 | branchHospitalId | 分院 ID | string | ✖️ | 如果有分院则必须传分院,否则可能导致获取科室信息异常 |
3 | departmentId | 科室 ID | string | ✖️ | 缺省获取医院的所有科室 |
4 | isAll | 是否返回所有科室 | int | ✖️ | 默认返回所有科室 0:返回所有科室 1:只返回有号源可预约的科室 |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | count | 总记录条数 | int | ✔️ | |
4 | rsp | 返回详情 | array[DepartmentInfo] | ✔️ |
# DepartmentInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | 如果所属为分院,这里为分院 ID |
2 | departmentId | 科室 ID | string | ✔️ | |
3 | parentId | 父级科室 ID | string | ✖️ | 如果为一级科室,该值可留空 |
4 | departmentName | 科室名 | string | ✔️ | |
5 | departmentShortName | 科室简称 | string | ✖️ | |
6 | detail | 科室简介 | string | ✖️ | |
7 | tel | 科室电话 | string | ✖️ | |
8 | isToday | 是否当天挂号的科室 | int | ✖️ | 0 : 非当天 1:当天 2:都支持 |
9 | leftNum | 可预约数 | int | ✖️ | |
10 | treatLimit | 诊疗范围 | string | ✖️ | |
11 | totalDoctorCount | 医生总数 | int | ✖️ | |
12 | sourceBeginTime | 放号时间 | string | ✖️ | 格式:HH:mm |
13 | departmentRule | 科室的预约规则 | DepartmentRule | ✖️ | |
14 | pageSize | 每页拉取的数量 | int | ✖️ | 默认拉取所有 |
15 | pageNo | 拉取第几页的数据 | int | ✖️ | 默认拉取所有 |
16 | payMethod | 支付方式 | int | ✖️ | 0:现场支付 1:现场和线上都支持 2:强制线上 |
17 | payPassTime | 支付过期时间 | int | ✖️ | 单位:分 默认:半小时 |
18 | notice | 科室公告 | string | ✖️ |
# DepartmentRule
如果没有限制,给空值即可
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | RULE_REGISTER_AGE_MIN | 最小年龄限制 | int | ✔️ | eg:18 |
2 | RULE_REGISTER_AGE_MAX | 最大年龄限制 | int | ✔️ | eg:40 |
3 | RULE_REGISTER_SEX | 性别限制 | int | ✔️ | 0:男 1:女 |
4 | RULE_REGISTER_TIPS_SHOW | 是否显示科室公告 | int | ✔️ | 0:不显示 1:滚动显示 2:弹窗显示 |
5 | RULE_REGISTER_COUNT_LIMIT | 预约次数限制 | int | ✔️ | 0:不限制 其他大于 0 的就是限制的次数 |
# 2.1.3 获取医生信息
- 对于有些 his 系统可能没有批量获取医生信息的接口,需要依赖于获取排班的时候才能拿到医生信息
接口名:
doctors
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | |
2 | departmentId | 科室 ID | string | ✔️ | |
3 | doctorId | 医生 ID | string | ✖️ | 缺省获取指定科室的所有医生 |
4 | branchHospitalId | 分院 ID | string | ✖️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | count | 总记录条数 | int | ✔️ | |
4 | rsp | 返回详情 | array[DoctorInfo] | ✔️ |
# DoctorInfo
由于
支付方式
和支付过期时间
在医院、科室和医生接口都存在,而实际情况也是各个不同合作方定义的维度不一样。这里的优先级是:医生 > 科室 > 医院
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | |
2 | departmentId | 科室 ID | string | ✔️ | |
3 | doctorId | 医生 ID | string | ✔️ | |
4 | doctorName | 医生名 | string | ✔️ | |
5 | sex | 性别 | int | ✖️ | 0 :男,1:女,2:其他 |
6 | no | 医生工号 | string | ✖️ | |
7 | ZCID | 职称名称 | string | ✔️ | 这里填表格里对应的中文,对应不上就填其他 |
8 | avatar | 医生头像 | string | ✔️ | 必须要返回医生的真实头像。如果没有,直接传空字符串即可,腾讯健康这边会有默认头像替代 |
9 | detail | 医生简介 | string | ✔️ | |
10 | goodAt | 医生擅长 | string | ✔️ | |
11 | payPassTime | 支付时间(分钟为单位) | int | ✖️ | 0 或者空表示没有限制 默认:半小时 |
12 | isTimeReg | 是否有分时 | int | ✖️ | 0 :否,1:是 |
13 | payMethod | 支付方式 | int | ✖️ | 0:现场支付 1:现场和线上都支持 2:强制线上 |
# 2.2 动态业务数据(渠道提供)
1、这些接口主要是需要腾讯侧从合作方实时调用,以保证整个挂号业务的完整性和良好的体验 2、以下接口对接口的响应质量会有一定要求,具体以相关产品指标为准
# 2.2.1 获取医生排班信息
接口名:
scheduleInfo
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | |
2 | departmentId | 科室 ID | string | ✔️ | |
3 | doctorId | 医生 ID | string | ✖️ | 缺省时获取当前科室所有医生排班信息 |
4 | beginDate | 排班开始日期 | string | ✖️ | 格式:yyyy-MM-dd |
5 | endDate | 排班结束日期 | string | ✖️ | 格式:yyyy-MM-dd (如果没有传递时间,默认返回当天的排班信息) |
6 | branchHospitalId | 分院 ID | string | ✖️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | count | 总记录条数 | int | ✔️ | |
4 | rsp | 返回详情 | array[ScheduleInfo] | ✔️ | 无数据时,返回空数组 |
# ScheduleInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | doctorId | 医生 ID | string | ✔️ | |
2 | scheduleId | 排班 ID | string | ✔️ | 必须保证唯一性供业务正常使用 |
3 | doctorName | 医生姓名 | string | ✔️ | |
4 | treatDate | 出诊日期 | string | ✔️ | 格式:yyyy-MM-dd |
5 | appointMaxCount | 最大预约次数 | int | ✖️ | |
6 | appointedNum | 已预约次数 | int | ✖️ | |
7 | leftNum | 剩余可预约次数 | int | ✔️ | |
8 | registerFee | 挂号费用 | int | ✔️ | 单位:分 ;没有用 0 表示 |
9 | treatFee | 诊疗费用 | int | ✖️ | 单位:分 ;没有用 0 表示 |
10 | clinicUnitId | 诊疗单元代码 | string | ✖️ | |
11 | clinicUnitName | 诊疗单元名称 | string | ✖️ | |
12 | sourceType | 班别代码 | string | ✔️ | 详见 SourceType |
13 | sourceTypeName | 班别名称,如上午、下午 | string | ✖️ | |
14 | miFee | 医保模式的挂号费用 | int | ✖️ | 单位:分 ;没有用 0 表示 |
15 | isPrecise | 是否为精准预约排班 | int | ✖️ | 是否为精准预约排班 0-否 1-是 不传则为默认:否 |
16 | extra | 扩展透传字段 | string | ✖️ | 如果合作方有返回,在获取号源的接口就原样带回 |
17 | scheduleStatus | 排班状态 | int | ✖️ | 0-正常排班,1-停诊排班,默认正常排班 |
18 | scheduleInfoExtra | 扩展字段 | object | ✖️ | 基于有些特殊的合作方需要从排班来获取医生的信息,这里设计扩展字段作为兼容 详见 ScheduleInfoExtra |
# ScheduleInfoExtra
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | doctorZCID | 医生职称名称 | string | ✖️ | 这里填表格里对应的中文,对应不上就填其他 |
2 | doctorAvatar | 医生头像 | string | ✖️ | |
3 | doctorDetail | 医生简介 | string | ✖️ | |
4 | doctorGoodAt | 医生擅长 | string | ✖️ |
# 2.2.2 获取号源相关信息
接口名:
sourceInfo
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | |
2 | departmentId | 科室 ID | string | ✔️ | |
3 | scheduleId | 排班 ID | string | ✔️ | |
4 | branchHospitalId | 分院 ID | string | ✖️ | |
5 | doctorId | 医生 ID | string | ✖️ | |
6 | treatDate | 就诊日期 | string | ✖️ | 格式:yyyy-MM-dd |
9 | clinicUnitId | 诊疗单元代码 | string | ✖️ | |
10 | sourceType | 班别代码 | string | ✖️ | 详见 SourceType |
11 | extra | 透传信息 | string | ✖️ | 如果排班接口合作方有返回就原样带回 |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | count | 总记录条数 | int | ✔️ | |
4 | rsp | 返回详情 | array[SourceInfo] | ✔️ | 无数据时,返回空数组 |
# SourceInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | sourceId | 号源 ID | string | ✔️ | 必须保证唯一性供业务正常使用 |
2 | sourceBeginTime | 开始时间 | string | ✖️ | 格式:HH:mm eg:08:30,时间类型为 0、1 时,不可为空 |
3 | sourceEndTime | 结束时间 | string | ✖️ | 格式:HH:mm eg:09:00,时间类型为 0 时,不可为空 |
4 | sourceTimeType | 时间类型 | int | ✔️ | 默认为 0,标准起始时间段格式详见 SourceTimeType |
5 | sourceTimeDesc | 时间描述 | string | ✖️ | 号源时间描述,时间类型为 1、2 时,当前字段不能为空 |
6 | leftNum | 剩余号源数 | int | ✔️ | |
7 | sourceExtra | 号源接口的扩展字段 | string | ✖️ | 有些合作方的需要在锁号时原样带回 |
# 2.2.3 获取用户可用服务对象列表(可选)
在用户通过移动服务挂号时调用该接口获取该患者可用的服务对象
接口名:
serviceObjects
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | |
2 | branchHospitalId | 分院 ID | string | ✖️ | |
3 | treatCardNo | 就诊卡号 | string | ✔️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | count | 总记录条数 | int | ✔️ | |
4 | rsp | 返回详情 | array[ServiceObjectInfo] | ✔️ |
# ServiceObjectInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | serviceObjectId | 服务对象代码 | string | ✔️ | 新增 KID02 编码代表少儿医保 |
2 | serviceObject | 患者服务对象(人群 ) | string | ✔️ | |
3 | isInsuran | 是否为医保结算 | string | ✔️ | 0:否, 1:是;默认为 0 |
4 | hasDisease | 是否有病种选择 | int | ✔️ | 0:否, 1:是;默认为 0 |
# 2.2.4 获取优惠费用信息(可选)
- 在用户通过移动服务挂号时调用该接口获取该患者的优惠金额
- 如果需要根据不同类型患者实现不同的挂号收费,则挂号费通过本接口出参 regFee、treatFee 返回,appointment.getScheduleInfo、register.getScheduleInfo 接口出参 regFee、treatFee 调整为返回 0;
接口名: reduceInfo
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | |
2 | branchHospitalId | 分院 ID | string | ✖️ | |
3 | departmentId | 科室 ID | string | ✔️ | |
4 | doctorId | 医生 ID | string | ✔️ | |
5 | scheduleId | 排班 ID | string | ✔️ | |
6 | sourceId | 号源 ID | string | ✔️ | |
7 | patientId | 就诊人 ID | string | ✔️ | |
8 | treatDate | 就诊日期 | string | ✔️ | yyyy-MM-dd |
9 | treatCardNo | 就诊卡号 | string | ✔️ | |
10 | serviceObjectId | 服务对象 ID | string | ✔️ | |
11 | sourceType | 班别代码 | string | ✔️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | count | 总记录条数 | int | ✔️ | |
4 | rsp | 返回详情 | array[ReduceInfo] | ✔️ |
# ReduceInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | fee | 优惠金额 | int | ✔️ | 单位:分 |
2 | serviceObject | 患者服务对象(人群) | string | ✔️ | |
3 | medicareSettleLogId | 医保预结算参数 | string | ✖️ | 目前仅支持线上医保结算 |
4 | cashFee | 医保挂号的个人现金支付金额 | int | ✖️ | 单位:分 |
5 | insuranFee | 医保挂号的个人医保账户金额 | int | ✖️ | 单位:分 说明:医保支付时,insuranFee 与 medicareSettleLogId 都不可为空,否则当自费流程进行 |
6 | registerFee | 挂号实际所需挂号费用 | int | ✖️ | 单位:分 |
7 | treatFee | 挂号实际所需诊疗费用 | int | ✖️ | 单位:分 regFee 与 treatFee 二者中,任意一个字段有金额时,患者实际支付的费用将根据(regFee + treatFee- yhFee)如为医保用户,则以医保 |
# 2.2.5 锁号(预约)
- 如果当天,则为当天挂号。非当天则为预约挂号
- 预约时,默认会锁定号源
- 不需要支付的直接调用该接口即可
- 非常重要: 为了保证防止用户重复支付的情况,腾讯侧和合作方去微信统一下单时,以合作方返回的
appointId
为下单号
流程图:
说明:
腾讯在请求合作方锁号接口时,会出现三种情况:
- 锁号成功,返回 code=0;
- 锁号失败,返回 code 非 0;
- 不确定锁号状态,不返回,直接让接口调用超时,这个时候腾讯会轮询合作方订单状态,具体流程见异常处理。
异常处理: 接口调用超时,此时腾讯会定时调用 appointOrders 挂号指定订单信息查询接口来确认订单状态,整个轮询状态时间持续 3 分钟,当 3 分钟后腾讯仍未得到结果,会视为锁号失败,不处理。
接口名:
appoint
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | |
2 | departmentId | 科室 ID | string | ✔️ | |
3 | scheduleId | 排班 ID | string | ✔️ | |
4 | sourceId | 号源 ID | string | ✔️ | |
5 | doctorId | 医生 ID | string | ✔️ | |
6 | phone | 手机号 | string | ✖️ | |
7 | cardNo | 证件号码 | string | ✖️ | |
8 | cardType | 证件类型 | string | ✖️ | 详见 cardType |
9 | name | 就诊人姓名 | string | ✖️ | |
10 | sex | 就诊人性别 | int | ✖️ | 0 :男,1:女,2:其他 |
11 | birthday | 就诊人出生日期 | string | ✖️ | yyyy-MM-dd |
12 | patientId | 就诊人 ID | string | ✖️ | 如果是就诊卡的模式,只需要带就诊人的 ID 和就诊卡(treatCardNo)即可 |
13 | type | 预约方式 | int | ✔️ | 0:非就诊卡 ;1:就诊卡 (phone,treatCardNo,cardType,name,sex,birthday 都要填写) |
14 | branchHospitalId | 分院 ID | string | ✖️ | |
15 | registerType | 预约类型 | int | ✖️ | 0: 当天 1:非当天 |
16 | partnerOpenid | 用户在合作方的 openid | string | ✖️ | |
17 | sourceBeginTime | 就诊分时开始时间 | string | ✖️ | eg:08:30 |
18 | sourceEndTime | 就诊分时结束时间 | string | ✖️ | eg:09:00 |
19 | serviceObjectId | 服务对象 id | string | ✖️ | |
20 | registerFee | 挂号费 | int | ✖️ | 单位:分 |
21 | treatFee | 诊疗费 | int | ✖️ | 单位:分 |
22 | clinicUnitId | 诊疗单元代码 | string | ✖️ | |
23 | sourceType | 班别代码 | string | ✖️ | 详见 SourceType |
24 | hospitalName | 医院名 | string | ✖️ | |
25 | departmentName | 科室名 | string | ✖️ | |
26 | doctorName | 医生名 | string | ✖️ | |
27 | serviceObject | 患者服务对象 | string | ✖️ | |
28 | reduceFee | 优惠金额 | int | ✖️ | 单位:分 |
29 | treatCardNo | 就诊卡号 | string | ✖️ | |
30 | userId | 用户 ID | string | ✖️ | 用于唯一标识一个用户,对于某些有用户体系逻辑的合作方有用 |
31 | guardianName | 监护人姓名 | string | ✖️ | |
32 | guardianCardType | 监护人证件类型 | string | ✖️ | 详见 cardType |
34 | guardianCardNo | 监护人证件号 | string | ✖️ | |
35 | guardianPhone | 监护人手机号 | string | ✖️ | |
36 | guardianSex | 监护人性别 | int | ✖️ | |
37 | guardianRelation | 监护人与就诊人关系 | int | ✖️ | 详见 GuardianPatientRelationType |
38 | sourceExtra | 扩展字段 | string | ✖️ | 在SourceInfo接口中返回的扩展字段,原样带回 |
39 | visitType | 就诊类型 | int | ✖️ | 就诊类型,1:初诊,2:复诊,默认初诊,默认值为 1 |
40 | IDCardNoBeginDate | 身份证有效期起始日期 | string | ✖️ | |
41 | IDCardNoEndDate | 身份证有效期截止日期 | string | ✖️ | |
42 | provinceCode | 省份编码 | string | ✖️ | |
43 | isPrecise | 是否为精准预约排班 | int | ✖️ | 是否为精准预约排班 0-否 1-是 不传则为默认:否 |
44 | authCode | 验证码 | string | ✖️ | 预约挂号验证码 |
45 | hospitalName | 医院名称 | string | ✖️ | |
46 | departmentName | 科室名称 | string | ✖️ | |
47 | doctorName | 医生名称 | string | ✖️ | |
48 | healthCardId | 健康卡 ID | string | ✖️ | |
49 | extra | 扩展字段 | string | ✖️ | JSON 字符串 |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | rsp | 返回详情 | AppointInfo | ✔️ |
# AppointInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | cancelTime | 截止取消订单时间 | string | ✖️ | 格式:yyyy-MM-dd HH:mm:ss |
2 | paymentTime | 截止支付时间 | string | ✖️ | |
3 | hisTakeNo | 取号密码 | string | ✖️ | 医院终端取号密码 |
4 | appointId | 单次预约的 ID | string | ✔️ | |
5 | infoSeq | HIS 锁号 ID | string | ✔️ | |
6 | treatCardNo | 就诊卡号 | string | ✖️ | |
7 | bookingNo | HIS 系统生成的预约订单号 | string | ✖️ | |
8 | miFeeInfo | 医保支付的相关信息 | object <MiFeeInfo> | ✖️ | |
9 | queueNo | 排队序号 | string | ✖️ | |
10 | paymentFee | 需要支付的金额 | int | ✖️ | 单位:分 有些合作方或者医院只有在锁号时才能确定最终所需支付金额。如果该字段传递了有效值,将以该金额唤起微信收银台 |
11 | treatAddr | 就诊地点 | string | ✖️ | 患者详细就诊地点 |
12 | jumpInfo | 锁号完成需要跳转的相关信息 | object <JumpInfo> | ✖️ | 如果不需要跳转,直接不返回该字段即可 |
13 | newScheduleId | 更新后的排班 ID | string | ✖️ | 如果和请求参数内容一致,不需要返回 |
14 | newSourceId | 更新后的号源 ID | string | ✖️ | 如果和请求参数内容一致,不需要返回 |
15 | newSourceBeginTime | 更新后的就诊开始时间 | string | ✖️ | 如果和请求参数内容一致,不需要返回 |
16 | newSourceEndTime | 更新后的就诊结束时间 | string | ✖️ | 如果和请求参数内容一致,不需要返回 |
17 | treatCertName | 就诊凭证名称 | string | ✖️ | 如门诊号、病历号等 |
18 | treatCert | 就诊凭证内容 | string | ✖️ | |
19 | treatCertShowType | 就诊凭证展示方式 | int | ✖️ | 0:只展示文字内容(默认),1:二维码,2:条形码 |
20 | takeNoTime | 取号时间 | string | ✖️ | 格式:"MM 月 dd 日 HH 时前"或者"MM 月 dd 日 HH 时-HH 时",并且时间采用 24 小时制 |
21 | takeAddr | 取号地址 | string | ✖️ | |
22 | takeCert | 取号凭证 | string | ✖️ |
# MiFeeInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | allowFeeChange | 是否允许预结算费用发生变化 | int | ✔️ | 0:不允许,1:允许 |
2 | requestContent | 医保支付透传体 | string | ✔️ |
# JumpInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | type | 跳转的方式 | int | ✔️ | 1 :H5 2 :小程序 |
2 | path | 跳转的地址 | string | ✔️ | eg:H5 : https://www.qq.com/demo?appointId={appointId};小程序 :pages/register/demo?appointId={appointId} |
3 | version | 跳转的版本 | string | ✖️ | 只有当跳转目标为小程序时,该参数才有意义。正式环境默认都会跳转正式版。有时联调方便可以跳转体验版 trial |
3 | appId | 跳转的 appId | string | ✖️ | 只有当跳转目标为小程序时,该参数才有意义。目标小程序的 appId |
# 2.2.6 挂号(预约支付成功) (仅限:接入支付且为服务商模式)
用户支付成功后,收到微信回调结果后,再调用合作方同步支付和订单信息
流程图:
说明: 腾讯在请求合作方挂号接口时,会出现三种情况:
- 挂号成功,返回 code=0,此时合作方订单状态为 OrderStatus=6(挂号成功),PayStatus=2(已支付);
- 挂号失败,且需要腾讯退款,返回 code=-2,此时合作方的订单状态应该是 OrderStatus=5(锁号成功),PayStatus=2(已支付); 注意,腾讯在收到返回 code 为-2 时会做自动退款,请谨慎返回; 腾讯收到-2 状态时,会首先调用取消挂号接口,进行号源释放,此时合作方的订单的 OrderStatus=8(已取消)支付状态 PayStatus=2(已支付); 腾讯给用户发起退款,退款完成时,腾讯会同步退款状态给合作方,合作方在收到退款成功通知后,订单状态翻转为 OrderStatus=8(已取消),PayStatus=4(退款成功)。
- 当合作方也不确定 HIS 当前的状态,返回非 0 非 2,或不返回,直接让接口调用超时,这个时候腾讯会轮询合作方订单状态,具体流程见异常处理。 异常处理: 接口调用超时,此时腾讯会定时调用 appointOrderInfo 挂号指定订单信息查询接口来确认订单状态,整个轮询状态时间持续 3 分钟,3 分钟后,合作方依然没有返回,则视为异常订单,需人工> 介入处理。 查询接口返回值可能有三种情况:
- 之前的挂号请求合作方未收到,合作方订单状态为 OrderStatus=5(锁号成功),PayStatus=1(待支付),重试 3 分钟后合作方依然是该状态,腾讯会释放号源并自动退款;
- 合作方订单为 OrderStatus=6(挂号成功),PayStatus=2(已支付),视为挂号成功;
- 合作方订单为 OrderStatus=5(锁号成功),PayStatus=2(已支付),重试 3 分钟后合作方依然是该状态,需人工介入处理。
接口名:
register
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | registerFee | 挂号费 | int | ✖️ | 单位:分 |
2 | treatFee | 诊疗费 | int | ✖️ | 单位:分 |
3 | payAmount | 用户实际支付的费用 | int | ✖️ | 单位:分。支付成功微信回调时,用户支付的费用。如果是医保模式,这里是个账金额 |
4 | payMode | 支付类型 | int | ✖️ | 详见 PayMode |
5 | payTime | 交易时间 | string | ✖️ | 格式:yyyy-MM-dd HH:mm:ss |
6 | bookingNo | HIS 系统生成的预约订单号 | string | ✖️ | |
7 | appointId | 合作方用来唯一标识订单 ID | string | ✔️ | 在 appoint 接口中返回的值 |
8 | tradeNo | 第三方支付的交易流水号 | string | ✔️ | 如 :微信支付,这里就是微信支付的商户内部订单号 详见 tradeNo 生成规则 |
9 | transactionId | 微信支付订单号 | string | ✔️ | 微信支付侧的订单号,不同于商户内部订单号,不能自定义 |
10 | tradeState | 订单状态 | string | ✔️ | SUCCESS—支付成功, REFUND—转入退款, NOTPAY—未支付, CLOSED—已关闭, REVOKED—已撤销(刷卡支付), USERPAYING--用户支付中, PAYERROR--支付失败(其他原因,如银行返回失败) |
11 | miFee | 医保支付费用 | int | ✖️ | 单位:分 。用户从医保账户扣除的费用 |
12 | userId | 用户 ID | string | ✖️ | 用于唯一标识一个用户,对于某些有用户体系逻辑的合作方有用 |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | rsp | 返回详情 | AppointInfo | ✔️ |
# AppointInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | cancelTime | 截止取消订单时间 | string | ✖️ | 格式:yyyy-MM-dd HH:mm:ss |
2 | paymentTime | 截止支付时间 | string | ✖️ | |
3 | hisTakeNo | 取号密码 | string | ✔️ | 医院终端取号密码 |
4 | appointId | 单次预约的 ID | string | ✔️ | |
5 | infoSeq | HIS 锁号 ID | string | ✔️ | |
6 | treatCardNo | 就诊卡号 | string | ✖️ | |
7 | queueNo | 排队序号 | string | ✖️ | |
8 | treatAddr | 就诊地点 | string | ✖️ | 患者详细就诊地点 |
9 | takeNoTime | 取号时间 | string | ✖️ | 格式:"MM 月 dd 日 HH 时前"或者"MM 月 dd 日 HH 时-HH 时",并且时间采用 24 小时制 |
10 | takeAddr | 取号地址 | string | ✖️ | |
11 | takeCert | 取号凭证 | string | ✖️ |
# 2.2.7 取消挂号
- 取消预约时,默认也会做退号处理
流程图:
说明:
腾讯在请求合作方取消挂号接口时,会出现三种情况:
- 取消成功,返回 code=0,此时合作方订单状态为 OrderStatus=8(已取消),PayStatus=2(已支付);
- 取消失败,返回 code 非 0,此时合作方的订单状态应该是 OrderStatus=5/6(锁号/挂号成功),PayStatus=2(已支付),这种订单需人工介入处理;
- 当合作方也不确定 HIS 当前的状态,不返回,直接让接口调用超时,这个时候腾讯会轮询合作方订单状态,具体流程见异常处理。
异常处理:
接口调用超时,此时腾讯会定时调用 appointOrderInfo 挂号指定订单信息查询接口来确认订单状态,整个轮询状态时间持续 3 分钟,3 分钟后,合作方依然没有返回,则视为异常订单,需人工介入处理。 查询接口返回值可能有两种情况:
- 之前的取消挂号请求合作方未收到,或内部处理异常,合作方订单状态为 OrderStatus=5/6(锁号/挂号成功),PayStatus=2(已支付),重试 3 分钟后合作方依然是该状态,该订单需人工处理;
- 合作方订单为 OrderStatus=8(已取消),PayStatus=2(已支付),取消成功。
接口名:
cancelAppoint
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | appointId | 预约 ID | string | ✔️ | |
2 | userId | 用户 ID | string | ✖️ | 用于唯一标识一个用户,对于某些有用户体系逻辑的合作方有用 |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | rsp | 返回详情 | object | ✔️ |
# 2.2.8 同步退款结果 (仅限:接入且为服务商模式)
- 用户取消挂号并发起退款,微信回调腾讯侧时,腾讯侧通知渠道方对应的退款结果
流程图:
说明:
腾讯在请求合作方同步退款结果接口时,会出现三种情况:
- 合作方支付状态翻转成功,返回 code=0,此时合作方订单状态为 OrderStatus=8(已取消),PayStatus=4(退款成功);
- 合作方支付状态翻转失败,返回 code 非 0,此时合作方的订单状态为 OrderStatus=8(已取消),PayStatus=2(已支付),该种订单腾讯不再进行后续处理,需合作方自行调用> queryPayStatus 订单支付状态查询接口主动更新状态;
- 当合作方也不确定 HIS 当前的状态,不返回,直接让接口调用超时,这个时候腾讯会重试通知合作方退款结果,具体流程见异常处理。
异常处理:
接口调用超时,此时腾讯会定时调用 syncRefundResult 同步退款结果接口重试通知合作方,整个重试状态时间持续 3 分钟,3 分钟后,合作方依然没有返回,则视为异常订单,需人工介入处> 理。 查询接口返回值可能有三种情况:
- 合作方订单为 OrderStatus=8(已取消),PayStatus=4(退款成功),视为合作方支付状态更新成功;
- 合作方订单为 OrderStatus=8(已取消),PayStatus=2(已支付),视为合作方支付状态更新失败,需合作方自行调用 queryPayStatus 订单支付状态查询接口主动更新状态。
接口名:
syncRefundResult
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | appointId | 预约 ID | string | ✔️ | |
2 | tradeNo | 第三方支付的交易流水号 | string | ✔️ | 如 :微信支付,这里就是微信支付的订单号 详见 tradeNo 生成规则 |
3 | payStatus | 订单支付状态 | int | ✔️ | 详见 PayStatus |
4 | tradeState | 第三方订单状态 | string | ✔️ | 退款状态 SUCCESS—退款成功, REFUNDCLOSE—退款关闭, PROCESSING—退款处理中, CHANGE—退款异常,退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败 |
5 | refundAmount | 退款金额 | int | ✔️ | 单位:分 |
6 | userId | 用户 ID | string | ✖️ | 对于有用户体系的合作方 |
7 | refundNo | 商户退款流水单号 | string | ✖️ | |
8 | refundId | 微信退款订单号 | string | ✖️ | |
9 | extra | 扩展字段 | string | ✖️ | 适配部分合作方的特殊流程,直接透传回去 (如:2.3.1 里有传 extra,这里会透传回去) |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | rsp | 返回详情 | object | ✔️ |
# 2.2.9 挂号记录列表查询
接口名:
appointOrders
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | phone | 就诊人手机号 | string | ✖️ | |
2 | userId | 用户 ID | string | ✖️ | 对于有用户体系的合作方,查询该指定用户下的订单列表 |
3 | beginOrderTime | 下单开始时间 | string | ✖️ | 格式:yyyy-MM-dd HH:mm:ss |
4 | endOrderTime | 下单结束时间 | string | ✖️ | 格式:yyyy-MM-dd HH:mm:ss |
5 | beginTreatDate | 就诊开始日期 | string | ✖️ | 格式:yyyy-MM-dd |
6 | endTreatDate | 就诊结束日期 | string | ✖️ | 格式:yyyy-MM-dd |
7 | hospitalId | 医院 ID | string | ✖️ | |
8 | patientId | 就诊人 ID | string | ✖️ | 对于创建过就诊卡的合作方,查询该用户下指定就诊人的订单列表 |
9 | pageNo | 分页-第几页 | int | ✔️ | 缺省第 1 页 |
10 | pageSize | 分页-每页记录 | int | ✔️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | pageNo | 第几页 | int | ✔️ | |
4 | pageSize | 每页数量 | int | ✔️ | |
5 | totalSize | 记录条数 | int | ✔️ | |
6 | rsp | 返回详情 | array[AppointOrderInfo] | ✔️ |
# AppointOrderInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | appointId | 预约 ID | string | ✔️ | |
2 | bookingNo | HIS 预约订单号/当天挂号锁号 ID | string | ✖️ | |
3 | departmentId | 科室 ID | string | ✔️ | |
4 | departmentName | 科室 名称 | string | ✔️ | |
5 | doctorId | 医生 ID | string | ✔️ | |
6 | doctorName | 医生名 | string | ✔️ | |
7 | sourceType | 班别代码 | string | ✔️ | 详见 SourceType |
8 | sourceTypeName | 班别名称,如上午、下午 | string | ✔️ | |
9 | treatDate | 就诊日期 | string | ✔️ | 格式:yyyy-MM-dd |
10 | queueNo | 排队序号 | string | ✖️ | |
11 | waitingCount | 前面就诊人数 | int | ✖️ | 如果患者已就诊,则设为-1 |
12 | waitingTime | 预计候诊等待时间(分钟) | string | ✖️ | 例:1 患者就诊设置 3 分分钟,10 个患者预计候诊 30 分钟 |
13 | takeNoTime | 取号时间 | string | ✖️ | 格式:"MM 月 dd 日 HH 时前"或者"MM 月 dd 日 HH 时-HH 时",并且时间采用 24 小时制 |
14 | visitTime | 实际就诊时间 | string | ✖️ | 格式:yyyy-MM-dd HH:mm:ss |
15 | sourceBeginTime | 分时开始时间 | string | ✔️ | 格式:HH:mm (08:30 ) |
16 | sourceEndTime | 分时结束时间 | string | ✔️ | 格式:HH:mm (09:00) |
17 | isCancelabe | 是否可以取消 | int | ✔️ | 0-不可以,1-可以,2-未定义 |
18 | hisTakeNo | 取号密码 | string | ✖️ | 医院终端取号密码 |
19 | hospitalId | 医院 ID | string | ✖️ | |
20 | hospitalName | 医院名称 | string | ✖️ | |
21 | orderSource | 订单来源 | string | ✖️ | 标识订单从哪个渠道产生的 详见 ordersource |
22 | payStatus | 订单支付状态 | int | ✔️ | 详见 PayStatus |
23 | treatStatus | 诊疗状态 | int | ✔️ | 详见 TreatStatus |
24 | orderStatus | 订单状态 | int | ✔️ | 详见 OrderStatus |
25 | payFee | 实付金额 | int | ✔️ | 单位:分;没有用 0 表示 |
26 | registerFee | 挂号金额 | int | ✔️ | 单位:分;没有用 0 表示 |
27 | treatFee | 诊疗金额 | int | ✔️ | 单位:分;没有用 0 表示 |
28 | reduceFee | 优惠金额 | int | ✔️ | 单位:分;没有用 0 表示 |
29 | userName | 就诊人姓名 | string | ✔️ | |
31 | userBirthday | 就诊人出生日期 | string | ✔️ | 格式:yyyy-MM-dd |
30 | userPhone | 就诊人手机号 | string | ✔️ | |
32 | userCardType | 就诊人证件类型 | string | ✔️ | 详见 cardType |
33 | userCardNo | 就诊人证件号 | string | ✖️ | |
34 | orderTime | 订单创建时间 | string | ✔️ | 格式:yyyy-MM-dd HH:mm:ss |
35 | payMethod | 支付方式 | int | ✖️ | 详见 PayMethod |
36 | payType | 支付类型 | int | ✖️ | 详见 PayType |
37 | branchHospitalId | 分院 ID | string | ✖️ | |
38 | branchHospitalName | 分院名 | string | ✖️ | |
39 | treatAddr | 就诊地点 | string | ✖️ | 患者详细就诊地点 |
40 | takeAddr | 取号地址 | string | ✖️ | |
41 | takeCert | 取号凭证 | string | ✖️ |
# 2.2.10 挂号指定订单信息查询
该接口属于低频接口,一般的触发时机为:
1、对某个订单状态有疑惑
2、请求超时,无法明确订单状态,需要重新查询确认,进而提高用户体验
接口名:
appointOrderInfo
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | appointId | 合作方用来唯一标识订单 ID | string | ✖️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | rsp | 返回详情 | AppointOrderInfo | ✔️ |
# 2.2.11 创建就诊卡接口
1.针对需要就诊卡的合作方创建就诊卡,如果存在则直接返回就诊卡卡号,如果合作方不存在该就诊人的就诊卡,则新建并返回就诊卡号
接口名: createTreatCard
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | name | 就诊人姓名 | string | ✔️ | |
2 | cardType | 证件类型 | string | ✔️ | 见 cardType |
3 | cardNo | 证件号 | string | ✔️ | |
4 | phone | 手机号 | string | ✔️ | |
5 | hospitalId | 医院 ID | string | ✔️ | |
6 | birthday | 就诊人出生日期 | string | ✔️ | yyyy-MM-dd |
7 | userId | 用户 ID | string | ✖️ | 用于唯一标识一个用户 |
8 | guardianName | 监护人姓名 | string | ✖️ | |
9 | guardianCardType | 监护人证件类型 | string | ✖️ | 见 cardType |
10 | guardianNo | 监护人证件号 | string | ✖️ | |
11 | guardianPhone | 监护人手机号 | string | ✖️ | |
12 | treatCardNo | 就诊卡 Id | string | ✖️ | 如果非空,则校验该就诊卡 ID 的有效性 |
13 | branchHospitalId | 分院 ID | string | ✖️ | |
14 | sex | 性别 | int | ✖️ | 0 :男,1:女,2:其他 |
15 | profession | 职业 | string | ✖️ | |
16 | birthPlace | 籍贯 | string | ✖️ | |
17 | address | 地址 | string | ✖️ | |
18 | nation | 民族 | string | ✖️ | |
19 | country | 国籍 | string | ✖️ | 如中国 |
20 | maritalStatus | 婚姻状态 | int | ✖️ | 0 :未知,1:已婚,2:未婚 |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | rsp | 返回详情 | array[TreatCardInfo] | ✔️ |
# TreatCardInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | |
2 | treatCodeNo | 就诊卡号 | string | ✔️ | |
3 | patientId | 患者 ID | string | ✖️ | 如果返回患者 ID,锁号接口中会原样传回 |
4 | createTime | 创建时间 | string | ✔️ | 格式:yyyy-MM-dd HH:mm:ss |
5 | branchHospitalId | 分院 ID | string | ✖️ |
# 2.2.12 订单短信内容查询
接口名:
orderSmsContent
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | appointId | 订单 ID | string | ✖️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | content | 短信内容 | string | ✔️ |
# 2.2.13 获取医院科室公告
接口名:
notices
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | hospitalId | 医院 ID | string | ✔️ | 如果该医院为分院,这里会传该分院的 ID |
2 | departmentId | 科室 ID | string | ✖️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | rsp | 返回详情 | object | ✔️ | 详见 Notice |
# Notice
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | content | 内容 | string | ✔️ | 暂只支持支持换行<br>、字体加粗<b>标签 |
# 2.3 同步数据 (平台提供)
- 由腾讯侧提供接口服务
- 主要是保证在多入口的情况下,两边系统的数据能保持一致性
# 2.3.1 退款接口 (仅限:接入支付且为服务商模式)
- 当用户在腾讯健康小程序挂了号,但是在其他入口取消了挂号,这时候需要退款时,必须由腾讯侧发起退款请求到微信
- 此接口用来接受合作方的通知,告知腾讯侧需要退款给用户
- 腾讯侧在该接口被调用时,会自动将订单状态置为取消状态
接口名:
refundNotify
请求参数:
appointId 和 tradeNo 必须传入一个
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | appointId | 预约 ID | string | ✖️ | |
2 | tradeNo | 商户订单号 | string | ✖️ | |
3 | extra | 扩展字段 | string | ✖️ | 适配部分合作方的特殊流程,在退款通知直接透传回去 |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | rsp | 返回详情 | object | ✔️ | 详见 RefundInfo |
# RefundInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | outRefundNo | 商户退款单号 | string | ✔️ | |
2 | refundId | 微信退款单号 | string | ✔️ |
# 2.3.2 同步挂号订单
- 由于挂号入口的多元性,比如:当用户在 H5 公众号链接挂号成功时,在腾讯侧小程序入口也能查看到记录
接口名:
syncAppointInfo
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | appointId | 预约 ID | string | ✔️ | |
2 | bookingNo | HIS 预约订单号/当天挂号锁号 ID | string | ✔️ | |
3 | departmentId | 科室 ID | string | ✔️ | |
4 | departmentName | 科室 名称 | string | ✔️ | |
5 | doctorId | 医生 ID | string | ✔️ | |
6 | doctorName | 医生名 | string | ✔️ | |
7 | sourceType | 班别代码 | string | ✔️ | 详见 SourceType |
8 | sourceTypeName | 班别名称,如上午、下午 | string | ✖️ | |
9 | treatDate | 就诊日期 | string | ✔️ | 格式:yyyy-MM-dd |
10 | queueNo | 排队序号 | string | ✖️ | |
11 | waitingCount | 前面就诊人数 | string | ✖️ | 如果患者已就诊,则设为-1 |
12 | waitingTime | 预计候诊等待时间(分钟) | string | ✖️ | 例:1 患者就诊设置 3 分钟,10 个患者预计候诊 30 分钟 |
13 | takeNoTime | 取号时间 | string | ✖️ | 格式:"MM 月 dd 日 HH 时前"或者"MM 月 dd 日 HH 时-HH 时",并且时间采用 24 小时制 |
14 | visitTime | 实际就诊时间 | string | ✖️ | 格式:yyyy-MM-dd HH:mm:ss |
15 | sourceBeginTime | 分时开始时间 | string | ✔️ | 格式:HH:mm (08:30 ) |
16 | sourceEndTime | 分时结束时间 | string | ✔️ | 格式:HH:mm (09:00) |
17 | sourceTimeType | 时间类型 | int | ✖️ | 默认为 0,标准起始时间段格式详见 SourceTimeType,分时时间非标准格式时使用,此时分时时间可不传 |
18 | sourceTimeDesc | 时间描述 | string | ✖️ | 号源时间描述,时间类型为 1、2 时,当前字段不能为空 |
19 | isCancelable | 是否可以取消 | string | ✖️ | 0-不可以,1-可以,2-未定义 |
20 | hisTakeNo | 取号密码 | string | ✖️ | 医院终端取号密码 |
21 | hospitalId | 医院 ID | string | ✔️ | |
22 | hospitalName | 医院名称 | string | ✖️ | |
23 | orderSource | 订单来源 | string | ✖️ | 标识订单从哪个渠道产生的。如果是腾讯侧产生的,将只更新订单状态。否则,新增一条订单数据 详见 OrderSource |
24 | payStatus | 订单支付状态 | int | ✔️ | 详见 PayStatus |
25 | treatStatus | 诊疗状态 | int | ✔️ | 详见 TreatStatus |
26 | orderStatus | 订单状态 | int | ✔️ | 详见 OrderStatus |
27 | branchHospitalId | 分院 ID | string | ✖️ | |
28 | branchHospitalName | 分院名称 | string | ✖️ | |
29 | ThRegisterId | 回传 ID | string | ✔️ | 如果是通过 H5/小程序模式 跳转到合作方页面的会带上该字段,合作方订单回传时需要带回给腾讯 侧,便于数据的关联 |
30 | userName | 就诊人姓名 | string | ✔️ | |
31 | userPhone | 就诊人手机号 | string | ✔️ | |
32 | userBirthday | 就诊人出生日期 | string | ✔️ | 格式:yyyy-MM-dd |
33 | userCardType | 就诊人证件类型 | string | ✔️ | 详见 cardType |
34 | userCardNo | 就诊人证件号 | string | ✖️ | |
35 | orderTime | 订单创建时间 | string | ✔️ | 格式:yyyy-MM-dd HH:mm:ss |
36 | payMethod | 支付方式 | int | ✔️ | 详见 PayMethod |
37 | payType | 支付类型 | int | ✔️ | 详见 PayType |
38 | registerFee | 挂号金额 | int | ✔️ | 单位:分;没有用 0 表示 |
39 | treatFee | 诊疗金额 | int | ✔️ | 单位:分;没有用 0 表示 |
40 | reduceFee | 优惠金额 | int | ✔️ | 单位:分;没有用 0 表示 |
41 | extraSerialNumber | 特殊扩展流水号 | array[string] | ✖️ | 某些场景下需要展示的特殊流水编号 |
42 | takeAddr | 取号地址 | string | ✖️ | |
43 | takeCert | 取号凭证 | string | ✖️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | rsp | 返回详情 | object | ✔️ |
# 2.3.3 停改诊通知接口
当渠道方的预约信息有变动时,同步给平台方
对于有支付接入的订单,在取消或停诊时可能有退款操作,合作方需要根据支付模式不同选择通知方式
(1)服务商模式:退款操作在腾讯健康侧完成。合作方直接调用停改诊接口即可,腾讯健康退款完成后会调用 syncRefundResult 通知合作方
(2)支付小程序模式/联合运营模式:退款操作在合作方完成。合作方先调用停改诊接口通知订单状态,在退款完成后需要再调用 syncAppointInfo 通知腾讯健康退款状态
接口名:
notifyChangeStatus
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | appointId | 预约 ID | string | ✔️ | |
2 | changeType | 订单变更类型 | int | ✔️ | 1:取消 2:停诊 3:改诊 4:替诊 |
3 | newTreatDate | 更新后的就诊日期 | string | ✖️ | 格式:yyyy-MM-dd |
4 | newSourceBeginTime | 更新后就诊开始时间 | string | ✖️ | 格式:HH:mm (改诊) |
5 | newSourceEndTime | 更新后就诊结束时间 | string | ✖️ | 格式:HH:mm (改诊) |
6 | newDepartmentId | 更新后的科室 ID | string | ✖️ | 替诊 |
7 | newDepartmentName | 更新后的科室名称 | string | ✖️ | 替诊 |
8 | newDoctorId | 更新后的医生 ID | string | ✖️ | 替诊 |
9 | newDoctorName | 更新后的医生名称 | string | ✖️ | 替诊 |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | rsp | 返回详情 | object | ✔️ |
# 2.3.4 对账接口 (仅限:接入支付且为服务商模式)
- 合作方每日上午 9 点后拉取前一天账单信息
接口名:
billDownload
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | date | 需下载的订单日期 | string | ✖️ | 格式:yyyyMMdd,只能指定当天以前,默认前一天 |
2 | hospitalId | 医院 ID | string | ✖️ | 商户号绑定医院级别时,需指定医院 |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | billList | 返回详情 | object | ✔️ | 详见 BillInfo |
4 | totalCount | 总交易数 | int | ✔️ | |
5 | checkFee | 应结订单总金额 | int | ✔️ | 单位:分 |
6 | totalFee | 订单总金额 | int | ✔️ | 单位:分 |
7 | applyBackFee | 申请退款总金额 | int | ✔️ | 单位:分 |
8 | backFee | 退款总金额 | int | ✔️ | 单位:分 |
# BillInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | wxOderNo | 微信订单号 | string | ✔️ | |
2 | busiOrderNo | 商户订单号 | string | ✖️ | 腾讯健康侧订单号 |
3 | wxBackNo | 微信退款单号 | string | ✖️ | |
4 | busiBackNo | 商户退款单号 | string | ✖️ | 腾讯健康侧退款单号 |
5 | fee | 金额 | int | ✔️ | 单位:分 |
6 | status | 支付状态 | int | ✔️ | 详见 PayStatus |
# 2.3.5 订单支付状态查询
- 合作方根据订单 ID 查询支付状态和退款状态,传参方式有两种:1)appointId;2)tradeNo
接口名:
queryPayStatus
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | appointId | 订单 ID | string | ✖️ | |
2 | tradeNo | 商户订单号 | string | ✖️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | payInfo | 订单支付状态 | Object | ✔️ | 详见 PayInfo |
# PayInfo
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | payStatus | 订单支付状态 | int | ✔️ | 详见 PayStatus |
2 | fee | 挂号费(单位:分) | int | ✖️ | |
3 | treatFee | 诊疗费(单位:分) | int | ✖️ | |
4 | reduceFee | 优惠费用(单位:分) | int | ✖️ | |
5 | payFee | 实付费用(单位:分) | int | ✖️ |
# 2.4 鉴权/实名(渠道提供)
# 2.4.1 获取调用凭证
部分合作方需要使用调用凭证方可调用相关业务接口,如有需要需按照如下接口提供实现并同步相关配置参数到腾讯健康侧。accessToken 是全局唯一调用凭证,accessToken 失效前腾讯健康侧会及时刷新,刷新后需保证老 accessToken 在 10 分钟内仍可用,以保证调用方平滑过渡。
调用凭证内容将会添加到 HTTP header 中,对应 header 字段名为:accessToken,使用方可按需取用。
接口名:
accessToken
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | appId | 合作方分配的应用 ID | string | ✔️ | |
2 | secret | 合作方分配的应用唯一秘钥 | string | ✔️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | accessToken | 获取到的调用凭证 | string | ✔️ | |
4 | expiresIn | 调用凭证有效时间,单位:秒 | int | ✔️ |
# 2.4.2 发送验证码
接口名:
authCode
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | phone | 手机号 | string | ✔️ | |
2 | type | 业务类型 | int | ✔️ | 1:实名认证 |
3 | cardType | 证件类型 | string | ✖️ | 详见 CardType |
4 | cardNo | 证件号 | string | ✖️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | status | 发送状态 | int | ✔️ | 1:已发送,2:发送失败 |
# 2.4.3 就诊人实名认证
接口名:
realNameAuth
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | name | 就诊人姓名 | string | ✔️ | |
2 | cardType | 就诊人证件类型 | string | ✔️ | 详见 CardType |
3 | cardNo | 就诊人证件号 | string | ✔️ | |
4 | phone | 就诊人手机号 | string | ✖️ | |
5 | nation | 民族 | string | ✖️ | 详见 Nation ,实际内容为对应名称,如汉族 |
6 | authCode | 验证码 | string | ✖️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | authStatus | 认证状态 | int | ✔️ | 0: 未实名认证,1:已实名认证,2:认证失败-未申诉,3:认证失败-申诉中,4:认证失败-申诉失败 |
4 | jumpUrl | 跳转链接 | string | ✖️ | |
5 | tips | 异常提示 | string | ✖️ |
# 2.4.4 查询就诊人实名认证状态
接口名:
queryRealNameAuthStatus
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | name | 就诊人姓名 | string | ✔️ | |
2 | cardType | 就诊人证件类型 | string | ✔️ | 详见 CardType |
3 | cardNo | 就诊人证件号 | string | ✔️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | authStatus | 认证状态 | int | ✔️ | 0: 未实名认证,1:已实名认证,2:认证失败-未申诉,3:认证失败-申诉中,4:认证失败-申诉失败 |
4 | jumpUrl | 跳转链接 | string | ✖️ | |
5 | tips | 异常提示 | string | ✖️ |
# 2.4.5 预约挂号验证码
接口名:
appointAuthCode
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | name | 就诊人姓名 | string | ✔️ | |
2 | cardType | 就诊人证件类型 | string | ✔️ | 详见 CardType |
3 | cardNo | 就诊人证件号 | string | ✔️ | |
4 | hospitalId | 医院 ID | string | ✖️ | |
5 | sourceId | 号源 ID | string | ✖️ | |
6 | patientId | 就诊人 ID | string | ✖️ |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | authType | 验证码类型 | int | ✔️ | 详见 authCodeType |
4 | authCode | 验证码内容 | string | ✖️ | |
5 | image | 图片验证码内容 | string | ✖️ | 图文验证码类型不可为空 |
# 3. API 支付模式
挂号 API 模式支持接入支付,针对合作方不同接入场景,分别有以下几类:
- 服务商模式
- 挂号支付小程序模式
- 联合运营支付模式
# 3.1 服务商模式
此模式适用于 可以将商户号授权为腾讯健康子商户 的场景,采用微信支付的服务商模式,腾讯健康商户号作为服务商代子商户号收款。
关于服务商-子商户支付模式,可参考微信小程序支付开放模式 (opens new window)
腾讯健康支付成功后调用挂号接口:register
# 3.2 挂号支付小程序模式
此模式适用于 合作方自有支付小程序的场景,在支付时,用户从腾讯健康小程序跳转到合作方支付小程序,支付过程在合作方小程序进行,完成支付后再跳转回腾讯健康小程序。
# 3.2.1 小程序端交互流程
大体的交互流程如下图:
腾讯健康小程序 appid:wxb032bc789053daf4
- 腾讯健康小程序 --> 挂号支付小程序:
跳转页面路径: 渠道方提供(eg:
page/index/index
)携带参数: 根据渠道方要求(eg:
order_id=xxxx&cid=xxxx
)demo :
page/index/index?order_id=xxxx&cid=xxxx
- 挂号支付小程序 --> 腾讯健康小程序:
跳转页面路径: 用户在
挂号支付小程序
不管是取消了支付还是完成了支付,直接调用小程序的wx.navigateBackMiniProgram()
跳转回腾讯健康小程序
即可携带参数: 需要把前端的支付结果带回给腾讯
wx.navigateBackMiniProgram({
extraData: {
result: "success", // 前端支付成功
// result: 'fail' // 前端支付失败
// result: 'cancel' // 用户取消支付
},
});
# 3.2.2 同步挂号订单(平台提供)
本接口主要用于 ISV 在订单状态更改时主动同步给腾讯健康侧;
此模式下,存在以下同步订单状态场景:
- 当用户完成支付或支付失败,ISV 后台接收到微信支付的回调时,需要将订单状态信息同步到腾讯健康后台;
- 当用户取消订单,ISV 接收到腾讯健康的取消订单请求,执行取消订单操作,并根据订单是否完成支付来选择是否进行退款操作,操作完成后,无论是无需退款、退款完成或退款失败,均需要将订单状态同步到腾讯健康后台;
- 当用户在非腾讯健康侧完成了退号退款或状态变更操作,ISV 在操作完成后,将订单状态同步到腾讯健康后台。
接口名:
# 3.3 联合运营支付模式
此模式是针对不支持将商户号授权为腾讯健康子商户,且无支付小程序的医院场景,以联合运营的方式接入到腾讯健康小程序中;
主要方式为
- 统一下单和订单退款操作在
ISV
完成;- 收银台在
腾讯健康
拉起,所需参数从 ISV 侧获取,用户支付完成后,ISV 收到微信支付回调,将订单状态实时同步回腾讯健康;- 订单取消时,ISV 负责退款,并将订单状态实时同步回腾讯健康;
- 当订单出现状态变化时,ISV 将最新的订单状态实时同步回腾讯健康;
微信支付侧针对小程序支付有两种开放模式,ISV 根据自身已开发的模式选择对应的联合运营方式:
- 普通模式:适用于开发者申请自己的
appid
和mch_id
进行直连商户收款,此时腾讯健康需申请和 ISV 进行两方联合运营
;- 服务商模式:适用于第三方服务商为服务的特约子商户进行代收款,此时腾讯健康需申请和 ISV(服务商)、医院(特约子商户)进行
三方联合运营
。更多关于开放模式的介绍请参考:微信小程序支付开放模式 (opens new window)
下单支付时序图
退号退款时序图
接口说明
# 3.3.1 获取支付参数
本接口主要用于用户需要支付时,合作方去微信支付统一下单,并将拉起支付所需的签名等信息返回给腾讯健康后台
要拿到小程序拉起收银台所需要的参数,大概要经过两步:
# 第一步:统一下单
统一下单接口,ISV 根据自身接入微信支付的模式不同,调用方式不同,接口文档参考:
该接口传参需要特殊说明的参数如下表
表中未涉及的参数按照微信支付文档上传递即可,无特殊性
序号 | 字段 | 描述 | 普通商户模式 | 服务商模式 |
---|---|---|---|---|
1 | appid | 微信分配的小程序 ID | 当前调起支付的小程序 APPID,即腾讯健康小程序的appid ,固定为:wxb032bc789053daf4 | ISV 申请的服务商商户对应的 APPID |
2 | mch_id | 微信支付分配的商户号 | ISV 普通商户对应的商户号 | ISV 申请的服务商商户号 |
3 | sub_appid | 当前调起支付的小程序 APPID | ✖️ | 当前调起支付的小程序 APPID,即腾讯健康小程序的appid ,固定为:wxb032bc789053daf4 |
4 | sub_mch_id | 微信支付分配的子商户号 | ✖️ | 跟 ISV 有绑定关系的某个医院的商户号,即上述提到的服务商商户号的某个子商户号 |
5 | openid | 用户在商户 appid 下的唯一标识 | 此处是用户在腾讯健康小程序下的 openid,这个比较重要,到时候退款是直接退到该用户的原支付路径下的 | 用户在 ISV 服务商商户 appid 下的 openid |
6 | sub_openid | 用户在子商户 appid 下的唯一标识 | ✖️ | 此处是用户在腾讯健康小程序下的 openid,这个比较重要,到时候退款是直接退到该用户的原支付路径下的 |
# 第二步:获取签名参数:
- 在获取到统一下单的相关返回参数后,按照文档上的加密方法再生成小程序支付所需的签名,具体方法请参考:小程序调起支付 API (opens new window)
接口名:
unionPaymentInfo
请求参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | appointId | 预约 ID | string | ✔️ | 单次预约的 Id |
2 | paymentReq | 获取小程序支付的请求参数 | object | ✔️ | 详见UnionPaymentReq |
# UnionPaymentReq
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | openid | 用户在腾讯健康小程序的 openid | string | ✔️ | |
2 | sub_appid | 当前调起支付的小程序 APPID(腾讯健康 APPID) | string | ✔️ | 默认为:wxb032bc789053daf4 |
3 | body | 商品简单描述 | string | ✔️ | |
4 | detail | 商品详细描述 | string | ✖️ | |
5 | total_fee | 总金额 | int | ✔️ | 订单总金额,只能为整数,单位为分。此金额是腾讯健康前端展示金额,下单时 ISV 应校验订单金额与此金额是否一致,不一致应返回异常。如果由于优惠而产生正常的减免费用,应在返回中带上减免费用和减免说明 |
6 | scheduleId | 排班 ID | string | ✖️ | |
7 | sourceId | 号源 ID | string | ✖️ | |
8 | selfPay | 自费金额 | int | ✖️ | 单位:分 这里主要兼容有医保支付情况。默认和总金额保持一致 |
9 | patientId | 患者 ID | string | ✖️ | 参照 2.2.11 里的 patientId PS: scheduleId souceId 和 patientId 对部分有业务需求的合作方会绑定在一起成必传字段 |
返回参数:
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | code | 状态码 | int | ✔️ | 0:正常,其他:异常。具体见附录说明 |
2 | message | 状态描述 | string | ✔️ | |
3 | rsp | 返回详情 | UnionPaymentRsp | ✔️ |
# UnionPaymentRsp
序号 | 字段 | 名称 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | timeStamp | 时间戳从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间 | string | ✔️ | |
2 | nonceStr | 随机字符串,长度为 32 个字符以下。 | string | ✔️ | |
3 | package | 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=* | string | ✔️ | |
4 | signType | 签名算法,暂支持 MD5 | string | ✔️ | |
5 | paySign | 签名 | string | ✔️ | |
6 | out_trade_no | 商户订单号 | string | ✔️ | |
7 | time_start | 交易起始时间 | string | ✔️ | 统一下单时的交易起始时间,格式为 yyyyMMddHHmmss |
8 | time_expire | 交易结束时间 | string | ✔️ | 统一下单时的交易结束时间,格式为 yyyyMMddHHmmss |
9 | pay_start_time | 支付起始时间 | string | ✔️ | 有效支付的起始时间,格式为 yyyyMMddHHmmss |
10 | pay_end_time | 支付结束时间 | string | ✔️ | |
11 | trade_type | 交易类型 | string | ✔️ | 默认为JSAPI |
12 | pay_fee | 实际支付金额 | int | ✔️ | 实际拉起收银台支付金额,只能为整数,单位为分。 |
13 | reduce_fee | 减免金额 | int | ✖️ | 减免金额,只能为整数,单位为分。当 pay_fee 与 total_fee 不同时必传 |
14 | reduce_desc | 减免说明 | string | ✖️ | 订单减免说明。当 pay_fee 与 total_fee 不同时必传 |
# 3.3.2 订单状态查询
本接口主要用于在 ISV 未返回订单同步信息时,腾讯健康侧主动请求 ISV 获取订单状态;
此模式下,存在以下主动查询场景:
- 当用户完成支付,腾讯健康侧等待
1min
后未获取到 ISV 同步的订单支付状态;- 用户主动查询订单支付状态;
- 当用户完成取消订单,腾讯健康侧等待
1min
未获取到 ISV 同步的订单退款状态。注意:当连续查询三次仍未获取到订单支付状态,该订单将置为异常单,进行人工处理。
接口名:
# 3.3.3 同步挂号订单(平台提供)
本接口主要用于 ISV 在订单状态更改时主动同步给腾讯健康侧;
此模式下,存在以下同步订单状态场景:
- 当用户完成支付或支付失败,ISV 后台接收到微信支付的回调时,需要将订单状态信息同步到腾讯健康后台;
- 当用户取消订单,ISV 接收到腾讯健康的取消订单请求,执行取消订单操作,并根据订单是否完成支付来选择是否进行退款操作,操作完成后,无论是无需退款、退款完成或退款失败,均需要将订单状态同步到腾讯健康后台;
- 当用户在非腾讯健康侧完成了退号退款或状态变更操作,ISV 在操作完成后,将订单状态同步到腾讯健康后台。
接口名:
# 4.附录
# Code
具体每个业务接口可以再详细对接定义
值 | 说明 | 备注 |
---|---|---|
0 | 成功 | 表明接口正常 |
非 0 | 失败 | 接口异常 |
-404 | 查找记录为空 | 这里主要针对于查找指定数据为空。如:查询订单详情等。如果是获取排班或者号源为空,可以返回空数组,然后 code 为 0 |
-40001 | 验证码内容错误 |
# HospitalLevel
值 | 说明 |
---|---|
1 | 三甲 |
2 | 三乙 |
3 | 三丙 |
4 | 二甲 |
5 | 二乙 |
6 | 二丙 |
7 | 一甲 |
8 | 一乙 |
9 | 一丙 |
10 | 一级 |
11 | 二级 |
12 | 三级 |
100 | 其他 |
# HospitalType
值 | 说明 |
---|---|
1 | 国营 |
2 | 民营 |
3 | 合资 |
4 | 外资 |
5 | 个体 |
9 | 其它 |
# ZCID
序号 | 说明 |
---|---|
1 | 主任医师 |
2 | 副主任医师 |
3 | 主治医师 |
4 | 医师 |
5 | 医士 |
6 | 卫生防疫员 |
7 | 主任药师 |
8 | 副主任药师 |
9 | 主管药师 |
10 | 药师 |
11 | 药剂士 |
12 | 药剂员 |
13 | 主任护师 |
14 | 副主任护师 |
15 | 主管护师 |
16 | 护师 |
17 | 护士 |
18 | 护理员 |
19 | 主任技师 |
20 | 副主任技师 |
21 | 主管技师 |
22 | 技师 |
23 | 技士 |
24 | 见习员 |
25 | 一级心理咨询师 |
26 | 二级心理咨询师 |
27 | 三级心理咨询师 |
28 | 研究员 |
29 | 教授 |
30 | 副教授 |
31 | 医生助理 |
32 | 顾问医生 |
33 | 副顾问医生 |
34 | 驻院医生 |
35 | 高级医生 |
36 | 验光师 |
37 | 助理医师 |
38 | 住院医师 |
39 | 药士 |
40 | 康复治疗师 |
41 | 营养师 |
42 | 检验师 |
43 | 针灸推拿师 |
44 | 心理咨询师 |
45 | 实习医师 |
46 | 规培医师 |
47 | 轮转医师 |
48 | 进修医师 |
49 | 医学生(本科生/研究生/博士生/实习生) |
50 | 值班医生 |
100 | 其他 |
# SourceType
值 | 说明 |
---|---|
0 | 晚上(18:00 - 06:00) |
1 | 上午(06:00 - 12:00) |
2 | 下午(12:00 - 18:00) |
3 | 全天(00:00 - 23:59) |
5 | 其他 |
# OrderSource
值 | 说明 |
---|---|
0 | 腾讯 |
1 | 合作方自有渠道 |
2 | 其他渠道 |
# PayMode
值 | 说明 |
---|---|
0 | 不需要支付 |
1 | 自费 |
2 | 医保支付 |
3 | 混合支付 |
# CardType
值 | 说明 |
---|---|
01 | 身份证 |
02 | 香港居民证身份证 |
03 | 护照 |
04 | 军人证 |
05 | 其他 |
06 | 澳门居民身份证 |
07 | 台湾居民身份证 |
08 | 港澳居民来往内地通行证 |
09 | 台湾居民来往内地通行证 |
10 | 出生证 |
# PayMethod
值 | 说明 | 备注 |
---|---|---|
0 | 线下支付 | |
1 | 线上支付 |
# PayType
值 | 说明 | 备注 |
---|---|---|
0 | 自费 | |
1 | 医保 |
# PayStatus
值 | 说明 | 备注 |
---|---|---|
0 | 未知 | |
1 | 待支付 | |
2 | 已支付 | |
3 | 退款中 | |
4 | 退款成功 | |
5 | 支付失败 | |
6 | 退款失败 | |
7 | 无需线上支付 |
# OrderStatus
值 | 说明 |
---|---|
2 | 未知 |
3 | 锁号中 |
4 | 锁号失败 |
5 | 锁号成功 |
6 | 挂号成功(锁号成功 + 支付成功) |
7 | 释放号源中(取消中) |
8 | 已取消 |
9 | 取消失败 |
# TreatStatus
值 | 说明 |
---|---|
-3 | 停改诊 |
-2 | 预约失败 |
-1 | 已取消 |
0 | 未知 |
1 | 未取号 |
2 | 已取号 |
3 | 已签到 |
4 | 已就诊 |
5 | 已爽约 |
# GuardianPatientRelationType
值 | 说明 | 备注 |
---|---|---|
0 | 未知 | |
1 | 本人 | |
2 | 父母 | |
3 | 子女 | |
4 | 夫妻 | |
5 | 亲属 | |
6 | 朋友 |
# SourceTimeType
值 | 说明 | 备注 |
---|---|---|
0 | 时间段格式 | 默认格式,HH:mm-HH:mm,如 09:00-09:30 |
1 | 具体时间点 | 如 09:00 |
2 | 自定义 | 如序号 01 |
3 | 无描述内容 |
# AuthCodeType
值 | 说明 |
---|---|
1 | 短信验证码 |
2 | 图文 |
# Nation
值 | 说明 |
---|---|
01 | 汉族 |
02 | 蒙古族 |
03 | 回族 |
04 | 藏族 |
05 | 维吾尔 |
06 | 苗族 |
07 | 彝族 |
08 | 壮族 |
09 | 布衣族 |
10 | 朝鲜族 |
11 | 满族 |
12 | 侗族 |
13 | 瑶族 |
14 | 白族 |
15 | 土家族 |
16 | 哈尼族 |
17 | 哈萨克 |
18 | 傣族 |
19 | 黎族 |
20 | 傈僳族 |
21 | 佤族 |
22 | 畲族 |
23 | 高山族 |
24 | 拉祜族 |
25 | 水族 |
26 | 东乡族 |
27 | 纳西族 |
28 | 景颇族 |
29 | 柯尔克孜族 |
30 | 土族 |
31 | 达斡尔族 |
32 | 仫佬族 |
33 | 羌族 |
34 | 布朗族 |
35 | 撒拉族 |
36 | 毛南族 |
37 | 仡佬族 |
38 | 锡伯族 |
39 | 阿昌族 |
40 | 普米族 |
41 | 塔吉克族 |
42 | 怒族 |
43 | 乌孜别克族 |
44 | 俄罗斯族 |
45 | 鄂温克族 |
46 | 德昂族 |
47 | 保安族 |
48 | 裕固族 |
49 | 京族 |
50 | 塔塔尔族 |
51 | 独龙族 |
52 | 鄂伦春族 |
53 | 赫哲族 |
54 | 门巴族 |
55 | 珞巴族 |
56 | 基诺族 |
57 | 其他民族 |
# tradeNo 生成规则
TH + 17位数字或字母 + R
- 总长度:20 位
- 前缀:TH
- 后缀:R
eg: TH157354587078335dhR
便于到时候如果同一个商户号有多个入账渠道时,即可用这个商户订单号的规则来解析和判断从
腾讯健康
渠道产生的
# CityCode & AreaCode
具体的行政区域代码可以参考链接:
最新县及县以上行政区划代码 (opens new window)
# 5.性能参考指标
具体的性能参考指标,见如下表格
# 6.修改记录
日期 | 更新事项 | 操作人 |
---|---|---|
2019.11.19 17:20 | createTreatCard 接口:返回参数为 array;新增创建时间 | vinazhang |
2019.11.20 15:13 | createTreatCard 接口:新增 treatCardNo 字段 | vinazhang |
2019.12.04 11:19 | 新增 queryPatStatus 接口;syncRefundResult、refundNotify 接口更新 | vinazhang |
2019.12.05 16:17 | 更新 queryPatStatus 接口:新增 hospitalId 字段 | vinazhang |
2019.12.11 10:13 | 更新接口名称:查询订单支付状态 queryPayStatus | vinazhang |
2019.12.12 16:00 | 批量修改字段的必传性,增加了默认值和相关备注说明 | pigozhu |
2019.12.13 17:14 | 增加锁号、挂号、取消和退款通知的流程图以及说明 | pigozhu |
2019.12.31 15:31 | 新增订单短信内容接口 | magicsu |
2020.01.03 11:18 | 3.挂号支付小程序 -- 跳转回腾讯健康小程序的参数携带 | pigozhu |
2020.01.08 18:00 | refundNotify 接口入参增加 tradeNo 字段 | vinazhang |
2020.03.03 14:00 | 2.3.2 兼容下 H5 回传订单数据时的协议 | pigozhu |
2020.09.02 11:00 | appoint 接口新增 visitType 就诊类型字段 | magicsu |
2020.10.22 11:00 | 新增联合运营支付模式说明 | criszheng |
2020.11.12 16:00 | 诊疗状态新增停改诊状态 | magicsu |
2020.12.14 19:00 | 锁号接口增加 40、41、42 三个字段 | pigozhu |
2021.10.18 14:00 | appoint 接口新增 hospitalName、departmentName、doctorName 可选字段 | magicsu |
2021.11.02 10:00 | appoint 接口新增 treatCertName、treatCert、treatCertShowType 字段 | magicsu |