Appearance
查询医保自费混合支付下单状态
1 功能说明
医院使用医保自费混合订单号或医院应用订单号,通过此接口主动查询混合支付订单状态。请使用工行API平台提供的SDK进行调用,(可参考调用示例代码)
2 请求路径
| 环境 | 路径 |
|---|---|
| 正式环境 | https://gw.open.icbc.com.cn/api/hbfh/mimp/orderstatusquery/V1 |
3 通用请求参数
| 参数名 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 | ||
|---|---|---|---|---|---|---|---|
| from | str | true | - | 工行调用固定为icbc-api | icbc-api | ||
| api | str | true | - | 接口路径,调用哪一个接口的回调 | |||
| app_id | str | true | - | 合作方在工行开具的应用编号 | |||
| charset | str | true | - | 调用过程使用的编码格式 | utf-8 | ||
| format | str | true | - | 报文类型 | json | ||
| encrypt_type | str | false | - | 加密方式,此接口默认不加密 | - | ||
| timestamp | str | true | - | 回调发生时间,格式为“yyyy-MM-dd HH:mm:ss” | 2017-01-12 17:33:56 | ||
| sign_type | str | true | - | 签名类型,目前网关回调请求的签名只支持RSA方式,需要合作方使用网关公钥验签 | RSA | ||
| sign | str | true | - | 工行签名 | FSDFDRYXDS342FDSR | ||
| biz_content | str | true | - | 业务参数集合,详见业务参数说明 | - |
4 请求参数
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| query_type | str | true | 32 | 查询类型,支持两种: 1、根据医保自费混合订单号MIX_TRADE_NO查询; 2、根据医院应用订单号OUT_TRADE_NO查询。 | MIX_TRADE_NO |
| hospital_id | str | true | 32 | 医院ID(工行提供) | 4402000001 |
| mix_trade_no | str | false | 64 | 医保自费混合订单号。query_type为MIX_TRADE_NO 时必输 | P202204022005169952975171534816 |
| out_trade_no | str | false | 64 | 医院应用订单号。query_type为OUT_TRADE_NO 时必输 | 202204022005169952975171534816 |
| sub_mchid | str | true | 64 | 医疗机构商户号 | |
| trx_date | str | true | 8 | 待查询订单下单日期。传错的话查不到交易 | yyyy-MM-dd,例如2024-03-12 |
5 通用响应参数
| 参数名 | 类型 | 是否非空 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| response_biz_content | str | true | - | 响应参数集合,包含公共和业务参数 | - |
| sign | str | true | 300 | 针对返回参数集合的签名 | ERITJKEIJKJHKHJEREEEEEEEE |
6 响应参数
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| return_code | str | true | 10 | 返回码,交易成功返回0,其他表示业务报错 | 0 |
| return_msg | str | true | 200 | 返回码说明 | - |
| mix_trade_no | str | true | 32 | 医保自费混合订单号。唯一定义此资源的标识 | 1217752501201407033233368318 |
| mix_pay_status | str | true | 医保自费混合订单支付状态 (字典较多,详情请见5.6) | MIX_PAY_SUCCESS | |
| self_pay_status | str | false | 混合订单中自费部分的支付状态(字典较多,详情请见5.7) | SELF_PAY_SUCCESS | |
| med_ins_pay_status | str | false | 混合订单中医保部分的支付状态(字典较多,详情请见5.8) | MED_INS_PAY_SUCCESS | |
| paid_time | str | false | 64 | 订单支付时间。遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE | 2018-06-08T10:34:56+08:00 |
| passthrough_response_content | str | false | 2048 | 支付完成后医保局返回内容(透传给医疗机构) | |
| mix_pay_type | str | true | 按字典值发送 | 混合支付类型 | CASH_ONLY:纯现金(字典值较多请见5.5) |
| order_type | str | true | 按字典值发送 | 订单类型 | REG_PAY:挂号支付(字典值较多请见5.1) |
| sub_openid | str | true | 128 | 用户在医疗机构AppID下的唯一标识。 | o4GgauInH_RCEdvrrNGrntXDuXXX |
| sub_appid | str | true | 32 | 医疗机构的公众号ID | o4GgauInH_RCEdvrrNGrntXDuXXX |
| sub_mchid | str | true | 32 | 医疗机构的商户号 | o4GgauInH_RCEdvrrNGrntXDuXXX |
| pay_for_relatives | boolean | false | 是否代亲属支付。 代亲属支付:true。 本人支付:false。 | 代亲属支付:true 不传默认本人支付 | |
| out_trade_no | str | true | 64 | 医院应用订单号,每次请求唯一 | 202204022005169952975171534816 |
| serial_no | str | false | 20 | 医疗机构订单号。例如医院HIS系统订单号。传与【6201】费用明细上传中medOrgOrd字段一样的值,局端会校验,不一致将会支付失败。 | 1217752501201 |
| pay_order_id | str | false | 64 | 医保局返回的支付单ID | ORD530100202204022006350000021 |
| pay_auth_no | str | false | 40 | 医保局返回的支付授权码 | AUTH530100202204022006310000034 |
| geo_location | str | false | 40 | 用户定位信息。用户定位信息,经纬度。格式:经度,纬度 | 102.682296,25.054260 |
| city_id | str | true | 8 | 微信定义的城市代码,有字典 | 530100 |
| med_inst_name | str | true | 128 | 医疗机构名称 | 北大医院 |
| med_inst_no | str | true | 32 | 医保局提供的医疗机构编码 | 1217752501201407033233368318 |
| med_ins_order_create_time | str | false | 64 | 医保下单时间。医保下单必填,遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE | 2015-05-20T13:29:35+08:00 |
| total_fee | int | true | 使用该接口下单的总金额,单位分。在接口说明示例中,该值为2020元。 | 202000 | |
| med_ins_gov_fee | int | false | 医保局结算后,医保统筹支付金额,单位分,结算后金额为0也需要填写。在接口说明示例中,该值为1000元。 | 100000 | |
| med_ins_self_fee | int | false | 医保局结算后,医保个账支付金额,单位分,结算后金额为0也需要填写。在接口说明示例中,该值为450元。 | 45000 | |
| med_ins_other_fee | int | false | 医保局结算后,医保统筹、个账之外的其他津贴支付金额,单位分,结算后金额为0也需要填写。在接口说明示例中,该值为50元。 | 5000 | |
| med_ins_cash_fee | int | false | 医保局结算后,需要自费的金额,单位分,结算后金额为0也需要填写。在接口说明示例中,该值为500元。 | 50000 | |
| wechat_pay_cash_fee | int | false | 实际需要用户微信支付的金额,单位分,在接口说明示例中,该值为420元。 | 42000 | |
| cash_add_detail | array | 多重 | 现金补充列表。有运费等医保订单外加收的费用时必填。在接口说明示例中,该值为快递费20元。 | ||
| cash_reduce_detail | array | 多重 | 现金减免列表。有预交金等医保订单外减免的费用时必填。在接口说明示例中,该值为预存款100元。 | ||
| prepay_id | str | false | 64 | 自费预下单ID。微信支付预支付交易会话标识。用于后续接口调用中使用,该值有效期为2小时 | wx201410272009395522657a690389285100 |
| passthrough_request_content | str | false | 2048 | 医疗机构透传给医保的数据。 沿用地方医保局定义,不包含pay_auth_no、pay_ord_id、setl_latlnt | wx201410272009395522657a690389285100 |
| extends | str | false | 512 | 扩展字段 | {} |
| attach | str | false | 128 | 附加数据。查询与通知中返回,医疗机构可用于自定义业务逻辑 | {} |
| channel_no | str | false | 32 | 渠道号。由腾讯工程师分配的渠道号,给医疗机构使用,标记医保支付渠道信息。 | AAGN9uhZc5EGyRdairKW7Qnu |
现金补充列表 cash_add_detail
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| cash_add_fee | int | true | 现金补充金额 | 20 | |
| cash_add_type | str | true | 64 | 现金补充类型(字典较多,详情请见5.1) | FREIGHT |
现金减免列表 cash_reduce_detail
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| cash_reduce_fee | int | true | 现金减免金额 | 20 | |
| cash_reduce_type | str | true | 64 | 现金减免类型(字典较多,详情请见5.2) | HOSPITAL_REDUCE 医院减免 |
7 字典值清单
7.1订单类型
| 标题 | 代码 | 描述 |
|---|---|---|
| 未知类型 | UNKNOWN_ORDER_TYPE | 未知类型,会被拦截 |
| 挂号支付 | REG_PAY | 挂号支付 |
| 诊间支付 | DIAG_PAY | 诊间支付 |
| 新冠检测费用(核酸) | COVID_EXAM_PAY | 新冠检测费用(核酸) |
| 住院费支付 | IN_HOSP_PAY | 住院费支付 |
| 药店支付 | PHARMACY_PAY | 药店支付保险费支付 |
| 互联网医院挂号支付 | INT_REG_PAY | 互联网医院挂号支付 |
| 互联网医院复诊支付 | INT_RE_DIAG_PAY | 互联网医院复诊支付 |
| 互联网医院处方支付 | INT_RX_PAY | 互联网医院处方支付 |
| 新冠抗原检测 | COVID_ANTIGEN_PAY | 新冠抗原检测 |
| 药费支付 | MED_PAY | 药费支付 |
7.2证件类型
| 标题 | 代码 | 描述 |
|---|---|---|
| 身份证 | ID_CARD | 身份证 |
| 户口本 | HOUSEHOLD_REGISTRATION | 户口本 |
| 外国人护照 | FOREIGNER_PASSPORT | 外国人护照 |
| 台湾居民来往大陆通行证 | MAINLAND_TRAVEL_PERMIT_FOR_TW | 台湾居民来往大陆通行证 |
| 澳门居民往来内地通行证 | MAINLAND_TRAVEL_PERMIT_FOR_MO | 澳门居民往来内地通行证 |
| 香港居民往来内地通行证 | MAINLAND_TRAVEL_PERMIT_FOR_HK | 香港居民往来内地通行证 |
| 外国人永久居留证 | FOREIGN_PERMANENT_RESIDENT | 外国人永久居留证 |
7.3现金补充类型
| 标题 | 代码 | 描述 |
|---|---|---|
| 默认值 | DEFAULT_ADD_TYPE | 默认显示“机构加收费用” |
| 运费 | FREIGHT | 运费 |
| 其他医疗费用 | OTHER_MEDICAL_EXPENSES | 其他医疗费用 |
7.4现金减免类型
| 标题 | 代码 | 描述 |
|---|---|---|
| 默认值 | DEFAULT_REDUCE_TYPE | 默认为“机构优惠金额” |
| 医院减免 | HOSPITAL_REDUCE | 医院减免 |
| 药店优惠 | PHARMACY_DISCOUNT | 药店优惠 |
| 优惠金 | DISCOUNT | 优惠金 |
| 预缴金 | PRE_PAYMENT | 预缴金 |
| 押金抵扣 | DEPOSIT_DEDUCTION | 押金抵扣 |
7.5混合支付类型
| 标题 | 代码 | 描述 |
|---|---|---|
| 未知的混合支付类型 | UNKNOWN_MIX_PAY_TYPE | 未知的混合支付类型,会被拦截 |
| 纯现金支付 | CASH_ONLY | 纯现金支付。只向微信支付下单,未向医保局下单。 |
| 纯医保支付 | INSURANCE_ONLY | 纯医保支付。只向医保局下单,未向微信支付下单。如果医保局分账结果中有自费的部分,但由于有减免折扣,没有向微信支付下单,也是纯医保。 |
| 现金和医保混合支付 | CASH_AND_INSURANCE | 现金和医保混合支付。向医保局下单,也向微信支付下单。如果医保预结算全部需自费,也属于混合类型。 |
7.6医保自费混合订单支付状态
| 标题 | 代码 | 描述 |
|---|---|---|
| 默认值 | UNKNOWN_MIX_PAY_STATUS | 未知类型,需报错 |
| 等待支付 | MIX_PAY_CREATED | 等待支付 |
| 支付成功 | MIX_PAY_SUCCESS | 支付成功 |
| 自费和医保均已退款 | MIX_PAY_REFUND | 自费和医保均已退款 |
| 支付失败 | MIX_PAY_FAIL | 支付失败 |
7.7 混合订单中自费部分的支付状态
| 标题 | 代码 | 描述 |
|---|---|---|
| 默认值 | UNKNOWN_SELF_PAY_STATUS | 未知类型,需报错 |
| 等待支付 | SELF_PAY_CREATED | 等待支付 |
| 支付成功 | SELF_PAY_SUCCESS | 支付成功 |
| 已退款 | SELF_PAY_REFUND | 已退款 |
| 支付失败 | SELF_PAY_FAIL | 支付失败 |
| 订单不含自费部分 | NO_SELF_PAY | 订单不含自费部分 |
7.8 混合订单中医保部分的支付状态
| 标题 | 代码 | 描述 |
|---|---|---|
| 默认值 | UNKNOWN_MED_INS_PAY_STATUS | 未知类型,需报错 |
| 等待支付 | MED_INS_PAY_CREATED | 等待支付 |
| 支付成功 | MED_INS_PAY_SUCCESS | 支付成功 |
| 已退款 | MED_INS_PAY_REFUND | 已退款 |
| 支付失败 | MED_INS_PAY_FAIL | 支付失败 |
| 订单不含医保部分 | NO_MED_INS_PAY | 订单不含医保部分 |
8 使用示例
java
DefaultIcbcClient client = new DefaultIcbcClient(APP_ID,
MY_PRIVATE_KEY, APIGW_PUBLIC_KEY);
HbfhMimpOrderStatusQueryRequestV1 request = new HbfhMimpOrderStatusQueryRequestV1();
request.setServiceUrl("https://gw.open.icbc.com.cn/api/hbfh/mimp/order/V1");
HbfhMimpOrderStatusQueryV1Biz bizContent = new HbfhMimpOrderStatusQueryV1Biz();
bizContent.setQueryType("MIX_TRADE_NO"); //查询类型
bizContent.setHospitalId("HP000000001"); //医院ID
bizContent.setMixTradeNo("P1223"); //医保自费混合订单号
bizContent.setSubMchid("111"); //医疗结构商户号
bizContent.setTrxDate("2025-03-10"); //待查询订单下单日期
request.setBizContent(bizContent);
try {
HbfhMimpOrderStatusQueryResponseV1 response = client.execute(request,
"msg_id");
if (response.isSuccess() && response.getReturnCode() == 0) {
// 处理成功
System.out.println(JSONObject.toJSONString(response));
System.out.println(response.getResult());
} else {
// 失败
System.out.println(response.getReturnMsg());
}
} catch (IcbcApiException e) {
e.printStackTrace();
}9 请求示例
json
{
"hospital_id":"4402000002",
"query_type":"MIX_TRADE_NO",
"mix_trade_no":"P0013068202402260009460001607980",
"out_trade_no":"",
"sub_mchid":"598395068",
"trx_date":"20230312"
}10 响应示例
json
{
"mix_trade_no" : "1217752501201407033233368318",
"mix_pay_status" : "UNKNOWN_MIX_PAY_STATUS",
"self_pay_status" : "UNKNOWN_SELF_PAY_STATUS",
"med_ins_pay_status" : "UNKNOWN_MED_INS_PAY_STATUS",
"paid_time" : "2018-06-08T10:34:56+08:00",
"passthrough_response_content" : "{\"payAuthNo\":\"AUTH530100202204022006310000034\",\"payOrdId\":\"ORD530100202204022006350000021\",\"setlLatlnt\":\"102.682296,25.054260\"}",
"mix_pay_type" : "UNKNOWN_MIX_PAY_TYPE",
"order_type" : "UNKNOWN_ORDER_TYPE",
"appid" : "wxdace645e0bc2cXXX",
"sub_appid" : "wxdace645e0bc2cXXX",
"sub_mchid" : "1900008XXX",
"sub_openid" : "o4GgauInH_RCEdvrrNGrntXDuXXX",
"pay_for_relatives" : false,
"out_trade_no" : "202204022005169952975171534816",
"serial_no" : "1217752501201",
"pay_order_id" : "ORD530100202204022006350000021",
"pay_auth_no" : "AUTH530100202204022006310000034",
"geo_location" : "102.682296,25.054260",
"city_id" : "530100",
"med_inst_name" : "北大医院",
"med_inst_no" : "1217752501201407033233368318",
"med_ins_order_create_time" : "2015-05-20T13:29:35+08:00",
"total_fee" : 202000,
"med_ins_gov_fee" : 100000,
"med_ins_self_fee" : 45000,
"med_ins_other_fee" : 5000,
"med_ins_cash_fee" : 50000,
"wechat_pay_cash_fee" : 42000,
"cash_add_detail" : [
{
"cash_add_fee" : 2000,
"cash_add_type" : "DEFAULT_ADD_TYPE"
}
],
"cash_reduce_detail" : [
{
"cash_reduce_fee" : 10000,
"cash_reduce_type" : "DEFAULT_REDUCE_TYPE"
}
],
"callback_url" : "https://www.weixin.qq.com/wxpay/pay.php",
"prepay_id" : "wx201410272009395522657a690389285100",
"passthrough_request_content" : "{\"payAuthNo\":\"AUTH****\",\"payOrdId\":\"ORD****\",\"setlLatlnt\":\"118.096435,24.485407\"}",
"extends" : "{}",
"attach" : "{}",
"channel_no" : "AAGN9uhZc5EGyRdairKW7Qnu",
"med_ins_test_env" : false
}11 异常示例
json
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
{
"response_biz_content":{
"return_code":-500041,
"return_msg":"service proxy exception."
},
"sign":"ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}12 返回码解释
| 返回码 | 返回说明 |
|---|---|
| 0 | 成功 |
| -31 | 响应请求转换失败 |
| -30 | 服务方响应状态错误 |
| 400011 | 参数非法,原因可能为app id为空、app id非法、签名为空、应用系统时间与API平台系统时间不在限定差值以内、时间戳非法 |
| 500018 | 访问的API不存在 |
| 500020 | 非法调用 |
| 400016 | app公钥未维护 |
| 400017 | 签名验证失败 |
| 400019 | 授权验证失败 |
| 500031 | 速率超限 |
| 500032 | 并发超限 |
| -500041 | 代理异常 |
| -500042 | 代理超时 |
| -500044 | 网关签名失败 |
| 500043 | 网关配置文件错误,无法从配置文件中读取配置 |
| 400051 | app id前缀错误,沙箱测试时app id必须添加sandboxie_前缀 |
| 500052 | 沙箱测试不支持UI类型的API |
| 500091 | 没有管理权限 |
| -500099 | 网关内部异常 |
| 5399 | 终端上送数据错 |
| -8999 | 方法未登记 |