Appearance
河北分行医保自费混合支付下单
1 功能说明
医院通过此接口完成医保自费混合支付下单功能。请使用工行API平台提供的SDK进行调用,(可参考调用示例代码)
注意:
- 下单前,不可自行结算医保订单或自费订单。
- 下单成功后,医疗机构发起混合收款请求,以便后续调起支付收银台时,用户只需输一次密码。
混合单类型通过是否向医保局、微信支付下单来判断:
- 纯医保:只向医保局下单,没有调用工行聚合支付api进行自费下单。如果医保局分账结果中有自费部份,但由于有减免抵扣,没有向工行下单,也是纯医保。
- 纯自费:只调用工行聚合支付api进行自费下单,没有向医保局下单。包括没有向医保局上传费用明细、预结算。
- 医保自费混合:向医保局下单,也调用工行聚合支付api进行自费下单。如果医保预结算全部需自费,也属于混合类型。
金额上
- 纯医保:三个医保金额与自费之和一定不为0,微信支付金额字段一定为0,补充可以不为0,减免可以不为0。
- 纯自费:三个医保金额与自费之和一定为0,微信支付金额字段一定不为0,补充可以不为0,减免可以不为0。
- 医保自费混合:三个医保金额与自费之和一定不为0,微信支付金额字段一定不为0,补充可以不为0,减免可以不为0。
请求参数字段上
- 纯医保:pay_order_id、pay_auth_no、geo_location、med_ins_order_create_time、med_ins_gov_fee、med_ins_self_fee、med_ins_other_fee、med_ins_cash_fee不能为空,不能含向微信支付下单的字段
- 纯自费:wechat_pay_cash_fee不为0,prepay_id不为空,不能含向医保局下单的字段。
- 医保自费混合:上面医保和自费的字段都必须合法。
假设有一笔混合支付订单,则
- 医保结算后需要医保支付的金额 = 医保统筹支付金额 + 医保个账支付金额 + 医保其他支付金额
- 医保结算后需要自费的金额 = 实际需要用户微信支付的金额 - 现金补充金额 + 现金减免金额
- 医保下单的总金额 = 医保结算后需要医保支付的金额 + 医保结算后需要自费的金额
- 使用该接口下单的总金额 = 医保下单的总金额 + 现金补充金额
假设这笔订单使用该接口下单的金额是20元
- 其中向医保局下单2000元,结算后,医保需要支付1500元,自费需要500元。
- 这位用户在医院预存款有100元,想快递药物到家,快递费用是20元。
这笔订单各部分的计算规则
- 医保结算后需要医保支付的金额(1500) = 医保统筹支付金额(1000) + 医保个账支付金额(450) + 医保其他支付金额(50)
- 医保结算后需要自费的金额(500) = 实际需要用户微信支付的金额(420) - 现金补充金额(20) + 现金减免金额(100)
- 医保下单的总金额(2000) = 医保结算后需要医保支付的金额(1500) + 医保结算后需要自费的金额(500)
- 使用该接口下单的总金额(2020) = 医保下单的总金额(2000) + 现金补充金额(20)
2 请求路径
| 环境 | 路径 |
|---|---|
| 正式环境 | https://gw.open.icbc.com.cn/api/hbfh/mimp/order/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 | - | 业务参数集合,详见业务参数说明 | - |
(上述参数为工行API平台的技术参数,配置方法参考工行提供的java样例即可)
4 请求参数
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| serialno_icbc | str | true | 64 | 请求工行流水号,每个医院每次请求保持唯一 规则:10位hopitalId+唯一序列号(工行会对序列号前十位与hospitalId做一致性校验,对整个序列号做唯一校验) | 4402000002T101031127 |
| order_type | str | true | 按字典值发送 | 订单类型 | REG_PAY:挂号支付(字典值较多请见5.1) |
| mix_pay_type | str | true | 按字典值发送 | 混合支付类型 | CASH_ONLY:纯现金(字典值较多请见5.5) |
| hospital_id | str | true | 10 | 医院ID(工行提供) | 4402000001 |
| sub_openid | str | true | 128 | 用户在医疗机构AppID下的唯一标识 | o4GgauInH_RCEdvrrNGrntXDuXXX |
| sub_appid | str | true | 32 | 医疗机构的微信公众号/小程序appid,当院方用于微信医保移动支付的微信appid有多个时,请根据实际情况上送对应appid。 | wx1cc0a67d4d37891f |
| sub_mchid | str | true | 32 | 医疗机构的微信商户号,当院方用于微信医保移动支付的工行商户有多个时,请根据实际情况上送对应工行商户的微信商户号,此时上送的微信商户号需要与自费部分下单时使用的工行商户号是配套的。 | o1F5v6WOqkITYoez9ljYA2PLB100 |
| payer | object | true | - | 支付人身份信息(具体内容在后面) | |
| pay_for_relatives | boolean | false | 是否代亲属支付。 | 代亲属支付:true,本人支付:false。不传默认本人支付 | |
| relative | object | false | - | 亲属身份信息,pay_for_relatives=true时必输(具体内容在后面) | |
| out_trade_no | str | true | 64 | 医院应用订单号。每个医院每次请求保持唯一。含自费场景:唯一序列号使用工行聚合支付下单接口返回的order_id 不含自费场景:唯一序列号由医院自行生成,不含自费时前十位需与hospital_id一致 | 202204022005169952975171534816 |
| serial_no | str | true | 40 | 医院HIS系统订单号。传与【6201】费用明细上传中medOrgOrd字段一样的值,局端会校验,不一致将会支付失败。多个out_trade_no可以对应同一个serial_no。比如用户第一次下单漏算了快递费,导致实际需要用户微信支付的金额(wechat_pay_cash_fee)填错了。此时需要先取消前一笔订单再重新下单,新订单out_trade_no会变化,但serial_no不变。 | 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 | 微信定义的城市代码。有字典 (石家庄:130100,邯郸:130409) | 130100 |
| med_inst_name | str | true | 128 | 医疗机构名称 | 北大医院 |
| med_inst_no | str | true | 32 | 医保局提供的医疗机构编码 | H51012831123 |
| 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元。 | ||
| need_callback | boolean | true | 医院是否需要接收回调。true-需要接收回调;false-不需要接收回调 | true | |
| callback_url | str | false | 256 | 医院侧接收回调通知的URL。通知URL必须为直接可访问的URL,不允许携带查询串,接受回调地址的端口需要为80或443 | https://www.wchscu.cn/notice |
| prepay_id | str | false | 64 | 自费预下单ID。微信支付预支付交易会话标识。用于后续接口调用中使用,该值有效期为2小时 | wx201410272009395522657a690389285100 |
| passthrough_request_content | str | false | 2048 | 医疗机构透传给医保的数据。沿用地方医保局定义,不包含pay_auth_no、pay_ord_id、setl_latlnt | |
| extends | str | false | 512 | 扩展字段 | {} |
| attach | str | false | 128 | 附加数据。查询与通知中返回,医疗机构可用于自定义业务逻辑 | {} |
| channel_no | str | false | 32 | 渠道号。由腾讯工程师分配的渠道号,给医疗机构使用,标记医保支付渠道信息。 | {} |
支付人身份信息 payer
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| name | str | true | 512 | 真实姓名 | 张三 |
| id_digest | str | true | 512 | 个人身份ID摘要。目前只支持身份证MD5摘要,摘要为数字和小写字母组合,代亲属支付场景必填。身份证中如果有字母需要转成大写做MD5,15位身份证号需要转为18位,计算出的MD5需要转换为数字和小写字母组合。例如:44030019000101123x按照规则计算后为09eb26e839ff3a2e3980352ae45ef09e | 例如:44030019000101123x按照规则计算后为09eb26e839ff3a2e3980352ae45ef09e |
| card_type | str | true | 证件类型 (字典较多,目前仅支持身份证,详情请见5.2) | ID_CARD |
亲属身份信息 relative
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| name | str | true | 512 | 真实姓名 | 张三 |
| id_digest | str | true | 512 | 个人身份ID摘要。目前只支持身份证MD5摘要,摘要为数字和小写字母组合,代亲属支付场景必填。身份证中如果有字母需要转成大写做MD5,15位身份证号需要转为18位,计算出的MD5需要转换为数字和小写字母组合。例如:44030019000101123x按照规则计算后为09eb26e839ff3a2e3980352ae45ef09e | 09eb26e839ff3a2e3980352ae45ef09e |
| card_type | str | true | 证件类型 (目前仅支持身份证) | ID_CARD |
现金补充列表 cash_add_detail
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| cash_add_fee | int | true | 32 | 现金补充金额,单位分 | 20 |
| cash_add_type | str | true | 64 | 现金补充类型(字典较多,详情请见5.3) | FREIGHT 运费 |
现金减免列表 cash_reduce_detail
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| cash_reduce_fee | int | true | 32 | 现金减免金额,单位分 | 20 |
| cash_reduce_type | str | true | 64 | 现金减免类型(字典较多,详情请见5.4) | HOSPITAL_REDUCE 医院减免 |
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 | 医保自费混合订单号。唯一定义此资源的标识 | P1217752501201407033233368318 |
| mix_pay_status | str | true | 医保自费混合订单支付状态 (字典较多,详情请见5.6) | MIX_PAY_SUCCESS | |
| self_pay_status | str | false | 混合订单中自费部分的支付状态(字典较多,详情请见5.7) | ||
| med_ins_pay_status | str | false | 混合订单中医保部分的支付状态(字典较多,详情请见5.8) | ||
| 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) |
| appid | str | true | 32 | 从业机构的公众号ID | |
| sub_openid | str | true | 128 | 用户在医疗机构AppID下的唯一标识 | o4GgauInH_RCEdvrrNGrntXDuXXX |
| sub_appid | str | true | 32 | 医疗机构的公众号ID | wxdace645e0bc2cXXX |
| sub_mchid | str | true | 32 | 医疗机构的商户号 | o1F5v6WOqkITYoez9ljYA2PLB100 |
| pay_for_relatives | boolean | false | 是否代亲属支付 | 代亲属支付:true 不传默认本人支付 | |
| out_trade_no | str | true | 64 | 回传医院发送的订单号 | |
| serial_no | str | false | 40 | 医疗机构订单号 例如医院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 | 医保局提供的医疗机构编码 | H51231231131 |
| 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 | 渠道号。由腾讯工程师分配的渠道号,给医疗机构使用,标记医保支付渠道信息。 | {} |
亲属身份信息 relative
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| name | str | true | 32 | 真实姓名 | 张三 |
| id_digest | str | true | 64 | 目前只支持身份证MD5摘要,摘要为数字和小写字母组合,代亲属支付场景必填。身份证中如果有字母需要转成大写做MD5,15位身份证号需要转为18位,计算出的MD5需要转换为数字和小写字母组合后使用。例如:44030019000101123x按照规则计算后为09eb26e839ff3a2e3980352ae45ef09e | 09eb26e839ff3a2e3980352ae45ef09e |
| card_type | str | true | 证件类型 (字典较多,详情请见5.2) | ID_CARD 身份证 |
现金补充列表 cash_add_detail
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| cash_add_fee | uint64 | true | 现金补充金额,单位分 | 20 | |
| cash_add_type | str | true | 64 | 现金补充类型(字典较多,详情请见5.3) | FREIGHT 运费 |
现金减免列表 cash_reduce_detail
| 参数 | 类型 | 是否必输 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| cash_reduce_fee | uint64 | true | 现金减免金额 | 20 | |
| cash_reduce_type | str | true | 64 | 现金减免类型(字典较多,详情请见5.4) | HOSPITAL_REDUCE 医院减免 |
7 字典值清单
7.1订单类型
| 标题 | 代码 | 描述 |
|---|---|---|
| 默认值 | UNKNOWN_ORDER_TYPE | 未知类型,会被拦截 |
| 挂号支付 | REG_PAY | 挂号支付 |
| 诊间支付 | DIAG_PAY | 诊间支付 |
| 新冠检测费用(核酸) | COVID_EXAM_PAY | 新冠检测费用(核酸) |
| 住院费支付 | IN_HOSP_PAY | 住院费支付 |
| 药店支付 | PHARMACY_PAY | 药店支付 |
| 报销费支付 | INSURANCE_PAY | 保险费支付 |
| 互联网医院挂号支付 | INT_REG_PAY | 互联网医院挂号支付 |
| 互联网医院复诊支付 | INT_RE_DIAG_PAY | 互联网医院复诊支付 |
| 互联网医院处方支付 | INT_RX_PAY | 互联网医院处方支付 |
| 新冠抗原检测 | COVID_ANTIGEN_PAY | 新冠抗原检测 |
| 药费支付 | MED_PAY | 药费支付 |
7.2证件类型
| 标题 | 代码 | 描述 |
|---|---|---|
| 未知证件类型 | UNKNOWN_USER_CARD_TYPE | 未知证件类型 |
| 身份证 | 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);
HbfhMimpOrderRequestV1 request = new HbfhMimpOrderRequestV1();
request.setServiceUrl("https://gw.open.icbc.com.cn/api/hbfh/mimp/order/V1");
HbfhMimpOrderRequestV1Biz bizContent = new HbfhMimpOrderRequestV1Biz();
bizContent.setSerialnoIcbc("202503104562887596345"); //请求工行流水号
bizContent.setOrderType("REG_PAY"); //订单类型
bizContent.setMixPayType("INSURANCE_ONLY"); //混合支付类型
request.setBizContent(bizContent);
try {
HbfhMimpOrderResponseV1 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
{
"serialno_icbc": "4402000002T101031127",
"order_type": "REG_PAY",
"mix_pay_type": "CASH_ONLY",
"hospital_id": "4402000002",
"sub_openid": "ocZagjhXXXXXXXXXsFHs1dT_M",
"payer": {
"name": "测试用户",
"id_digest": "odLSW5ZuaaZ_04KDK65hoHDvDOPM",
"card_type": "ID_CARD"
},
"pay_for_relatives": false,
"out_trade_no": "4402000002T101031127",
"serial_no": "121775250120150123",
"city_id": "510100",
"med_inst_name": "河北医科大学第二医院",
"med_inst_no": "H123123123",
"total_fee": 8000,
"wechat_pay_cash_fee": 8000,
"cash_add_detail": [
{
"cash_add_fee": 2000,
"cash_add_type": "FREIGHT"
}
],
"cash_reduce_detail": [
],
"callback_url": "https://www.weixin.qq.com/wxpay/pay.php",
"prepay_id": "wx201410272009395522657a690389285100",
"extends": "{}",
"attach": "{}",
"sub_mchid":"59XXXXX68",
"sub_appid":"wx4XXXXXXX8952"
}10 响应示例
json
{
"return_code": "0",
"return_msg": "success",
"mix_trade_no": "P0013068202402260009460001607980",
"mix_pay_status": "MIX_PAY_CREATED",
"self_pay_status": "SELF_PAY_CREATED",
"med_ins_pay_status": "NO_MED_INS_PAY",
"passthrough_response_content": null,
"paid_time": "1970-01-01T08:00:00+08:00",
"mix_pay_type": "CASH_ONLY",
"order_type": "REG_PAY",
"sub_appid": "wx485xXXXXX952",
"sub_mchid": "59XXXXXX68",
"sub_openid": "ocZagjXXXXXXXXXXFHs1dT_M",
"pay_for_relatives": false,
"out_trade_no": "4402000002T101031127",
"serial_no": "121775250120150123",
"pay_order_id": null,
"pay_auth_no": null,
"geo_location": null,
"city_id": "510100",
"med_inst_name": "河北医科大学第二医院",
"med_inst_no": "H123123123",
"med_ins_order_create_time": null,
"total_fee": 8000,
"med_ins_gov_fee": 0,
"med_ins_self_fee": 0,
"med_ins_other_fee": 0,
"med_ins_cash_fee": 0,
"wechat_pay_cash_fee": 8000,
"cash_add_detail": [
{
"cash_add_fee": 2000,
"cash_add_type": "FREIGHT"
}
],
"cash_reduce_detail": [],
"prepay_id": "wx201410272009395522657a690389285100",
"passthrough_request_content": null,
"extendsInfo": null,
"attach": "{}"
}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 | 方法未登记 |