《北京银行电子票据技术文档.pdf》由会员分享,可在线阅读,更多相关《北京银行电子票据技术文档.pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、电子票据技术文档 文档修改记录 版本 日期 说明 编写者 审核者 1.0 2008-6-18 创建文档 李兴柯 2.0 2008-6-18 完善文档内容 李兴柯 马峰 朱攀 1.1 需求描述 见“企业网上银行电子票据需求 080406.doc”1.2 概要说明 1)电子票据包括:票据申请,票据交付,接收签章,背书转让,票据贴现,未用退回,到期托收,法人授权设置,电子票据收款人名册等功能。网银数据库不存储票据的信息,所有票据的最新信息及状态都从票据中心取回来显示于用户(包括历次背书的信息),网银数据库只存储票据指令相关信息。2)此次电子票据功能一共涉及 8 张表 CB_ELECBILL_BATC
2、H 电子票据批量表(新增)CB_ELECBILL 电子票据批量明细表(新增)CB_ELECBILLT_SG 电子票据散票表(新增)CB_EBCORP_AUTHSET 电子票据法人授权设置表(新增)CB_RECCOMPANYLIST 电子票据授权人名册(新增)PUB_CB_APPPAR 企业网银系统参数表(新增)enterprise_bill 企业开通电子票据表(新增 内部管理中使用)TRANSFER_AUTH_HISTORY 交易授权历史表(修改)GROUP_LOGON_ID 企业用户表(修改,增加是否法人,是否有电子签章权限)3)PUB_CB_APPPAR 的使用方法:由于电子票据需要大量的
3、参数数据,为了动态的维护这些参数数据新建了企业网银参数表(使用方详见后面章节)。1.3 票据贴现 1.3.1 流程图 开始检验选择的票据持有人账号,票据类型一致,票据少于15张,承兑人扣除商票所选票据承兑人必须一致通过否D501查询票据信息D429查询背书及签章信息将查询出来的icoll放入到context中的两个数组中是否查询完毕否在检验页面,从数组中取出票据信息,循环检验是是否通过将不通过票据号记录下来否是否完成否是循环检验其中票据是否存在等待授权的其它交易存在其它交易记录票号是否存在不通过票据提示错误信息,显示票号是否是是是否检验完成否否是组装申请批号需要的icoll,申请批号存入批次及
4、票据信息到数据库中是否需要授权更新状态为待授权是上主机提交将散票加入到批次及提交批次交易(成功或是失败)否更新状态为交易发送成功或失败完成,显示批号及处理结果录入贴现批次信息是 1.3.2 流程描述 用户首先进入票据查询入口,查询出能够进行贴现交易的票据,用户选择票据后点击贴现,首先检验用户选择是否正确(不能少于一张,持有人账号必须一致,票据类型必须一致),用户输入贴现信息,提交后检验用户输入是否正确(贴现利率格式,承兑人扣除商票所选票据承兑人必须一致),再进行章信息检验,然后检查每张票是否存在其它待授权的交易,如果通过,则去申请批号,存入到数据库,根据是否授权,如果不需要,则上主机将散票加入
5、到批次和提交批次,更新批次状态,如果需要授权,则更新批次状态,最后显示结果页面。1.3.3 需要注意到问题 D501报文发送时需要明细,因为明细始终只有一条,所以直接从contxt中取icoll的kcoll中对应的变量的值。即 kcoll 变量的值从 context 中妈,如 kcoll 中的变量 test 则直接context.getValueAt(“test”);具体参看相应 OP。在插入批量表中,为防止出现批量表插入成功,但是票据表插入失败的情况,在插入时,将批量表中的批次状态置为程序正在处理(中间状态)状态,在票据表全部数据插入完成后再更新批量表。在检验票据是否已存在其它等待授权的交易
6、时,通过循环检验每一张票,检查时先检查散票表中,存不存在票号相同的并且状态为等待授权的交易,如果是,则存在待授权交易,再检查票据表中是否存在票号相同并且状态为等待授权的交易,如果存在再检验它对应的批次状态是否为待授权,如果是,则表明存在待授权交易。循环插入票据表的方法参照以前的方法,主要是在 context 中设置一个计数器,每做一次循环更新一次计数器,直至全部完成。setTimeOpStep 的 OP 为设置在 format 报文中用到的 8 位字段的时期。票据签章信息检验的实现办法为:循环每张票,取出所需要的信息,组装报文调用 D501,D429 交易,将返回的 icoll 放入到两个 A
7、rrayList 中,同时清除掉两个 icoll 中的数据,只留下一条数据(平台本身特性决定:icoll 中必须有一条数据才能获得其结构从而进行赋值,并且下次交易返回的数据是添加到以前的 icoll 后面,而不是对 icoll 重新赋值)。1.4 票据托收 1.4.1 流程图 开始检验选择的票据持有人账号,票据类型一致,票据少于15张,承兑人扣除商票所选票据承兑人必须一致通过否D501查询票据信息D429查询背书及签章信息将查询出来的 icoll放入到context中的两个数组中是否查询完毕否在检验页面,从数组中取出票据信息,循环检验是是否通过将不通过票据号记录下来否是否完成否是循环检验其中票
8、据是否存在等待授权的其它交易存在其它交易记录票号是否存在不通过票据提示错误信息,显示票号是否是是是否检验完成否否是组装申请批号需要的icoll,申请批号存入批次及票据信息到数据库中是否需要授权更新状态为待授权是上主机提交将散票加入到批次及提交批次交易(成功或是失败)否更新状态为交易发送成功或失败完成,显示批号及处理结果是 1.4.2 流程描述 用户首先进入票据查询入口,查询出能够进行贴现交易的票据,用户选择票据后点击贴现,首先检验用户选择是否正确(不能少于一张,持有人账号必须一致,票据类型必须一致),再进行章信息检验,然后检查每张票是否存在其它待授权的交易,如果通过,则去申请批号,存入到数据库
9、,根据是否授权,如果不需要,则上主机将散票加入到批次和提交批次,更新批次状态,如果需要授权,则更新批次状态,最后显示结果页面 1.4.3 需要注意的问题 和贴现基本相同,为批量交易,需要进行章检验,是否已进行其它交易。1.5 票据背书 1.5.1 流程图 选择背书票据检验用户所选票据是否通过背书信息录入更新收款人列表,获取网点号背书信息确认插入到数据库中是否需要授权是否完成,显示结果发送主机交易更新交易状态否是 1.5.2 流程说明 用户先选择要进行背书的票据(一张),录入背书收款人信息,更新收款人列表,再进入背书信息确认页面,将数据插入到数据库中,看是否要求授权,如果需要,则转到结果页面,显
10、示票据号及票据状态,如果不需要授权,则上主机,再更新交易状态,最后显示结果页面,通知用户票据状态。1.5.3 需要注意的问题 更新收款人列表时,会根据账号去取网点号。更新收款人时,会将网点号和取到的收款账号开户行存到收款人列表中。更新收款人列表先更新存储过程,再通过 OP 更新 context 中的收款人信息(因为收款人信息是在登录时从数据库中取出来放到 context 中)。背书转让交易中的收款账号对应的网点号是直接在存储过程中取得后存入到数据库中的。1.6 查看票据 1.6.1 流程描述 用户点击查看票据,调用 D501 及 D429 交易,再在页面上显示票据信息。1.6.2 需要注意的问
11、题 D501 信息查询完成后,返回 icoll(只有一条),会将 icoll 中的数据直接放到 context 中,供 D429 调用。1.7 电子票据交易批复 1.7.1 流程说明 1)电子票据交易批复可以按批次批复和按票据批复,按批次批复包括:票据申请,票据贴现,到期托收。按票据批复包括:开票交付,未用退回,背书转让 2)批复流程和北京银行通用的批复流程相似,只是多增加了一个法人授权用户。法人授权用户也是一位授权人,只是在内部管理系统中,可以为该用户赋予法人权限和电子签章权限。交易批复时只关心是否有法人权限,电子签章时需要关心法人权限和电子签章权限。3)一般交易批复查询时,需要满足:a 指
12、令状态为待授权状态0 b 授权用户和提交用户同属于一个集团 c 授权用户状态正确且对该指令的付款账户有任意转出权限。d 该授权用户对该笔指令没有授过权 e 如果指令的当前授权级别为 0 并且当前级别授权用户数为 0(即还没有人对该笔指令授权),当指令的交易金额小于授权人的基本限额时,授权人可以查询出该笔指令。f 如果指令的交易金额小于授权人的组合限额,并且【当前指令的授权级别等于该授权用户的授权级,并且但前授权人数小于该级别需要的总的授权人数】或者【授权用户是当前指令的下一级别授权用户,且当前指令在当前级别的授权人数已经满足在该级别所需要的最大人数】时,可以查询出该笔指令。所以一般交易的批复,
13、只要满足 a 并且 b 并且 c 并且 d 并且(e 或 f)为 true 时,才能查询出该笔指令。但是电子票据指令新增加了一个法人权限,e 条件需要做以下修改:E 如果指令的当前授权级别为 0 并且当前级别授权用户数为 0(即还没有人对该笔指令授权),当指令的交易金额小于授权人的基本限额时,如果开通法人强制授权并且本人是法人授权人可以查询出该笔指令,如果没有开通法人强制授权,则不用判断本人是否是法人。所以电子票据交易的批复,要满足 a 并且 b 并且 c 并且 d 并且(E 或 f)为 true时,才能查询出该笔指令 4)授权时,如果授权人为法人,那么在授权历史 TRANSFER_AUTH_
14、HISTORY 交易授权历史表中 AUTH_EB_CORPORATION 字段会记录为 1(1:法人,0:非法人)。5)当最后一个授权人授权时,如果该交易开通了法人强制授权,则需要判断以前是否已有法人对该笔指令授权,如果没有,则必须要求本人是法人才能对该指令授权,否则提示错误于用户(改笔指令必须要求法人授权)。1.8 开票签章 1.8.1 概要说明 商票开票批次完成全部企业预设的授权流程后,即可进行“开票签章”操作;银票开票批次完成全部企业预设的授权流程后须经过银行审核,银行开票审核通过后,才可进行“电子签章”操作。1.8.2 流程图 1.8.3 流程说明 1、该操作要有电子签章和法人用户才能
15、使用,系统首先判断该用户是否具有该权限,具有则可以操作,否则提示客户“您没有电子签章权限,请您企业具有该权限的人员进行操作!”;2、选择“开票签章”,可以输入批次号查询,不输入则查询全部,系统则发送交易(D502)到电子票据系统,按照该用户有操作权限的账户查询出开票签章的所有批次信息;3、选择一个批次,通过交易(D005)查询出该批次下的所有票据信息,对于已签章的票据,不能再签章,只能查询,显示签章后的结果,通过交易(D501)查询。对于未签章的票据查询出票据信息后,可以做签章与拒绝。如果该批次下所有票据都已签章,则会出现批次提交(D504)按钮,提交该批次。4、在调用签章交易前,系统判断该企
16、业是否开通电子票据业务,开通则可以签章,否则提示客户没有开通电子票据业务。5、票据签章调用交易(D023)、拒绝调用交易(D024),成功后系统会判断该票据是否为最后一张签章票据,是的就调用交易(D504)提交该批i次。6、在票据签章时,系统显示客户该签章的所在位置,客户签章后,提示消失,客户在取消签章后,提示再次出现,客户签章时必需和用户密钥Key中的名称相同,否则提示你不能签章该票据。7、添加数据库,在做签章交易前,需要添加散票表数据,调用存储过程co_pckg_ElecBill3.cb_proc_InsertBillInfo_SG添加一条记录,在签章交易成功返回后,修改该交易状态为成功。
17、1.9 接收签章 1.9.1 概要说明 接收签章包括交付签章与背书转让签章业务。交付签章:出票人在交付票据后,收款人接收该票据的签章;背书转让签章:票据持有人对票据作过背书转让后,被背书人接收该票据的签章;1.9.2 流程图 1.9.3 流程说明 1、该操作要有电子签章和法人用户才能使用,系统首先判断该用户是否具有该权限,具有则可以操作,否则提示客户“您没有电子签章权限,请您企业具有该权限的人员进行操作!”;2、选择“接收签章”,可以输入票号查询,不输入则查询全部,系统则发送交易(D017)到电子票据系统,按照该用户有操作权限的账户查询出所有接收签章的信息;3、选择一条票据,系统判断该企业是否
18、开通电子票据业务,开通则可以签章,否则提示客户没有开通电子票据业务。4、该票据需要通过交易(D501、D429)查询出该票据的信息及所有背书签章的信息,显示票样及签章状态。5、在银票显示中,银行章的显示是根据联行号来确定,所有银行签章信息都存在目录:/dse/cbserver/sign_bankno_files/下;6、在票据签章时,系统显示客户该签章的所在位置,客户签章后,提示消失,客户在取消签章后,提示再次出现,客户签章时必需和用户密钥Key中的名称相同,否则提示你不能签章该票据。7、交付接收签章调用交易(D018)、交付拒绝签章调用交易(D503)、背书转让签章调用交易(D122)、背书
19、转让拒绝签章调用交易(D132),在做签 章 交 易 前,需 要 添 加 散 票 表 数 据,调 用 存 储 过 程co_pckg_ElecBill3.cb_proc_InsertBillInfo_SG 添加一条记录,在签章交易成功返回后,修改该交易状态为成功。8、在签章页面显示时,每次签章的信息都是票据基本信息加上这次签章的用户与账户信息。在背书转让签章中在被背书人信息中,显示的是签章企业的名称与账号。在交付接收签章中被背书人信息为空。1.9.4 需要注意的问题 1.在开始的查询页面中有签章驱动的自动下载包(BJCAWebSign.CAB),在没有安装签章驱动的用户,该页面将运行比较长的时间
20、。2.银行签章信息放在目录:/dse/cbserver/sign_bankno_files/下,这是一期临时处理,在以后将取消,添加与修改分行签章信息,直接替换签章文件,页面显示的银行签章只能是最新的签章。3.在所有签章交易中发送一个序列字段,是对签章信息的对应。4.签章后的信息不能大于 9000字节。5.基本签章值:出票日|票号|出票人|收款人|付款人账号|收款人账号|付款人开户行|收款人开户行|票面金额|汇票到期日|交易合同号码。6.开票签章是签章基本签章值,在接收签章中是基本签章值+|背书人名称|背书人账号。7.签章的图片大小为客户章子的实际大小。1.10 法人授权设置 1.10.1 表
21、结构说明 表名(中文)表名(英文)字段前缀 法人授权设置 PUB_CB_APPPAR 无 序号 字段名 类型 长度 NULL 说明 1.group_id VARCHAR2 15 NO 企业 ID 联合主键 2.statues VARCHAR2 9 NO 状态 9 位 111111111 每位为 0 表示不用强制授权 每位为 1 表示需要强制授权 第 1 位:票据申请 第 2 位:票据贴现 第 3 位:到期托收(可设置)第 4 位:开票交付(可设置)第 5 位:背书转让(可设置)第 6 位:开票/背书转让接收 第 7 位:拒绝接收 第 8 位:未用退回 第 9 位:到期承付 3.login_id
22、 VARCHAR2 60 NO 操作员 ID 4.chang_time VARCHAR2 15 NO 操作时间 1.10.2 设计原理和使用说明 6)该表用于设置企业电子票据业务是否需要法人授权。状态位 statues 为 9 位,每位为 0表示不用强制授权,为 1 表示需要强制授权。根据业务要求,其中只有到期托收,开票交付,背书转让可以设置是否需要法人授权,其他的都是必须要求法人授权设置的。7)各个交易通过以下存储过程来判断是否需要法人授权:PROCEDURE selectItermTranAauthProcedure(in_groupId in VARCHAR2,in_tranType i
23、n VARCHAR2,out_procsign out VARCHAR2,out_statues out VARCHAR2 )IS BEGIN out_procsign:=0;SELECT substr(statues,to_number(in_tranType),1)into out_statues FROM CB_EBCORP_AUTHSET where group_id=in_groupId;EXCEPTION WHEN NO_DATA_FOUND THEN if(in_tranType=1 or in_tranType=2 or in_tranType=8)then out_statu
24、es:=1;else out_statues:=0;end if;WHEN others THEN out_procsign:=1;END;参数:企业编号,交易类型,结果,法人授权标志 通过传入的企业编号和交易类型,去 PUB_CB_APPPAR 中取 statues 中的交易类型是否需要法人授权的标志。如果没有找到数据,说明其没有设置,在没有设置时,如果传入的 tranType 为1,2,8,返回1,表示必须要法人授权,否则返回 0;8)法人授权设置的页面,只有到期托收,开票交付,背书转让(3,4,5)可以设置,其他的交易类型都默认为 1;1.11 企业网银参数表使用方法 1.11.1 表结
25、构说明 表名(中文)表名(英文)字段前缀 企业网银参数表 PUB_CB_APPPAR 无 序号 字段名 类型 长度 NULL 说明 5.APR_CODE VARCHAR2 60 NO 参数代码 联合主键 6.APR_VALUE VARCHAR2 30 NO 参数值 联合主键 7.APR_LANGUAGE VARCHAR2 10 NO 语言种类 联合主键 8.APR_NAME VARCHAR2 100 NO 参数说明 9.APR_SHOWMSG VARCHAR2 200 NO 参数显示内容 10.APR_CLASS VARCHAR2 6 YES 预留字段 1.11.2 参数表使用说明 9)往参数
26、表中存入需要参数化显示的数据。INSERT INTO PUB_CB_APPPAR(APR_CODE,APR_VALUE,APR_LANGUAGE,APR_NAME,APR_SHOWMSG,APR_CLASS)VALUES(bill_type,1,zh_CN,票据类型,银票,NULL);INSERT INTO PUB_CB_APPPAR(APR_CODE,APR_VALUE,APR_LANGUAGE,APR_NAME,APR_SHOWMSG,APR_CLASS)VALUES(bill_type,2,zh_CN,票据类型,商票,NULL);参数代码和语言种类相同的参数视为一组参数。系统启动时,会把这些参数读入系统级别的参数中。使用时如果不输入语言种类,则默认为中文。10)页面中使用,动态显示下拉框 -全部-11)页面中使用,根据参数值转换为参数显示信息 String billType=utb.nvl(String)context.getValueAt(billType),-);/票据种类 如果输入的参数值没有对应的参数显示信息,则返回原参数值。