票号

更新时间:2022-12-26 18:14:15 阅读: 评论:0


2022年12月26日发(作者:奥巴马医保)

票号授权校验及票号准确性校验开发文档

一、票号授权校验及票号准确性流程说明

1.主业务流程说明:

1)出票页面,供应填写完出票票号,点击提交时,进行页校验提示“是否授权?”,供应点击“我

已授权”;

2)调用API票号校验接口,API票号校验接口验证是否能提取供应票号,若票号提取不成功,若票

号提取成功,进行票号准确性检验,若票号准确性校验不通过,告之平台票号准确性校验不通过

原因,平台保存票号等信息,出票交易状态和订单状态变更为”票号信息异常“,保存后,将”校

验不通过原因“提示给供应,关闭出票窗口。【供应可根据异常订单标签,进行异常订单任务处理】。

3)若票号准确性校验通过,验证订单是否为携程订单,若不为携程订单,保存票号等信息,出票交

易状态和订单状态变更为”已出票“。

4)若为携程订单,在二次授权任务表中,增加一条二次授权的任务,保存票号等信息,出票交易状

态和订单状态变更为”已出票“【往condauthorizetask二次授权表插入一个记录】

API进行二次授权任务处理,扫描二次授权任务表,进行二次授权,二次授权成功后,由平台扫描二

次授权任务表,核查是否授权成功,

5)另一种模式:涉及到携程的订单,出票时,平台直接调用API二次授权的订单进行二次授权交互,这

种方案,可能存在交互时间过长的问题。若授权失败,出票状态变更为出票中;新建后台进程。扫描

单据来源于携程的订单且出票交易状态为出票中,对该类订单进行自动授权;

2.票号未授权流程说明:

1)供应点击【票号未授权】标签,查询票号未授权的出票交易,页面进行渲染。

2)点击开始处理按钮,点击【处理】按钮,进入票号未授权处理页面,供应复制授权指令,线下

授权后,点击提交,走出票时流程。

3.票号校验异常流程说明:

1)供应点击【异常订单】标签,查询票号校验异常的出票交易,页面进行渲染;

2)点击开始处理按钮,点击【处理】按钮,进入票号校验异常处理页面,供应选择提交异常申诉,

填写相应信息,出票交易状态变更为22;【插入complain表内容】

3)总控,业务员处理供应提交的申诉单,业务员验证通过后,点击【确认供应票号信息无误】后,

继续进行出票操作【若是携程的订单,进行二次授权后,状态变更为已出票,若不是携程订单,

状态直接变更为已出票】;说明【二次授权时,若提取票号失败,则出票交易状态变更为20】

【需更新complain表,complainStatus=0,updateTime】

4)若验证不通过,打回供应,出票交易状态变更为21,告之供应异常原因,更新complain表。

【需更新complain表,abnormalType,updateTime】

5)供应认可业务员提交的异常原因时,点击完成信息修改,继续进行票号有效性验证【携程订单

进行二次授权】,出票操作。【需更新complain表,complainStatus=0,updateTime】

供应不认可业务员提交的异常原因,可继续提交给业务员。【需更新complain表,

abnormalType,updateTime】

4.设计说明

1)增加订单状态:20票号未授权;21票号校验异常;22票号校验异常申诉;23票号未二次授

权;

2)处理按钮展示条件:出票交易状态为20,21,22三种状态时,展示处理按钮。

3)在开票发交易管理界面,增加三个标签按钮:

票号未授权:lect*fromtickorderinfowheresupplier=’供应’andstatus=20;

异常订单:lect*fromtickorderinfowheresupplier=’供应’andstatus=21;

异常订单申诉:lect*fromtickorderinfowheresupplier=’供应’andstatus=22;

4)在总控订单管理,出票前标签列中,增加三个标签按钮:

异常订单申诉:lect*fromtickorderinfowherestatus=22;

票号未授权:lect*fromtickorderinfowherestatus=20;

异常订单:lect*fromtickorderinfowherestatus=21;

5)流程交互中,将与供应的异常交互信息,未授权等信息存到tickorderinfo表的comment字段

6)增加申诉表:complain

Createtablecomplain{

`id`int(11)NOTNULLAUTO_INCREMENT,

`tickOrderId`varchar(32)NOTNULLDEFAULT''COMMENT'出票订单Id',

`orderId`varchar(20)NOTNULLDEFAULT'',

`pnrCode`varchar(20)NOTNULLDEFAULT'',

`detrinfo`textCOMMENT'提取票号命令信息',

`complainStatus`tinyint(4)NOTNULLDEFAULT'0'COMMENT'申诉状态1有效0:无效',

`abnormalType`tinyint(4)NOTNULLDEFAULT''COMMENT'审核错误类型1行程信息

有误2乘机人信息有误3出发到达日期有误’,

`createTime`datetimeNOTNULLDEFAULT'1900-01-0100:00:00'COMMENT'创建时间',

`updateTime`datetimeNOTNULLDEFAULT'1900-01-0100:00:00'COMMENT'最后更新

时间'

}

7)增加二次授权任务表:condauthorizetask

Createtablecondauthorizetask{

`id`int(11)NOTNULLAUTO_INCREMENT,

`orderId`varchar(20)NOTNULLDEFAULT'',

`pnrCode`varchar(20)NOTNULLDEFAULT'',

`infoSource`varchar(32)NOTNULLDEFAULT''COMMENT'office号',

`resource`varchar(30)NOTNULLDEFAULT''COMMENT'gds渠道',

`authStatus`tinyint(4)NOTNULLDEFAULT'0'COMMENT'授权状态-1已授权0:待授权',

`authError`textCOMMENT'授权失败原因',

`createTime`datetimeNOTNULLDEFAULT'1900-01-0100:00:00'COMMENT'创建时间',

`authTime`datetimeNOTNULLDEFAULT'1900-01-0100:00:00'COMMENT'授权时间'

}

8)平台二次授权成功可出票任务扫描:

新建定时器,每隔3分钟,扫描二次授权任务表condauthorizetask中状态为已授权的订单

信息;

获取List列表,遍历列表;

从condauthorizetask中,得到orderid,pnrCode,调用出票逻辑,进行出票操作。

9)弹出小弹窗设计:

在页面写一个定时器【8点至18点扫描】,每隔三分钟,通过ajax去后台请求一次(查询有票

号未授权或票号校验异常的订单)数据。

lect*fromtickorderinfowheresupplier=’agentId’andstatus=20orstatus=21;

若后台有返回数据,弹出一个窗口,提示【您有(票号未授权、票号信息异常)订单需要处理,

点击查看(这四个字是超链接)】,点击查看按钮,进入票号未授权、票号信息异常的订单展示

列表。

若后台无返回数据,则不处理。

10)换编政策时,可更换出票系统,可更换的出票系统从哪儿取???,或者是写死到页面???

保存时,值存到哪儿???:

二、票号校验接口

1.平台或总控调用API票号校验接口参数说明:

AirTicketRefCheckRQ参数

字段说明是否必须

Stringsissionid与API交互时sissionid是

Stringresourcegds渠道是

StringinfoSourcepcc是

Stringorderid订单id是

StringpnrCodePnr是

TicketRef[]ticketRefs票号信息是

Requestor[]requestors请求者是

AirTicketRefCheckRS参数

字段说明是否必须

Requestor[]requestors请求者是

StringinfoSourcePcc

StringresourceGds渠道是

TicketRefCheckResult[]ticketRefCheckResult票号校验返回结果是

TicketRefCheckResult参数说明

ErrorInfoerror校验不通过信息

TicketRefticketRef票号信息

TicketRef参数说明是否必须

StringticketRef票号是

Stringpasnger【lastName/firstName】是中间以/分

1.获取AirTicketRefCheckRQ,对AirTicketRefCheckRQ中,resource,infoSource,orderid,

pnrCode,requestors字段的非空或有效性进行校验,校验不通过,封装AirTicketRefCheckRS,

返回调用方错误信息;

2.对AirTicketRefCheckRQ中,TicketRef对象进行为空校验,若为空,则根据orderid,pnrCode去

travelerinfo表查询到List,校验查询结果中(ticketRef,firstName,lastName),

若有一个为空,封装AirTicketRefCheckRS,返回调用方错误信息;

3.从AirTicketRefCheckRQ中,获取resource,infoSource,ticketRefs,orderid,pnrcode信息;

4.遍历ticketRefs票号,调用线程池方法TicketRefCheckTask();

5.遍历ticketRefs票号,等待执行结果,获取线程执行结果,将结果封装成AirTicketRefCheckRS;

6.返回AirTicketRefCheckRS;

7.新建线程池,使用阻塞队列ArrayBlockingQueue;

8.建立有返回类型的线程方法TicketRefCheckTask(Stringresource,StringinfoSource,String

ticketRef,Stringordered,Stringpnrcode),在call()方法中,list<

TicketRefCheckResult>resultList=dealTicketRefCheck(Stringorderid,StringpnrCode,

StringfirstName,StringlastName,StringticketRef);

ReturnresultList;

9.在dealTicketRefCheck()方法中处理如下逻辑:

1)封装提取票号AirDETRRQ;

2)调用引擎提取票号接口,获取到接口返回数据AirDETRRS;

3)判断AirDETRRS是否返回异常,若有异常信息,直接将异常信息返回给调用方;

4)解析AirDETRRS,获取乘客信息;

5)解析AirDETRRS的乘客信息pasnger字段与firstName,lastName进行比较,若不匹配,则

记录“票号:XXX,乘机人:pasnger乘机人姓名与票号不符”;

6)解析AirDETRRS,获取行程信息ListitinerarySegs

7)遍历ListitinerarySegs,验证行程的状态是否为”OPENFORUSE”或

“AIRPORTCNTL”两种状态,若有行程不是这两种状态,则记录:“”票号:XXX,乘机人:

XXX出发机场:XXX,到达机场XXX行程无效“;

8)通过传入的orderid,pnrCode查询gmentinfo表,获取List行程信息;

9)若List行程均有效,再与List行程进行校验,验证出发机场,

到达机场,航班号,出发日期,到达日期,验证不通过,则记录:”票号:XXX,乘机人:XXX

XXX行程不匹配“;

处理过滤缺口:arunk

联票号处理:3-8-3

问题说明:

RRS中的List行程无顺序,需跟gmentinfo对象中一个订单的所有行程进

行一次比较;

2.票号校验如何校验票号格式?

3.联票的情况如何处理?比如:北京-香港-纽约这个里面可能是2张票

号xxx-xxxxxxxx-01xxx-xxxxxxxxxx-02

三、票号二次授权接口

1.平台或总控调用API票号二次授权接口参数说明:

AirTicketAuthRQ参数

字段说明是否必须

Stringsissionid与API交互时sissionid是

Stringresourcegds渠道是

StringinfoSourcepcc是

TicketRef[]ticketRefs票号信息是

Requestor[]requestors请求者是

TicketRef参数说明是否必须

StringticketRef票号是

AirTicketAuthRS参数

字段说明是否必须

Requestor[]requestors请求者是

StringinfoSourcePcc

StringresourceGds渠道是

TicketAuthResult[]ticketAuthResult票号二次授权接口是

TicketAuthResult参数说明

ErrorInfoerror校验不通过信息

TicketRefticketRef票号信息

1.获取AirTicketAuthRQ,对AirTicketAuthRQ各字段的非空或有效性进行校验,校验不通过,封装

AirTicketAuthRS,返回调用方错误信息;

2.从AirTicketAuthRQ中,获取票号,遍历票号ticketRefs,每循环一次,调用线程池中线程,处理授

权逻辑;

3.遍历票号ticketRefs,等待执行结果,获取线程执行结果,将结果封装成AirTicketAuthRS,返回

AirTicketAuthRS。

4.线程池中授权处理逻辑如下:

1)封装提取票号AirDETRRQ;

2)调用引擎提取票号接口,获取到接口返回数据AirDETRRS;

3)判断AirDETRRS是否返回异常,若有异常信息,直接将异常信息返回给调用方,并提示授权失

败;

4)若提取AirDETRRS成功,封装AirTicketAuthRQ【注isCheckAuth=fal】;

5)调用引擎二次授权接口,获取到接口返回数据AirTicketAuthRS;

6)判断AirTicketAuthRS是否存在异常,若正常,则返回授权成功;若返回授权失败,则返回授

权失败;若返回其他异常或超时时,则封装AirTicketAuthRQ接口【注isCheckAuth=true】;

7)第二次调用引擎二次授权接口,返回AirTicketAuthRQ;

8)验证返回的AirTicketAuthRQ是否异常,若异常,则直接返回授权失败;若正常,则验证返回

的出票office号,预订office号,被授权office号,再授权office号中是否包含需授权的office

中,若包含,则返回授权成功;若不包含,则返回授权失败;

问题说明:

1.第二种方案,若引擎在授权异常或超时时,再进行一次授权查看命令,直接返回授权查看结果到API,

API可不用两次调用引擎接口。

2.做二次授权的时候,如果出票方不是我们的office,就优先使用出票方的office对携程进行二次授权

3.现在比较麻烦的是.gdsvo,和校验的全流程.总控什么时候发起调用之类的流程要写一下.

四、票号自动发起二次授权服务

1.新建定时器,每隔3分钟,扫描二次授权任务表condauthorizetask中状态为待授权的订单信息;

2.获取List列表,遍历列表,每循环一次,调用线程池中线程,处理二次授权

逻辑;

3.处理逻辑如下:

1)根据condauthorizetask得到orderid,pnrcode,infoSource,resource;

2)根据orderid,pnrcode查询travelerinfo表,得到票号集合;

3)遍历票号集合,调用票号二次授权接口,等待二次授权接口执行结果;

4)获取该订单所有票号集合二次授权结果,判断所有二次授权执行结果是否都成功,若成功,将

condauthorizetask表的状态变更为已授权;

5)若有一个返回授权失败,在condauthorizetask表中记录授权失败原因,不变更授权状态。

五、二次授权指令接口

引擎PID需要提供二次授权接口;

将票号以PEK440名义对采购的PCC执行二次授权指令:ETTJ:AUTH/票号/PCC(携程SHA717),

返回DUPLICATEOFFICEDESIGNATOR为重复授权。无响应或未授权时,使用ETTJ:AUTH/票号/D,确认

检查已授权是否包含需被授权的PCC,如下图示;

可能的RQ参数:Stringsissionid,Stringresource,StringinfoSource,BooleanisCheckAuth,

ticketRefs(最好能支持批量票号);

参数说明:isCheckAuth=true时使用ETTJ:AUTH/票号/D命令校验返回的结果集中授权是否已完成;

返回参数:Stringresource,StringinfoSource,ReturnInfo[]returninfos(如可批量操作票号则需多个),

Authori[]authorizes

参数说明:

Authori:返回已授权的PCC列表;包含StringticketRef,StingissueOffice,StringbookingOffice,

String[]from,String[]to三个参数;

issueOffice:出票office;

bookingOffice:预定office;

from:再授权office;

to:被授权office;

ReturnInfo:interrCode,StringerrMsg,Stringdetail,StringticketRef,booleanisSucc

需要重点返回的类型:

ETTJ:AUTH/票号/PCC授权指令返回结果:

FFICEMISSING,PLEASECONTACTISSUEOFFICE.异常(失败)

ITY未授权(失败)

DAIRLINECODE航司不需要授权(成功)

ED授权成功(成功)

ATEOFFICEDESIGNATOR重复授权(成功)

6.其他异常(失败);

ETTJ:AUTH/票号/D查看指令返回结果:

预定office:PEK214

出票office:PEK440

被授权office:CAN830,HKG545,HKG328,BJS177

再授权office:CAN830,HKG545

本文发布于:2022-12-26 18:14:15,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/35233.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:杂乱无章
下一篇:signlanguage
标签:票号
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图