-- Start of DDL Script for Procedure SD_HOSPITAL.SP_SF_PAY_ZFRZ00 -- Generated 22-三月-2019 16:46:10 from SD_HOSPITAL@FW2 CREATE OR REPLACE procedure sp_sf_pay_zfrz00( PJKLXBH in number ,--输入:接口类型编号 0:设置服务 1:查询预交金 2:预交金充值 3:预交金退款 4:查询交易结果 PBRID00 in number ,--输入:BRID00 PZYGHID in number ,--输入:住院(ZYID00)或门诊(GHID000)流水号 PZYHGHH in varchar2 ,--输入:住院(ZYH000)或门诊(GHH000)号 PCZY000 in number ,--输入:操作员编码 PCZYXM0 in varchar2 ,--输入:病人姓名 PMZZYBZ in varchar2 ,--输入:门诊住院标志 0:门诊 1:住院 PJFBZ00 in varchar2 ,--输入:缴费备注0:交,1:退 PJZDH00 in number default 0 ,--输入:结账单号 PYJDH00 in number default 0 ,--输入:医技单号 PZFFS00 in number ,--输入:支付编码 PZFFSMC in varchar2 ,--输入:支付名称 PJFJE00 in number ,--输入:缴费金额 PFKTM00 in varchar2 default '' ,--输入:付款条码 PTKDDH0 in varchar2 default '' ,--输入:退款订单号 PINCS00 in varchar2 ,--输入:输入参数(票据序号|开户银行|转账单位|支票号码) PCOMMIT in varchar2 default 'N' ,--输入:是否提交事务 Y:提交 N:不提交 PZXZT00 out number ,--输出:执行状态 0:失败 1:成功 PDDLSH0 out varchar2 ,--输出:订单流水号 PERRMSG out varchar2 ,--输出:错误信息 PJKQQCS in varchar2 default '' ,--输入:请求入参xml格式 PZFMXBH in varchar2 default '' ,--输入:支付明细编码 PCZYKS0 in number default 0 --输入:操作员科室 ) as -- MODIFICATION HISTORY -- Person Date Comments --zhangyc 2017.07.31 created by MZSF-20170724-004 --zhangyc 2017.08.14 by MZSF-20170815-001 --zhangyc 2017.09.30 微信或支付宝支付修改 by MZSF-20171010-001 --zhangyc 2017.10.12 微信或支付修正 by MZSF-20171012-002 --zhangyc 2017.10.18 统一支付修正 by MZSF-20171018-002 --zhangyc 2017.10.26 修正建档登记缴费备注错误导致判断异常 by MZSF-20171027-002 --zhangyc 2017.11.06 增加SF_YJJYHKJYHXZ、SF_YJJZZZPHMXZ 判断 by MZSF-20171107-001 --zhangyc 2017.11.10 增加住院功能 by ZYSF-20171113-001 --zhangyc 2017.11.21 增加出院结算退款 by ZYSF-20171123-002 --zhangyc 2017.12.13 增加现金退款重新查退款金额 by ZYSF-20171214-001 --zhangyc 2018.03.05 代码整合 by ZYSF-20180302-001 --zhangyc 2018.06.15 增加ZFMXBM by MZSF-20180619-001 --zhangyc 2018.06.21 修改取消结算补收bug by ZYSF-20180625-001 --zhangyc 2018.07.04 增加PJXH00校验 by MZSF-20180704-001 --zhangyc 2018.07.12 增加NBJYDH by MZSF-20180712-007 --zhangyc 2018.07.31 增加入参PJKQQCS、PZFMXBH、PCZYKS0 by MZSF-20180731-002 --zhangyc 2018.08.20 修改票据号重复限制 by ZYSF-20180820-001 --zhangyc 2018.10.22 增加银行卡退款LS_WITHDRAWMODE=1 by MZSF-20181023-004 --zhangyc 2018.10.24 pos刷卡接口修改 by MZSF-20181025-001 --zhangyc 2018.10.25 POS刷卡接口修改 by MZSF-20181025-003 --zhangyc 2018.10.26 POS刷卡修改 by MZSF-20181029-001 --zhangyc 2018.11.09 修改离线pos交易编码转为“POS_OFF” by MZSF-20181109-006 --zhangyc 2019.01.22 增加预交金退款转现金退出LS_WITHDRAWMODE=1 错误 -- --------- ---------- ------- RBRXX BM_BRXXB0%rowtype; RZYXX ZY_BRXXB0%rowtype; LS_COUNT0 number(5); LS_CZRQ00 char(8); LS_CZSJ00 char(8); LS_TRANSTYPE varchar2(50);--接口名称 LS_YYID00 varchar2(6); LS_ICKH00 IC_YHXX00.ICKH00%type; LS_KLDH00 IC_YHXX00.KLDH00%type; LS_KMH000 IC_YHXX00.KMH000%type; LS_ICKNBH IC_YHXX00.ICKNBH%type; LS_ICKSX0 IC_YHXX00.ICKSX0%type; LS_DDLSH0 BM_ZFRZ00.DDLSH0%type; LS_MZZHID SF_BRZHXX.MZZHID%type; LS_SFDJ00 SF_BRZHXX.SFDJ00%type; LS_ZYE000 SF_BRZHXX.ZYE000%type; LS_XJYE00 SF_BRZHXX.XJYE00%type; LS_ZZYE00 SF_BRZHXX.ZZYE00%type; LS_YKTYE0 SF_BRZHXX.YKTYE0%type; LS_CARDTYPE varchar2(10);-- 01:社保卡 02:市民健康卡 03:院内就诊卡 04:身份证 05:住院号 06:临时卡 07:腕带编码 08:病案号加身份证 09:住ID 10:病人ID LS_CARDNO varchar2(200);--去前缀卡号 LS_ACCOUNTTYPE varchar2(10);--帐户类型 01:门诊账户 02:住院账户 LS_HISCUSTID number(12); --院内ID、门诊或住院ID LS_CZFSBM varchar2(30);--充值方式编码 LS_CZFSMC varchar2(50);--充值方式名称 LS_AMOUNT number(12,2); LS_AMOUNT_MC varchar2(30); LS_PJXH00 SF_PJSYQK.PJXH00%type; LS_PJLYID BM_PJLYQK.PJLYID%type; LS_WITHDRAWMODE varchar2(10); --退款方式:0:现金 1:原路退回 2:银企退款 3:医保自费部份退款 4:离线POS 5:单位转账 LS_ERRSTR varchar2(200); LS_OUTCHARGENO varchar2(50); LS_TYJE00 number(12,2); LS_JFBZ00 char(1); LS_HZJDFLAG char(1);--是否建档标志 1:是 0:否 LS_TKCZJE number(12,2);--退款冲正金额 LS_ZFQDBM BM_ZFRZ00.JGBM00%type;--支付渠道编码 LS_ZPKHYH BM_ZFRZ00.ZPKHYH%type;--开户银行 LS_ZPDWMC BM_ZFRZ00.ZPDWMC%type;--转账单位 LS_ZPH000 BM_ZFRZ00.ZPH000%type;--支票号或交易单号 LS_ZFMXBH BM_ZFFSMX.ZFMXBH%type;--支付明细编码H:现金I:转账J:POS离线K:POS刷卡L:龙支付M:银联二维码D:微信离线E:微信扫码F:支付宝离线G:支付宝扫码A:榕医通B:聚合支付C:健康通N:银医通P:一卡通 LS_XKH000 BM_YGBM00.XKH000%type; LS_BMBH00 BM_YGBM00.BMBH00%type; LS_BMYYID BM_BMBM00.YYID00%type; LS_YYQC00 XT_YYXX00.YYQC00%type; LS_YYJC00 XT_YYXX00.YYJC00%type; LS_DESKFLAK varchar2(10);--收银台弹出标志 0 弹出 1 不弹出 LS_NBJYDH BM_ZFRZ00.NBJYDH%type;--内部校验流水号 LS_CZYKS0 BM_ZFRZ00.CZYKS0%type;--操作员科室 LS_JKQQCS BM_ZFRZ00.JKQQCS%type;--请求入参xml格式 LS_ZFMXBH_ORD BM_ZFRZ00.ZFMXBH%type; LS_ZFFS00_ORD BM_ZFRZ00.ZFFS00%type; LS_CHANNELTYPE varchar2(10);--银行卡pos刷卡退款传02 LS_XJKQY0 varchar2(50);--新接口启用(启用接口 1:是 0:否) LS_MZJKQY varchar2(50);--门诊支付参数(启用接口 1:是 0:否) LS_MZCJBM varchar2(50);--门诊支付参数(厂家编码) LS_MZQRYM varchar2(50);--门诊支付参数(确认页面 1:是 0:否) LS_MZYLTK varchar2(50);--门诊支付参数(是否原路退回 1:是 0:否) LS_MZFWDZ varchar2(50);--门诊支付参数(服务地址) LS_MZYYID varchar2(50);--门诊支付参数(应用ID) LS_MZYYMM varchar2(50);--门诊支付参数(应用密码) LS_MZJYBM varchar2(50);--门诊支付参数(接口交易码) LS_ZYJKQY varchar2(50);--住院支付参数(启用接口 1:是 0:否) LS_ZYCJBM varchar2(50);--住院支付参数(厂家编码) LS_ZYQRYM varchar2(50);--住院支付参数(确认页面 1:是 0:否) LS_ZYYLTK varchar2(50);--住院支付参数(是否原路退回 1:是 0:否) LS_ZYFWDZ varchar2(50);--住院支付参数(服务地址) LS_ZYYYID varchar2(50);--住院支付参数(应用ID) LS_ZYYYMM varchar2(50);--住院支付参数(应用密码) LS_ZYJYBM varchar2(50);--住院支付参数(接口交易码) begin LS_ERRSTR:=''; LS_COUNT0:=0; PZXZT00:=0; --执行状态 0:失败 1:成功 PDDLSH0:=''; LS_CZRQ00:=to_char(sysdate,'YYYYMMDD'); LS_CZSJ00:=to_char(sysdate,'HH24:MI:SS'); LS_TYJE00:=0; LS_TKCZJE:=0; LS_JFBZ00:=PJFBZ00;--缴费备注0:交,1:退 LS_ZFQDBM:='YHPAY'; LS_DESKFLAK:='0';--收银台弹出标志 0 弹出 1 不弹出 LS_JKQQCS:=PJKQQCS;--请求入参xml格式 --接口类型编号 0:设置服务 1:查询预交金 2:预交金充值 3:预交金退款 4:查询交易结果 --10:门诊支付撤销 11:门诊建档充值 12:门诊预交金充值 13:门诊预交金退款 14:门诊预交金作废 15:门诊取消结算 16:门诊退费应退 17:门诊退费应补 --20:住院支付撤销 21:入院登记充值 22:住院预交金充值 23:出院结算充值 24:重新结算充值 --31:取消入院退款 32:住院预交金退款 33:出院结算退款 34:重新结算退款 --35:年度结算退款 36:年度结算充值 37:住院取消结算 --增加该判断避免前台未传入缴费备注 if PJKLXBH in (2,11,12,17,21,22,23,24) and LS_JFBZ00 not in ('0') then LS_JFBZ00:='0'; --缴费备注 0:交 1:退 end if; if PJKLXBH in (3,13,14,16,31,32,33,34) and LS_JFBZ00 not in ('1') then LS_JFBZ00:='1'; --缴费备注 0:交 1:退 end if; --获取新接口启用参数 begin select MZJKQY,MZCJBM,MZQRYM,MZYLTK,MZYLTK,MZFWDZ,MZYYID,MZYYMM,MZJYBM, ZYJKQY,ZYCJBM,ZYQRYM,ZYYLTK,ZYFWDZ,ZYYYID,ZYYYMM,ZYJYBM into LS_MZJKQY,LS_MZCJBM,LS_MZQRYM,LS_MZYLTK,LS_MZYLTK,LS_MZFWDZ,LS_MZYYID,LS_MZYYMM,LS_MZJYBM, LS_ZYJKQY,LS_ZYCJBM,LS_ZYQRYM,LS_ZYYLTK,LS_ZYFWDZ,LS_ZYYYID,LS_ZYYYMM,LS_ZYJYBM from VW_SF_BRZFFS where ZFFSBH =PZFFS00; exception when others then LS_MZJKQY:='0';--门诊支付参数(启用接口 1:是 0:否) LS_MZCJBM:='';--门诊支付参数(厂家编码) LS_MZQRYM:='0';--门诊支付参数(确认页面 1:是 0:否) LS_MZYLTK:='0';--门诊支付参数(是否原路退回 1:是 0:否) LS_MZFWDZ:='';--门诊支付参数(服务地址) LS_MZYYID:='';--门诊支付参数(应用ID) LS_MZYYMM:='';--门诊支付参数(应用密码) LS_MZJYBM:='';--门诊支付参数(接口交易码) LS_ZYJKQY:='0';--住院支付参数(启用接口 1:是 0:否) LS_ZYCJBM:='';--住院支付参数(厂家编码) LS_ZYQRYM:='0';--住院支付参数(确认页面 1:是 0:否) LS_ZYYLTK:='0';--住院支付参数(是否原路退回 1:是 0:否) LS_ZYFWDZ:='';--住院支付参数(服务地址) LS_ZYYYID:='';--住院支付参数(应用ID) LS_ZYYYMM:='';--住院支付参数(应用密码) LS_ZYJYBM:='';--住院支付参数(接口交易码) end; --退款方式:0:现金 1:原路退回 2:银企退款 3:医保自费部份退款 4:离线POS 5:单位转账 if PZFFS00=1 then LS_WITHDRAWMODE:='0'; elsif PZFFS00=2 then LS_WITHDRAWMODE:='5'; elsif PZFFS00=8 then LS_WITHDRAWMODE:='4'; elsif PZFFS00=24 then LS_WITHDRAWMODE:='1'; elsif PZFFS00=25 then LS_WITHDRAWMODE:='1'; elsif PZFFS00=28 then LS_WITHDRAWMODE:='1'; else LS_WITHDRAWMODE:='0'; end if; LS_CHANNELTYPE:='01';--银行卡pos刷卡退款传02 其它传01 --支付明细编码H:现金I:转账J:POS离线K:POS刷卡L:龙支付M:银联二维码D:微信离线E:微信扫码F:支付宝离线G:支付宝扫码A:榕医通B:聚合支付C:健康通N:银医通P:一卡通 if PTKDDH0 is not null and PTKDDH0 not in ('0') and LS_WITHDRAWMODE not in ('1') then begin select ZFMXBH,ZFFS00 into LS_ZFMXBH_ORD,LS_ZFFS00_ORD from BM_ZFRZ00 where DDLSH0=PTKDDH0 and BRID00=PBRID00; exception when others then LS_ZFMXBH_ORD:=null; LS_ZFFS00_ORD:=0; end; if LS_ZFMXBH_ORD in ('K','E','G','L','M','B') then LS_WITHDRAWMODE:='1';--退款方式:0:现金 1:原路退回 2:银企退款 3:医保自费部份退款 4:离线POS 5:单位转账 end if; if LS_ZFMXBH_ORD in ('K') then LS_CHANNELTYPE:='02';--银行卡pos刷卡退款传02 其它传01 end if; --2019.01.22 增加预交金退款转现金退出LS_WITHDRAWMODE=1 错误 if PZFFS00=1 then LS_WITHDRAWMODE:='0'; end if; end if; --支付明细编码H:现金I:转账J:POS离线K:POS刷卡L:龙支付M:银联二维码D:微信离线E:微信扫码F:支付宝离线G:支付宝扫码A:榕医通B:聚合支付C:健康通N:银医通P:一卡通 if PZFFS00=1 then --现金 LS_ZFMXBH:='H'; LS_DESKFLAK:='1';--收银台弹出标志 0 弹出 1 不弹出 elsif PZFFS00=8 then --银行卡 LS_ZFMXBH:='J'; LS_DESKFLAK:='0';--收银台弹出标志 0 弹出 1 不弹出 elsif PZFFS00=2 then --转账 LS_ZFMXBH:='I'; LS_DESKFLAK:='1';--收银台弹出标志 0 弹出 1 不弹出 elsif PZFFS00=25 then --支付宝 LS_ZFMXBH:='G'; LS_DESKFLAK:='0';--收银台弹出标志 0 弹出 1 不弹出 elsif PZFFS00=24 then --微信 LS_ZFMXBH:='E'; LS_DESKFLAK:='0';--收银台弹出标志 0 弹出 1 不弹出 elsif PZFFS00=26 then --健康通 LS_ZFMXBH:='C'; LS_DESKFLAK:='1';--收银台弹出标志 0 弹出 1 不弹出 else LS_ZFMXBH:=''; end if; if LS_JFBZ00 in ('1') then--缴费备注0:交,1:退 LS_DESKFLAK:='1';--收银台弹出标志 0 弹出 1 不弹出 end if; if trim(PZFMXBH) is not null then select count(1) into LS_COUNT0 from BM_ZFFSMX where ZFFSBH=PZFFS00 and ZFMXBH=PZFMXBH; if nvl(LS_COUNT0,0)>0 then begin LS_ZFMXBH:=PZFMXBH; exception when others then LS_ZFMXBH:=''; end; end if; else if LS_ZFMXBH_ORD is not null then LS_ZFMXBH:=LS_ZFMXBH_ORD; end if; end if; if PJKQQCS is not null then begin select JKQQCS into LS_JKQQCS from BM_ZFPTCS where NBID00=PJKQQCS; exception when others then LS_JKQQCS:=null; end; update BM_ZFPTCS set DDLSH0=LS_DDLSH0,CZRQ00=LS_CZRQ00,CZSJ00=LS_CZSJ00,MKLXMC='接口请求参数' where NBID00=PJKQQCS; end if; --获取医院ID begin select SF_SF_GETYYID00() YYID00 into LS_YYID00 from dual; exception when others then LS_YYID00:='0'; end; --获取员工胸卡号 begin select A.XKH000,A.BMBH00,B.YYID00 into LS_XKH000,LS_BMBH00,LS_BMYYID from BM_YGBM00 A,BM_BMBM00 B where A.BMBH00=B.BMBH00 and A.YGBH00=PCZY000; exception when others then LS_XKH000:=null; LS_BMBH00:=0; LS_BMYYID:=null; end; if nvl(PCZYKS0,0)=0 then LS_CZYKS0:=LS_BMBH00; else LS_CZYKS0:=PCZYKS0; end if; if LS_BMYYID is null then LS_BMYYID:=LS_YYID00; end if; --根据部门获取对应医院名称 begin select YYID00,YYQC00,YYJC00 into LS_YYID00,LS_YYQC00,LS_YYJC00 from XT_YYXX00 where YYID00=LS_BMYYID; exception when others then LS_YYQC00:=''; LS_YYJC00:=''; end; --数据统一校验 SP_SF_PAY_CHECK ( PBRID00,--病人ID PCZY000,--操作员 PZFFS00,--支付方式 PMZZYBZ,--门诊住院标志 0:门诊 1:住院 LS_JFBZ00,--缴费备注 0:交 1:退 PJFJE00,--交易金额 PINCS00,--其他参数 LS_ERRSTR--错误信息 ); --zhangyc 2018.07.04 获取票据序号以及增加票据序号重复校验 begin select substrb(SF_SF_RETURNINDEXEH(trim(PINCS00),'|', 1),1,30) into LS_PJXH00 from dual; exception when others then LS_PJXH00:=null; end; --获取内部校验流水号:据序号|开户银行|转账单位|支票号码|brid00|模块名称|支付名称|支付金额| 结账单号 |是否一次补交 |支付明细编码|内部校验号 begin select substrb(SF_SF_RETURNINDEXEH(trim(PINCS00),'|', 12),1,30) into LS_NBJYDH from dual; exception when others then LS_NBJYDH:=null; end; if trim(LS_PJXH00) is not null and trim(LS_PJXH00) not in ('0') and LS_JFBZ00 in ('0') and nvl(PJFJE00,0)>0 then select count(1) into LS_COUNT0 from BM_ZFRZ00 where 1=1 and BRID00=PBRID00 and MZZYBZ=PMZZYBZ and PJXH00=LS_PJXH00 and CZRQ00=LS_CZRQ00 and JFBZ00 in ('0') and JKLXBH in (2,22) and DJH000>0; if nvl(LS_COUNT0,0)>0 then PERRMSG:='票据号:['||trim(LS_PJXH00)||']缴费方式:['||PZFFSMC||']缴费金额:['||trim(to_char(round(PJFJE00,2),'9999999990.00'))||']已成功充值缴费,无法重复充值!'; return; end if; end if; if (trim(LS_ERRSTR) is not null) and (PJKLXBH not in (33)) then PERRMSG:=LS_ERRSTR; return; end if; select SF_SF_PAY_DDLSH0('',PMZZYBZ) into LS_DDLSH0 from dual; select * into RBRXX from BM_BRXXB0 where BRID00=PBRID00; if PMZZYBZ in ('0') then --门诊住院标志 0:门诊 1:住院 begin select ICKH00,KLDH00,KMH000,ICKNBH,ICKSX0 into LS_ICKH00,LS_KLDH00,LS_KMH000,LS_ICKNBH,LS_ICKSX0 from IC_YHXX00 where BRID00=PBRID00 and ZT0000='1'; exception when others then LS_ICKH00:=null; end; select SF_SF_MSTCARDNO(PBRID00,'5.0',trim(LS_ICKH00),trim(LS_KLDH00),trim(LS_ICKSX0),trim(LS_ICKNBH),trim(LS_KMH000)) into LS_CARDNO from dual; --9位:社保卡 10位:居民健康卡 if length(LS_CARDNO) in (9,12) then LS_CARDTYPE:='01'; elsif length(LS_CARDNO) in (10) then LS_CARDTYPE:='02'; else LS_CARDTYPE:='03'; end if; --LS_CARDTYPE:='05';--测试用 LS_ACCOUNTTYPE:='01';--帐户类型 01:门诊账户 02:住院账户 LS_HISCUSTID:=PBRID00; --院内ID、门诊或住院ID else --住院 select * into RZYXX from ZY_BRXXB0 where ZYID00=PZYGHID; LS_CARDTYPE:='05'; -- LS_ACCOUNTTYPE:='02';--帐户类型 01:门诊账户 02:住院账户 LS_HISCUSTID:=PZYGHID; --院内ID、门诊或住院ID LS_CARDNO:=PZYHGHH; --住院号 end if; --获取充值或退款方式SF_SF_PAY_CZFS00(缴费备注 0:交 1:退,返回类型 0:院内 1:平台,返回编码类型 0:编码 1:名称,支付方式编码) if PMZZYBZ='0' then LS_CZFSBM:=substrb(LS_MZJYBM,1,30);--门诊支付参数(接口交易码) LS_CZFSMC:=PZFFSMC; else LS_CZFSBM:=substrb(LS_ZYJYBM,1,30);--住院支付参数(接口交易码) LS_CZFSMC:=PZFFSMC; end if; if LS_CZFSBM is null then select SF_SF_PAY_CZFS00(LS_JFBZ00,'0','0',PZFFS00) into LS_CZFSBM from dual; --充值或退款方式编码 select SF_SF_PAY_CZFS00(LS_JFBZ00,'0','1',PZFFS00) into LS_CZFSMC from dual; --充值或退款方式名称 end if; if LS_JFBZ00='1' and PZFFS00=8 and LS_ZFMXBH_ORD in ('J') then --J:POS离线 LS_CZFSBM:='POS_OFF'; --银行卡刷卡方式 POS:POS刷卡 POS_OFF:离线POS刷卡 LS_WITHDRAWMODE:='4';--退款方式:0:现金 1:原路退回 2:银企退款 3:医保自费部份退款 4:离线POS 5:单位转账 end if; /* if LS_CZFSBM is null then PERRMSG:='充值或退款方式不能为空'; return; end if; */ if LS_JFBZ00 in ('0') then --:缴费备注0:交,1:退 LS_AMOUNT:=PJFJE00; LS_AMOUNT_MC:='充值金额'; else --:缴费备注,1:退 LS_AMOUNT:=abs(PJFJE00); LS_AMOUNT_MC:='退款金额'; end if; --出院结算退款,现金查询是否有微信或支付冲正 现金退款金额+冲正的金额 if PJKLXBH=33 and PZFFS00=1 then begin select sum(JFJE00) into LS_TKCZJE from BM_ZFRZ00 where ZYGHID=PZYGHID and JZDH00=PJZDH00 and YJDH00=PYJDH00 and TKJYLX='02' and ZFFS00 in (24,25); exception when others then LS_TKCZJE:=0; end; LS_AMOUNT:=nvl(LS_AMOUNT,0)+nvl(abs(LS_TKCZJE),0); end if; select SF_SF_GETBRZHYE(0,PBRID00,1,3) into LS_TYJE00 from dual; --插入日志主表 insert into BM_ZFRZ00 ( DDLSH0,--订单流水号((门诊MZ 住院ZY 自助机:ZZ)+yyyyMMddHHmmss+xxxx) CZRQ00,--操作日期 CZSJ00,--操作时间 CZY000,--操作员编码 CZYXM0,--操作员姓名 JKLXBH,--接口类型编号 0:设置服务 1:查询预交金 2:预交金充值 3:预交金退款 4:查询交易结果 JKLXMC,--接口类型名称 ZDBH00,--终端编号(自助机) BRID00,--病人ID BRXM00,--病人姓名 BRXB00,--病人性别 YBKH00,--医保卡号 YBID00,--医保ID ICKH00,--IC卡号 BRZJBH,--证件编号 BRDH00,--病人电话 MZZYBZ,--门诊住院标志 0:门诊 1:住院 JFBZ00,--缴费备注0:交,1:退 ZYGHID,--住院(ZYID00)或门诊(GHID000)流水号 ZYHGHH,--住院(ZYH000)或门诊(GHH000)号 JZDH00,--结账单号 YJDH00,--医技单号 ZFFS00,--支付编码 ZFFSMC,--支付方式名称 DJH000,--单据流水号=SF_BRJFB0.DJH000 JFJE00,--缴费金额 JFRQ00,--缴费日期 JFSJ00,--缴费时间 ZXZTBZ,--状态标志 0:失败 1:成功 BRYE00,--病人余额 BZ0000,--备注信息 PTDDH0,--支付平台充值订单号=chargeNo,退款订单号=refundNo ZFQD00,--支付渠道=tradeMode JYCGSJ,--交易成功时间(yyyyMMddHHmmss)=traceTime PTGZH0,--支付平台跟踪号=traceNo JKXYBM,--响应编码=respCode JKXYXX,--响应信息=respMsg JYLSH0,--交易流水号 YKTSH0,--健康通流水号 JYLXMC,--交易类型名称 JGBM00,--机构编码 JGMC00,--机构名称 INCS00,--请求入参集合=param INQTCS,--扩展入参集合 OUTCS0,--返回参数 TKDDH0,--商户退款订单号=outRefundNo TKJE00,--退款金额 TYJE00,--停用金额 PJXH00, ZPKHYH, ZPDWMC, ZPH000, ZFQDBM, ZFMXBH, NBJYDH, JKQQCS, CZYKS0 )values ( LS_DDLSH0,--订单流水号((门诊MZ 住院ZY 自助机:ZZ)+yyyyMMddHHmmss+xxxx) LS_CZRQ00,--操作日期 LS_CZSJ00,--操作时间 PCZY000,--操作员编码 PCZYXM0,--操作员姓名 PJKLXBH,--接口类型编号 0:设置服务 1:查询预交金 2:预交金充值 3:预交金退款 4:查询交易结果 SF_SF_PAY_JKLXMC(PJKLXBH,0),--接口类型名称 '',--终端编号(自助机) PBRID00,--病人ID trim(RBRXX.BRXM00),--病人姓名 RBRXX.BRXB00,--病人性别 trim(RBRXX.YBKH00),--医保卡号 trim(RBRXX.YBID00),--医保ID trim(LS_ICKH00),--IC卡号 trim(RBRXX.BRZJBH),--证件编号 trim(RBRXX.BRDH00),--病人电话 PMZZYBZ,--门诊住院标志 0:门诊 1:住院 LS_JFBZ00,--缴费备注0:交,1:退 PZYGHID,--住院(ZYID00)或门诊(GHID000)流水号 PZYHGHH,--住院(ZYH000)或门诊(GHH000)号 PJZDH00,--结账单号 PYJDH00,--医技单号 PZFFS00,--支付编码 PZFFSMC,--支付方式名称 0,--单据流水号=SF_BRJFB0.DJH000 PJFJE00,--缴费金额 null,--缴费日期 null,--缴费时间 '0',--状态标志 0:失败 1:成功 0,--病人余额 null,--备注信息 null,--支付平台充值订单号=chargeNo,退款订单号=refundNo null,--支付渠道=tradeMode null,--交易成功时间(yyyyMMddHHmmss)=traceTime null,--支付平台跟踪号=traceNo null,--响应编码=respCode null,--响应信息=respMsg null,--交易流水号 null,--健康通流水号 null,--交易类型名称 null,--机构编码 '易联众医院统一支付平台',--机构名称 null,--请求入参集合=param PINCS00,--扩展入参集合 null,--返回参数 PTKDDH0,--商户退款订单号 0, LS_TYJE00, trim(LS_PJXH00), LS_ZPKHYH, LS_ZPDWMC, LS_ZPH000, LS_ZFQDBM, LS_ZFMXBH, LS_NBJYDH, LS_JKQQCS, LS_CZYKS0 ); --插入接口名称---begin--- /* transType hop.trade.setinfo 设置服务参数 hop.account.info 查询预交金账户信息 hop.trade.recharge 预交金账户充值 hop.trade.refund 预交金账户退款 hop.trade.query 交易结果查询 */ select SF_SF_PAY_JKLXMC(PJKLXBH,0) into LS_TRANSTYPE from dual; insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'主项参数','transType','接口名称',LS_TRANSTYPE,null); --插入接口名称---end--- --插入param--begin-- --接口类型编号 0:设置服务 1:查询预交金 2:预交金充值 3:预交金退款 4:查询交易结果 --21:入院登记充值 22:预交金充值 23:出院结算充值 24:重新结算充值 --31:取消入院退款 32:预交金退款 33:出院结算退款 34:重新结算退款 --35:年度结算退款 36:年度结算充值 37:住院取消结算 --if PJKLXBH in (2,3,21,22,23,24,31,32,33,34,35,36,37) then --接口类型编号 0:设置服务 1:查询预交金 2:预交金充值 3:预交金退款 4:查询交易结果 --HZJDFlag 是否门诊建档 1:0:否 if PZYHGHH in ('门诊建档') or PJKLXBH in (21) or PJKLXBH in (11) then LS_HZJDFLAG:='1'; else LS_HZJDFLAG:='0'; end if; insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','HZJDFlag','是否建档 1:是否 0:否',LS_HZJDFLAG,null); --operatorId Char(30) N 操作员编号 insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','operatorId','操作员编号',PCZY000,null); --operatorName Char(50) N 操作员姓名 insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','operatorName','操作员姓名',PCZYXM0,null); --termNo 终端编号 Char(52) insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','termNo','终端编号',null,null); --cardType Char(2) N 卡类型 01社保卡 02市民健康卡 03院内就诊卡 04身份证 05住院/病案号 06临时卡 07腕带编码 insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','cardType','卡类型',trim(LS_CARDTYPE),null); --cardNo Char(32) N 卡号 insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','cardNo','卡号/住院号',trim(LS_CARDNO),null); --accountType 帐户类型 String(2) 01:门诊账户 02:住院账户 insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','accountType','帐户类型',trim(LS_ACCOUNTTYPE),null); --hisCustId 院内ID String(2) N 门诊或住院ID insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','hisCustId','门诊或住院ID',LS_HISCUSTID,null); --idNo 身份证号 String(32) Y insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','idNo','身份证号',trim(RBRXX.BRZJBH),null); --userName Char(64) N 姓名 insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','userName','病人姓名',trim(RBRXX.BRXM00),null); --depositType 充值方式 String(12) insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','depositType',trim(LS_CZFSMC),trim(LS_CZFSBM),null); --amount 充值金额 Number(12,2) N insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','amount',trim(LS_AMOUNT_MC),trim(to_char(round(LS_AMOUNT,2),'9999999990.00')),null); if LS_JFBZ00='0' then --缴费备注0:交,1:退 --outChargeNo 商户充值业务流水 String(30) insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','outChargeNo','商户订单流水号',LS_DDLSH0,null); end if; if LS_JFBZ00='1' then --缴费备注0:交,1:退 --接口类型编号 3:预交金退款 退款方式:0:现金 1:原路退回 2:银企退款 3:医保自费部份退款 4:离线POS 5:单位转账 --outChargeNo 商户充值业务流水 String(30) if PTKDDH0 is null then LS_OUTCHARGENO:=LS_DDLSH0; else LS_OUTCHARGENO:=PTKDDH0; end if; insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','outChargeNo','商户订单流水号',LS_OUTCHARGENO,null); --原订单流水号 insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','withdrawMode','退款方式',LS_WITHDRAWMODE,null); insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','outRefundNo','商户退款订单号',LS_DDLSH0,null); --新订单流水号 insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'param','channelType','原充值交易的渠道类型',LS_channelType,null); end if; --插入扩展参数extra--begin-- --医院ID insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','hopid','医院编码',trim(LS_YYID00),null); --医院名称 insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','hopname','医院名称',trim(LS_YYQC00),null); --收银台弹出标志 0:弹出 1:不弹出 insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','deskflak','收银台弹出标志(0:弹出 1:不弹出)',LS_DESKFLAK,null); --if PJKLXBH in (2) then if LS_JFBZ00='0' then --缴费备注0:交,1:退 insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','openId','微信公共号支付需入参openId',null,null); insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','authCode','微信刷卡支付需入参authCode',null,null); insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','returnUrl','支付成功页面中转URL',null,null); insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','buyerId','支付宝服务窗支付需要入参买家的支付宝唯一用户号',null,null); insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','buyerLogonId','支付宝服务窗支付需要入参买家支付宝账号',null,null); else insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','userName','提现人姓名',null,null); insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','contactNumber','提现人联系电话',null,null); insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','ubankNo','联行号',null,null); insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','bankCardNo','提现银行卡号',null,null); insert into BM_ZFRZMX(DDLSH0,MXID00,CSLXMC,ZDBM00,ZDSM00,VALUE0,BZSM00) values(LS_DDLSH0,SQ_BM_ZFRZMX_MXID00.nextval,'extra','branchName','提现账户开户行名称',null,null); end if; --插入扩展参数extra--end-- --end if; --插入param--end-- if PCOMMIT='Y' then commit; end if; PZXZT00:=1;--输出:执行状态 0:失败 1:成功 PDDLSH0:=LS_DDLSH0;--输出:订单流水号 exception when no_data_found then PZXZT00:=0; PERRMSG:=substrb('执行过程SP_SF_PAY_ZFRZ00错误!'||sqlerrm,1,200); when others then PZXZT00:=0; PERRMSG:=substrb('执行过程SP_SF_PAY_ZFRZ00错误!'||sqlerrm,1,200); end; / -- End of DDL Script for Procedure SD_HOSPITAL.SP_SF_PAY_ZFRZ00