# 挂号 H5 接入

# 1. 背景介绍

这里主要针对合作方以 H5 的方式接入到腾讯健康小程序中来

用户从腾讯健康小程序跳转到合作方 H5 页面,完成挂号后,合作方通过接口将订单信息同步给腾讯健康,便于用户查看订单。

# 2. 接口说明

# 2.1 H5 挂号后跳转小程序支付

  1. 小程序通过 webview 加载 H5 时,是无法拉起 H5 的收银台的,这时候仍然需要跳转到腾讯健康小程序的支付页面来唤起收银台
  2. 如果在 H5 里面打开调试模式,是可能在小程序里面调起 H5 收银台的,但关闭调试模式后将失效,所以该方法不可行

代码片段:

// 1.引入jssdk

<script
  type="text/javascript"
  src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"
/>; // 这里版本高于1.3.2均可

// 2. 在用户挂完号后,如果需要支付,执行以下代码进行跳转腾讯健康小程序

wx.miniProgram.navigateTo({
  url:
    "/pages/registration/payment/main?appointId=${appointId}&ThRegisterId=${ThRegisterId}", //
});
序号 字段 名称 类型 必填 备注
1 appointId 预约 ID string ✔️ 在 H5 链接里面点击挂号后产生, 主要是用于后台接口来获取签名用,不一定要是挂号订单 ID,只要能换取签名和订单信息均可,合作方可以自由定义
2 ThRegisterId 跳转到合作方链接带的 ThRegisterId string ✔️

# 2.2 获取小程序支付和预约相关信息

  1. 支付在腾讯健康小程序端发起,但统一下单以及小程序支付所需的签名等信息由合作方去微信支付完成后返回
  2. 腾讯侧需要给用户展示订单信息,这里需要合作方返回


要拿到小程序拉起收银台所需要的参数,大概要经过两步:

# 第一步:统一下单

  1. appid : ISV 申请的服务商商户对应的 APPID
  2. mch_id:ISV 申请的服务商商户号
  3. sub_appid:当前调起支付的小程序 APPID,即腾讯健康小程序的appid,固定为:wxb032bc789053daf4
  4. sub_mch_id:跟 ISV 有绑定关系的某个医院的商户号,即上述提到的服务商商户号的某个子商户号
  5. sub_openid此处是用户在腾讯健康小程序下的 openid,这个比较重要,到时候退款是直接退到该用户的原支付路径下的
  6. 其他参数按照文档上传递即可,无特殊性

# 第二步:获取签名参数:



接口名:

paymentAndOrderInfo

请求参数:

序号 字段 名称 类型 必填 备注
1 appointId 预约 ID string ✔️ 在 H5 链接里面点击挂号后产生的订单 ID
2 paymentReq 获取小程序支付的请求参数 object ✔️ 详见PaymentReq

# PaymentReq

序号 字段 名称 类型 必填 备注
1 openid 用户在腾讯健康小程序的 openid string ✔️
2 sub_appid 当前调起支付的小程序 APPID(腾讯健康 APPID) string ✔️ 默认为:wxb032bc789053daf4
3 body 商品简单描述 string ✔️
4 detail 商品详细描述 string ✖️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 count 总记录条数 int ✔️
4 rsp 返回详情 PaymentAndOrderInfo ✔️

# PaymentAndOrderInfo

序号 字段 名称 类型 必填 备注
1 paymentRsp 小程序支付所需相关返回信息 PaymentRsp ✔️ 请参照:第二步:获取签名参数
2 orderInfo 订单相关信息 AppointOrderInfo ✔️

# PaymentRsp

序号 字段 名称 类型 必填 备注
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 ✔️

# 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 (opens new window)
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 ✖️ 格式:yyyy-MM-dd HH:mm:ss
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 (opens new window)
22 payStatus 订单支付状态 int ✔️ 详见 PayStatus (opens new window)
23 treatStatus 诊疗状态 int ✔️ 详见 TreatStatus (opens new window)
24 orderStatus 订单状态 int ✔️ 详见 OrderStatus (opens new window)
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 (opens new window)
33 userCardNo 就诊人证件号 string ✖️
34 orderTime 订单创建时间 string ✔️ 格式:yyyy-MM-dd HH:mm:ss
35 payMethod 支付方式 int ✖️ 详见 PayMethod (opens new window)
36 payType 支付类型 int ✖️ 详见 PayType (opens new window)
37 branchHospitalId 分院 ID string ✖️
38 branchHospitalName 分院名 string ✖️
39 callbackUrl 回调 url string ✖️ 腾讯健康小程序前端支付完成后要跳转的页面。如果不传,默认就会回到合作方 H5 系统里跳腾讯健康小程序支付页面前的那个页面

# 2.3 同步订单的排队叫号信息(可选)

  1. 针对支持排队叫号功能的合作方,排队队列在合作方侧维护,队列变动时同步到腾讯健康后台

接口名: syncQueueList

请求参数:

序号 字段 名称 类型 必填 备注
1 ThRegisterId 关联 ID string ✔️ 腾讯健康侧传给合作方,用于唯一标识一个用户
2 queueList 排队订单 array[WaitingQueue] ✔️

# WaitingQueue

序号 字段 名称 类型 必填 备注
1 ThRegisterId 关联 ID string ✔️
2 appointId 预约 ID string ✔️
3 queueId 队列 ID string ✖️ 平台方维护的叫号队列序号
4 queueName 队列名称 string ✖️ 平台方维护的叫号队列名称
5 hospitalId 医院 ID string ✔️
6 hospitalName 医院名称 string ✔️
7 departmentId 部门 ID string ✔️
8 departmentName 部门名称 string ✔️
9 doctorId 医生 ID string ✔️
10 doctorName 医生名称 string ✔️
11 queueNo 排队序号 int ✔️
12 curQueueNo 当前叫号 int ✔️
13 waitingCount 还需等待人数 int ✔️
14 waitingTime 还需等待时间 string ✔️
15 callState 叫号状态 int ✔️ 0-未叫;1-已叫

返回参数:

序号 字段 名称 类型 必填 备注
1 code 返回码 int ✔️ 0:正常,其他:异常。
2 message 状态描述 string ✔️
3 rsp 返回详情 object ✔️

# 2.4 同步门诊费用(可选)

  1. 针对支持门诊缴费的合作方,将患者的门诊费用信息同步到 腾讯健康小程序 进行展示

接口名: syncOutPatientFee

请求参数:

序号 字段 名称 类型 必填 备注
1 ThRegisterId 关联 ID string ✔️ 腾讯健康侧传给合作方,用于唯一标识一个用户
2 hospitalId 医院 ID string ✔️
3 hospitalName 医院名称 string ✔️
4 feeId 费用列表 ID string ✔️ 单次收费唯一 ID,与详情关联
5 recordId 单据 ID string ✔️ 某个收费的单据 ID
6 subjectId 检查项目 ID string ✔️
7 subjectName 检查项目名称 string ✔️
8 departmentId 科室 ID string ✔️
9 departmentName 科室名称 string ✔️
10 doctorId 医生 ID string ✔️
11 doctorName 医生名称 string ✔️
12 patientName 患者姓名 string ✔️
13 treatCardNo 就诊卡号 string ✔️
14 idCard 身份证号 string ✔️
15 totalCost 总花费 string ✔️
16 selfCost 自付费用 string ✔️
17 healthCost 医保支出费用 string ✔️
18 outpID 看诊次数 string ✔️
19 feeDate 费用日期 string ✔️
20 feeType 费用类型 int ✔️ 0-门诊;1-住院
21 payStatus 是否已支付 int ✔️ 0-未支付;1-已支付;2-已退款
22 payTime 支付时间 string ✔️
23 outPatientFeeList 门诊费用详情 array[FeeDetail] ✔️

# FeeDetail

序号 字段 名称 类型 必填 备注
1 ThRegisterId 关联 ID string ✔️ 腾讯健康侧传给合作方,用于唯一标识一个用户
2 feeId 费用列表 ID string ✔️ 此项费用属于单次收费 ID
3 itemId 费用项目 ID string ✔️
4 itemName 费用项目名称 string ✔️
5 itemUnitPrice 费用项目单价 string ✔️
6 itemNum 费用项目数量 string ✔️
7 itemUnit 费用项目单位 string ✔️
8 itemPrice 项目总费用 string ✔️
9 feeDate 费用日期 string ✔️
10 payStatus 是否已支付 int ✔️ 0-未支付;1-已支付;2-已退款
11 payTime 支付时间 string ✔️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 返回码 int ✔️ 0:正常,其他:异常。
2 message 状态描述 string ✔️
3 rsp 返回详情 object ✔️

# 2.5 同步住院费用(可选)

  1. 针对支持住院费用展示的合作方,将住院费用同步到 腾讯健康小程序 进行展示

接口名: syncInPatientFee

请求参数:

序号 字段 名称 类型 必填 备注
1 ThRegisterId 关联 ID string ✔️ 腾讯健康侧传给合作方,用于唯一标识一个用户
2 hospitalId 医院 ID string ✔️
3 hospitalName 医院名称 string ✔️
4 feeId 费用列表 ID string ✔️ 单次收费唯一 ID,与详情关联
5 recordId 单据 ID string ✔️ 某个收费的单据 ID
6 subjectId 检查项目 ID string ✔️
7 subjectName 检查项目名称 string ✔️
8 departmentId 科室 ID string ✔️
9 departmentName 科室名称 string ✔️
10 doctorId 医生 ID string ✔️
11 doctorName 医生名称 string ✔️
12 patientName 患者姓名 string ✔️
13 treatCardNo 就诊卡号 string ✔️
14 idCard 身份证号 string ✔️
15 totalCost 总花费 string ✔️
16 selfCost 自付费用 string ✔️
17 healthCost 医保支出费用 string ✔️
18 inDate 住院日期 string ✔️
19 outDate 出院日期 string ✔️
20 feeType 费用类型 int ✔️ 0-门诊;1-住院
21 payStatus 是否已支付 int ✔️ 0-未支付;1-已支付;2-已退款
22 payTime 支付时间 string ✔️
23 inPatientFeeList 住院费用详情 array[FeeDetail] ✔️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 返回码 int ✔️ 0:正常,其他:异常。
2 message 状态描述 string ✔️
3 rsp 返回详情 object ✔️

# 2.6 获取用户授权信息

  1. 通过腾讯健康小程序跳转携带过去的ThRegisterId来换取用户授权的手机号,从而实现用户打开合作方系统时的静默登录

接口名: queryUserAuthInfo

请求参数:

序号 字段 名称 类型 必填 备注
1 ThRegisterId 关联 ID string ✔️ 腾讯健康跳转合作方携带的 ID 标识

返回参数:

序号 字段 名称 类型 必填 备注
1 code 返回码 int ✔️ 0:正常,其他:异常。
2 message 状态描述 string ✔️
3 rsp 返回详情 UserAuthInfo ✔️

# UserAuthInfo

序号 字段 名称 类型 必填 备注
1 phoneNum 用户授权的手机号 string ✖️ 如果返回NONE,表示用户并未授权手机号给腾讯健康,暂时无法获取

# 2.7 错误/异常 信息回传上报(可选)

当用户在合作方系统进行操作,有相关异常时,可以通过接口回传给腾讯侧,便于进行行为的监控和统计

接口名: syncErrorInfo

请求参数:

序号 字段 名称 类型 必填 备注
1 ThRegisterId 关联 ID string ✔️ 腾讯健康跳转合作方携带的 ID 标识
2 type 错误类型 string ✔️ 具体参见Type
eg:实名认证失败,是发生在就诊人环节,这里传入5
3 detail 具体错误原因 string ✔️
4 hospitalName 医院名称 string ✔️
5 departmentName 科室名称 string ✔️
6 doctorName 医生名称 string ✔️
7 treatDate 就诊日期 string ✔️ 格式:yyyy-MM-dd
8 sourceBeginTime 号源开始时间 string ✔️
9 sourceEndTime 号源结束时间 string ✔️
10 userName 就诊人姓名 string ✔️
11 userBirthday 就诊人出生日期 string ✔️ 格式:yyyy-MM-dd
12 userPhone 就诊人手机号 string ✔️
13 userCardType 就诊人证件类型 string ✔️ 详见 cardType (opens new window)
14 userCardNo 就诊人证件号 string ✔️
15 orderTime 订单创建时间 string ✔️ 格式:yyyy-MM-dd HH:mm:ss

# Type

说明
1 登录
2 获取科室
3 获取排班
4 获取号源
5 挂号--就诊人
6 挂号--下单
7 挂号--支付
8 挂号--取消
9 挂号--退款
10 其它

返回参数:

序号 字段 名称 类型 必填 备注
1 code 返回码 int ✔️ 0:正常,其他:异常。
2 message 状态描述 string ✔️
3 rsp 返回详情 ✔️

# 2.8 H5 订单回传

此接口用于用户在合作方 H5界面/小程序 初次产生订单,或订单状态产生变更时,合作方主动同步订单;

接口名:

参看 挂号API接入 2.3.2同步挂号订单 syncAppointInfo (opens new window)

注意:同步时必须带上THRegisterId

  1. 初次同步时,订单作为新建单,所有字段信息会被记录,需要保证初次同步数据完备和准确;
  2. 后续的订单记录同步,只同步订单、支付、退款状态,不再重复同步其他字段

# 3.修改记录

日期 更新事项 操作人
2020.01.13 17:50 增加 H5 跳转小程序支付页面的相关说明和代码片段 pigozhu
2020.02.20 17:20 增加 H5 跳转小程序的排队叫号、门诊住院费用同步接口说明 criszheng
2020.02.20 17:20 增加 H5 换取用户授权信息(如:手机号)等 pigozhu
2020.04.17 15:30 增加 2.7 关于错误信息回传上报的接口说明 pigozhu
2020.08.05 09:30 2.1 -19,20 变更类型为必填(产品前端页面要展示相关信息) pigozhu