IBE用户手册.docx
- 文档编号:11234023
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:43
- 大小:567.74KB
IBE用户手册.docx
《IBE用户手册.docx》由会员分享,可在线阅读,更多相关《IBE用户手册.docx(43页珍藏版)》请在冰豆网上搜索。
IBE用户手册
IBE用户手册
编写单位:
中国航信研发中心总体设计部IBE组
本手册使用说明4
一、基本民航订座知识5
1.1什么是订座5
1.3旅客姓名记录—PNR5
1.4订座流程(从查询到出票)6
1.5出票6
1.6民航系统的数据表述6
1.7注意事项7
二、什么是IBE8
2.1IBE8
2.2IBE的特点8
2.3主要功能列表9
三、您为什么需要10
3.1构建自己的商务模式10
3.2方便的开发10
3.3完备的日志管理11
3.4确保使用安全11
四、使用之前12
4.1IBE客户端12
4.2IBE客户端的运行环境12
4.3IBE客户端的使用前提12
4.4开发环境部署12
五、开发指南15
5.1AV解惑15
5.1.1AV指令介绍15
5.1.2IBE中AV类15
5.1.3获取舱位信息的方法16
5.2AV和FD相结合17
5.3订座指南18
5.3.1订座流程图18
5.3.2SS的使用19
5.3.3PNR封口19
5.3.4对于旅客姓名的特殊说明19
5.3.5假A现象20
5.4PNR其它组的输入20
5.5从费改税看FF20
5.6行动代码的说明21
5.7航班变更的处理方法22
5.8外航订座技巧22
5.8.1代理人系统与外航订座系统的连接方式22
5.8.2连接状态的查看23
5.8.3外航订座小技巧24
5.9IBE新功能介绍25
5.9.1ASR(机上座位预订)25
六、使用中的问题集26
6.1关于连接问题26
6.2订座不成功问题26
6.3PNR修改问题26
6.4PAT问题26
附127
IBE指令接口27
本手册使用说明
本手册内容涵盖了中航信的互联网订座引擎IBE(InternetBookingEngine)的产品介绍、服务申请流程和具体开发指南。
对于完全不熟悉订座业务的开发人员,在本文第一章专门介绍订座常识和基本概念。
已经熟悉这方面业务的人员完全可以跳过这一章进入后面的内容。
第二章是对于IBE的简要介绍、IBE特点和基本功能简介。
第三章介绍了IBE能够解决哪些用户的哪些需要。
第四章介绍了使用IBE的前提配置、IBE部署方案和申请IBE的详细流程。
其中关于IBE两个主要包的内部关系图清晰直观的给出了围绕航班查询和订座的这些类的关系和使用方法。
第五章开发指南是手册的重点章节,介绍了使用IBE的开发过程中可能出现的问题和解决方法,还有一些使用技巧。
结合用户手中已有的接口详细文档来看,效果最佳。
最后一章的问题集收集了我们在IBE支持中用户可能出现的问题和解答,如果您碰到了问题,可以根据问题的分类在这里寻求答案。
这样的篇章设计相信对刚开始接触IBE的用户起到很好的帮助作用。
本手册的编写得到了公司各方面的大力支持和配合,现在还很不完善。
希望各方在读后给出修改意见,并联系我们,以便我们更好的改进。
李明中国航信研发中心总体设计部IBE组Tel:
86-10-84669396
ibesupport@
2010-05-10
一、基本民航订座知识
1.1什么是订座
简要地说,订座就是订取某航班的一个座位。
在中国民航系统主机上存放了大量航班座位信息。
旅客想乘坐任何一个航空公司的客机出行,必须首先在主机系统预定一个座位。
这就需要向主机询问某时间、出发到达地是否有合适的航班、可利用的座位。
如果确定预订该座位,系统就会生成一个记录编号—PNR(PassengerNameRecoder),这个订座记录将会跟随旅客,从订妥座位,行程修改,付款,出票,机场登机,一直到航班起飞到达目的地后,该记录才会被系统删除。
不管订座的方式、流程如何复杂多样,原理都是这样的。
大型主机系统处理能力超强,但是其特有的通信方式和指令格式给订座带来了不便。
只有受过订座指令培训的专业操作员,在专有终端上,才能够自如的与主机进行信息交互。
下面就是传统订座模式图。
图1.1传统订座模式图
1.3旅客姓名记录—PNR
所谓的订妥座位就是生成一个PNR(PassengerNameRecoder,旅客订座记录),并封口使之生效。
旅客本次订座的全部信息都记录在这里。
包括乘客姓名、航段信息(包括起飞城市、到达城市、起飞时间、舱位等级等)、座位数、乘客联系方式、特殊服务要求、是否某航空公司的常旅客、票价信息、航空公司或代理人规定的出票时限等等。
PNR中的信息非常丰富。
旅客修改行程、航班改期、付款、出票、退票等信息都会体现出来。
座位订妥后,如果旅客不立即购票,应告知PNR号和出票时限,超过出票时限,原定座位将不予保留。
1.4订座流程(从查询到出票)
查询需要航班座位可利用情况—>确定订某航班某座位—>付款—>得到机票—>机场登机,如下图:
图1.2订座流程示意图
1.5出票
如果订票人有出票的权限,可以提前取票。
也可以选择在机场取票直接办理登机手续乘机。
航空公司或代理人为了防止有人空耗座位,一般对出票时限有一定要求,一般最迟也要在飞机起飞前2个小时出票。
1.6民航系统的数据表述
要看得懂航班信息、PNR信息首先必须了解以下几个数据表述:
Ø航空公司代码:
由二位英文字母表示,如中国国际航空公司:
“CA”, 德国汉莎航空公司:
“LH”。
在完成客运行为时,也就是承运人两字码。
Ø城市三子码:
出发地、到达地均用城市三子码表述,如:
中国北京:
“PEK”,美国洛杉矶:
“LAX”。
Ø舱位等级:
F――头等舱。
C――公务舱 Y——经济舱(普通舱)。
在票价计算时以经济舱成人全票价为基础票价。
头等舱按基础票价的150%计算,公务舱按基础票价的130%计算。
而普通舱票价包括公布票价(A)和折扣票价(B),YB80,就表示这是一张八折票,按基础票价的80%计算。
Ø航段:
航段是指航线点与点之间的航程,航线的经停点越多,航段就越多,航线由一个或多个航段组成。
Ø经停与转飞:
这是两个不同的概念。
经停发生在一个航段的飞行中,该航段经停多少是根据客货运输的需求和飞机航行能力均定的。
转飞则是不同航段的转换,航班号与航段均发生了变化。
Ø航班号:
国内航班号的编排方式是由航空公司二字代码加上三或四位数字,如MU5143。
航班号编排有规律可循,这里不再详述。
Ø国家两字码:
中华人民共和国“CN”,美国“US”。
Ø币种:
人民币“CNY”,美元“USD”。
1.7注意事项
Ø一个PNR里可以订几个不同航班的座位。
Ø团队订座:
团队订座是相对于散客订座而言的。
团队订座指统一组织的旅客人数在10人以上(含10人),航程、乘机日期和航班相同的旅客订座。
团队PNR在生成的时候必须定义团名。
Ø各航空公司除了一些基本规定之外,有一些特别规定。
比如成人携带儿童、婴儿的规定,最迟出票时间的规定,这些在订票时应该注意。
二、什么是IBE
2.1IBE
IBE(InternetBookingEngine),是由中国航信开发的互联网订座引擎。
它改变了传统的方式下通过使用终端设备来访问主机的模式,提供了基于因特网和开放平台技术访问中国航信传统订座业务的解决方案。
IBE产品在中国航信的电子商务服务器上封装了与主机之间的通讯,再把对主机的操作按照不同功能封装成客户端API发布客户;客户端与航信电子商务服务器使用互联网标准的连接方式,于是客户可以在程序中调用IBE客户端那些简单方法来完成与主机的交互,使航班信息查询与订票的功能轻而易举的展现在自己的网站上。
图2.1订座流程示意图
2.2IBE的特点
IBE提供了API(应用程序接口)方式的接口。
因此:
ØIBE本身不是一个完整的应用系统,它是构成客户商务系统的重要组件;
Ø客户需要在IBE的基础上进行二次开发;
ØIBE提供访问中国航信CRS和ICS系统的API,客户只需关注自身的商业逻辑设计;
Ø基于标准开放的TCP/IP协议,能够运行在多种应用平台上;
Ø主机指令格式的更改不会影响客户端程序的稳定性;
Ø开放的产品,随着用户需求和应用增加其功能将不断完善,并具有很好版本兼容性;
Ø互连简洁,效率高;
Ø使用安全,服务器端具有完备的日志记录与分析功能;
2.3主要功能列表
Ø航班时刻查询
Ø航班座位可利用状况查询
Ø航班经停点查询
Ø运价查询
Ø散客、团队旅客实时订座
Ø实时旅客订座记录查询
Ø散客、团队旅客订座记录修改删除
Ø航班最低运价信息查询
三、您为什么需要
3.1构建自己的商务模式
不管您是代理人、航空公司、或是为代理人提供服务的商家,您可以使用IBE轻松构架您的商务模式,IBE作为连接订座主机的API,提供网上查询航班、订票等服务支持。
您在构建企业商务逻辑时可以充分利用IBE,将它构建到自己的高级组件中去,从而增强企业的各项服务功能。
如图:
图3.1订座流程示意图
3.2方便的开发
Ø本手册的使用指南部分将会指导您顺利开始IBE的使用;
Ø开发中参看javadoc中各个类和方法的详细说明;
Ø开发前期我们将会给与一定程度的使用指导(不包括现场参与开发);
Ø在开发中出现的问题您可以在问题集寻求解决办法;
3.3完备的日志管理
对于用户发来的指令均可以通过IBE日志分析机制查看。
如果出现非法操作,系统将会对操作进行追踪。
这样保证用户的正常使用安全和纠错处理。
3.4确保使用安全
IBE产品完善的安全机制将会保证您的使用安全。
3.4.1身份认证机制
3.4.2安全的传输
IBE产品在中国航信的电子商务服务器上封装了与主机之间的通讯,再把对主机的操作按照不同功能封装成客户端API发布给我们的客户;客户端与航信电子商务服务器使用tcp相连接。
由于IBE独有的编码解码方式使得信息传输中的安全得以保障。
四、使用之前
4.1IBE客户端
IBE分为客户端与服务器端两个部分。
我们把IBE用户用以同IBEServer建立连接,向其发送和接收订座请求的节点计算机称为IBE客户端。
把航信IBEServer称为服务器端。
对于IBE客户端并没有特殊的要求。
4.2IBE客户端的运行环境
Java产品包使用者:
Ø拥有公网(Internet)固定IP;
Ø拥有JDK开发环境;
Com版产品包使用者:
Ø拥有公网(Internet)固定IP;
Ø微软开发平台(windows2000及以上);
4.3IBE客户端的使用前提
Ø要求客户有一定的技术开发能力;
Ø合法的代理人或航空公司身份(如果需要预定功能);
Ø在客户端服务器导入IBE产品包(Java包或.dll文件)。
4.4开发环境部署
如果现有的开发平台是java环境,可以使用我们提供的IBE.JAR,将它部署于应用服务器上,同时把配置文件ibeclient.properties部署到java的ClassPath中。
[注意]确保ibeclient.properties在ClassPath中的唯一性,以免在配置修改时,定位不到正确的文件。
IBE.JAR的结构:
com.travelsky.ibe.client包括了航班查询等常用指令
com.travelsky.ibe.client.pnr包括了PNR预定处理相关的指令
com.travelsky.ibe.exceptions包括了所有的错误信息
com.travelsky.util提供了一些用于支持上述类的公用类
com.travelsky.ibe.client和com.travelsky.ibe.client.pnr是用户最常接触的功能包,下面的两个图将包中的类之间关系加以简要介绍:
图4.2com.travelsky.ibe.client包构成
图4.3com.travelsky.ibe.client.pnr包构成
如果您现有的开发平台是微软开发平台,可以使用我们提供的IBECom.dll。
相应的配置信息保存在Windows的注册表文件中,组织结构类似于上述的IBE.JAR。
五、开发指南
现在可以开始使用IBE来构建您的电子商务平台,下面以Java开发为例进行示范,一步一步使用IBE来实现从查询航班,座位预定,PNR提取的一个基本订票流程。
建议您将本部分和API详细说明(javadoc)结合使用。
查看类的具体定义和使用方法。
5.1AV解惑
下面以AV指令为例,说明IBE的AV函数和终端上的信息是如何对应的,其它的指令如FD,SK和AV的原理相同。
5.1.1AV指令介绍
AV指令,查询航信主机系统内所有航空公司的全舱位实时航班信息,提供简单有效的航班信息实时查询通道,查询指定日期及航线上的可用航班信息(航班号,舱位,起飞到达时间,经停点等),支持多种查询参数,支持对电子客票航段的查询。
5.1.2IBE中AV类
IBE中有关av指令的类共四个:
1.com.travelsky.ibe.client.AV
2.com.travelsky.ibe.client.AvResult
3.com.travelsky.ibe.client.AvItem
4.com.travelsky.ibe.client.AvSegment
AV函数输入:
getAvailability(“PEK”,”XMN”,”2004090500:
00:
00”)
对应主机指令:
AV:
PEKXMN/05SEP04
图5.1AV类返回结果存储示意图
一次AV的结果是一个查询返回结果(AvResult对象),它的结果是所有满足查询条件的航班信息集,每条航班信息对应一个AvItem对象,每一条航班信息可能包含一个或多个航段,因此对应一个或多个AvSegment对象。
在AVResult中的所有的具体航段信息都保存在AVSegment中。
特别提示:
在eTerm查询AV时,如果当天没有查询的城市对航班,会显示离查询日期最近一天的航班信息。
示例:
IBE提供的AV查询也和eTerm查询完全一致。
如果用户查询的日期没有航班信息,会显示离查询日期最近一天的航班信息。
示例:
AVCavExample=newAVC();
try{
AvResultavres=avExample.getAvailability("PEK","CGD",
"2010051200:
00:
00","ALL",true,true);
System.out.println(avres);
}
catch(
Exceptione){
e.printStackTrace();
}
请开发人员注意查询结果的日期信息,以避免把查询结果的日期弄混。
5.1.3获取舱位信息的方法
AVResult中获取舱位信息的方法有两种:
一种是通过输入舱位名称来获取
例如获得F舱的舱位情况,可以用getCangweiinfoOf(‘F’)得到。
另外一种是首先按照舱位等级获得舱位名称,然后再根据舱位名称得到具体的座位数
StringBufferstrtmp=newStringBuffer();
intk=0;
while(k<26){
charcangwei=avseg.getCangweiCodeSort(k);
if(cangwei=='-')
break;
strtmp.append(cangwei);
strtmp.append(avseg.getCangweiinfoOfSort(cangwei));
strtmp.append('');
k++;
}
这样就能够得到等同于终端的输出显示。
5.2AV和FD相结合
为了预定一个座位,首先需要提供三个信息:
出发地,目的地和时间。
这样就能够进行一次航班座位查询即AV操作,在确定航班有座的情况下,可能更关心舱位的价格,主机指令FD可以用来查询航班价格。
我们可以把航班座位查询和舱位价格查询组合在一起,以便获得更加直观的显示结果。
或许您想到的方法是先AV查询一次,然后对AV结果中的每个航班信息,做FD查询价格,这样做每次都要和主机进行交互,效率低下,我们不建议您采用这种方法。
建议作法是对AV的输出结果AVResult进行扩展,在舱位信息中添加一个价格项,再通过一次AV的航班查询和一次FD的全航空公司的FD价格查询把航班和价格信息插入到新定义的结构中。
小技巧:
为了便于查询航班中舱位的价格,可以使用HashTable来保存舱位的价格。
具体方法是HashTable的Key使用航空公司两字码和舱位名联合作索引,价格作为属性,首先在HashTable中查询,没有的话再通过FDResult来查询,同时把查询结果插入到HashTable中。
privateHashtablepriceTable=newHashtable();
//从FDResult中查询价格
Stringkey=airCorp+String.valueOf(cabinName);
if(priceTable.containsKey(key)){
tmpCabin.setSingleprice((String)priceTable.get(key));
}else{
StringsinglePrice=findInFDResult(fdRes,airCorp,String.valueOf(cabinName));
if(singlePrice==null)
tmpCabin.setSingleprice("Unknown");
else{
tmpCabin.setSingleprice(singlePrice);
priceTable.put(key,singlePrice);
}
}
5.3订座指南
5.3.1订座流程图
图5.2订票流程图
如图,预订机票通常的流程是:
1.查询航班可用座位、票价。
2.确定某航段的一个或多个座位。
将该航段加入到新生成PNR中,作为航段组。
3.当前PNR加入姓名组、联系组、出票时限组(这些信息可以从网站数据库已保存用户信息中提取),然后对PNR封口。
注意:
航段组、姓名组、联系组、出票时限组这四个组是构成一个生效的PNR最基本信息,也就是说要想让一个生成PNR进行封口操作使之生效,必须保证包含了这四个组。
对于团队PNR,姓名组中要定义团名、人数。
4.出票时提取该PNR,向其中添加FN、FC、FP组
5.Dz出票
5.3.2SS的使用
使用IBE需要明确的一点是:
所有的函数之间没有相关性,他们之间都是相互独立的。
为了订取航班的座位,只能使用SS命令,而不能使用AV后面跟着SD来订取航段,而后者是使用终端或eterm订票时常用的方法。
SS的使用要求就是需要有(航班号,舱位信息,始发城市,到达城市,行动代码,订票日期),这些信息需要在前一步的AV操作中提取出来,例如在用户选中一个航班的某个舱位后,就应该保存该航班的具体信息,在下面的订票操作中用来填充航段信息。
SellSeatsellseat=newSellSeat();
(方法一)
sellseat.addAirSeg(“CA1301”,‘Y’,“PEK”,”CAN”,”NN”,1,”2004-10-20”)
(方法二)
BookAirSegbairseg=newBookAirSeg(“CA1301”,‘Y’,“PEK”,”CAN”,”NN”,1,”2004-10-20”);
sellseat.addAirSeg(bairseg);
5.3.3PNR封口
一个PNR的最基本信息包括:
姓名组,航段组,联系组,出票时限组,只要生成了这四个必要的组就能够对PNR进行封口,订取了航班上的一个舱位。
所谓封口,就是该PNR正式生效。
sellseat.addAdult(“ZHANG/QIANG”);
sellseat.addContact(“66017755-2509”);
sellseat.setTimelimit(“2004-10-2012:
00:
00”);
Stringpnrno=mit();
5.3.4对于旅客姓名的特殊说明
英文姓名输入时必须使用“/”来分割,并且在整个姓名中只能有一个“/”,在“/”前的部分中的空格全部被忽略,在“/”后的部分中的空格被保留。
英文姓名最长不能超过55个,如果使用电子客票的话,最长不能超过28个。
对于中文姓名和中英文混合姓名的输入,英文必须在中文之后,不能间隔输入。
中文姓名输入建议小于十个汉字。
如名叫“地力不拉提玉素卜江艾力”的旅客就不能完成出票,这些条件都应该在界面上进行限制,以免为后台维护带来麻烦。
此外,如果姓名采用中文,编码方式必须为GBK。
5.3.5假A现象
“假A现象”,是指在查询某些航空公司可利用座位信息时,舱位信息显示有A(即大于10)个座位,但是在PNR封口时出现舱位没有订妥的情况(如何看订妥没有订妥座位请参考下面的章节),这时候建议使用mit1()方法,这个方法除了返回PNR信息还会返回一个航段信息的集合,通过逐一检查每个航段中的行动代码来判断是否订妥座位。
5.4PNR其它组的输入
在PNR中除了输入必要的姓名组,航段组,联系组,设定出票时限之外,还可以输入其它的组信息,为了自动出票,可以输入FN(票价组),FC(票价计算组),FP(付款方式组);为了保证民航安全可以输入SSRFOID(输入身份认证信息);为了能够输入个性化信息(如支付信息)可以使用RMK(特殊服务信息组)。
下面详细讲解一下这些组信息输入时的注意事项:
PNR的内容由各种组构成,主要有:
姓名组、航段组、联系租、出票时限组、票价组、备注组、责任组、签注组等等。
一个组对应了PNR记录中的一行或几行。
其它组说明:
比较常用到的还有:
SSR(特殊服务组)的使用:
乘客的身份证号SSR_FOID
添加常旅客信息SSR_FQTV
添加护照信息SSR_PSPT
OSI(其它信息组)的使用:
重要旅客 VIP
RMK(备注组)的使用:
备注组是用来记录某些可能有助于了解旅客情况的信息。
如果有什么需要说明的文字,可以通过RMK来向订座说明。
使用时注意不得超过三条。
各组具体使用说明见javadoc。
5.5从费改税看FF
机场费改税是指机场建设费从原来在机场缴纳改为由出票人代收,涉及到的技术层面的问题是:
1.找出PNR中每个航段的机型
2.根据机型查询机场建设费的额度
3.将总额度写入到FN,FC项上。
为了得到每个航段的机型,可以通过使用FF指令来查询机型。
FFff=newFF();
FFResultffres=ff.flightTime(“CA1301”,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IBE 用户手册
![提示](https://static.bdocx.com/images/bang_tan.gif)