51book机票总结

    奋斗了半个多月我这个菜鸟终于把公司机票给上线了。下面对我在这次开发过程中遇到的问题做一下总结。51book最主要的是你要把接口调通,通了以后就对反馈回来的xml形式的数据进行解析,然后取到你要的数据
1.航班查询[AV3]
   1.1 这个接口,这个接口将平台反馈回来的xml信息进行解析后,要考虑的情况比较多,对应着航班和seatItems(舱位信息)。这个要考虑到,我展现的方式是将读取的数据拼成一个DataTable因为是初学菜鸟,这个地方自己做一下总结:
        DataTable dt = new DataTable();  //构建表格
        DataColumn dc1 = new DataColumn("depTime", Type.GetType("System.String"));//构建对应
列和所需类型
        dt.Columns.Add(dc1);//在表格中添加构建的列
        DataRow dr = dt.NewRow();//构建表格中的行
        dr["depTime"] = depTime.ToString();//将对应数据存入到构建的表中
然后转成json前端进行读取
1.2 还有一点就是51平台反馈回来的起飞时间是2000这样的我采用的是.tostring().Insert(2,":")这种方式改成 20:00的 在第二个字段的位置添加“:”这个字符。
1.3 同时接口反馈回来的城市都是三字码的形式,机场,航司都是不一样的,我用的是List集合进行判断然后存入到表中

2.根据旅客信息创建PNR及订单[CO1]
  2.1 创建订单这个接口需要注意的地方就是linkMan(订票联系人)的电话和linkPhone(联系电话)这两个电话不能相同,如果相同会下单失败。
  2.2 notifiedUrl 被通知的url地址 出票成功后会回调这个地址 他会返回订单号(平台内部单号)、票号每一个乘客都会有一个票号,每个票号之间用“,”分隔因为我就用了这两个参数,具体需要的参数需要到需求文档上看一下
 2.3 paymentReturnUrl 支付完成后返回的url地址 支付完成后会回调这个地址 
 2.4 对于多乘客下单只需要将乘客的集合循环多次就行,然后拼接到你构造的请求的xml中,共有部分不变,这个只是拼接passengers这个集合的,有多少个人就对应多少个passengers例子:
    for (int i = 0; i < nameArrylist.Length; i++)
            {
                soap2 += " <passengers><identityNo>" + identityNoArrylist[i] +    
"</identityNo><identityType>" + identityTypeArrylist[i] + "</identityType><name>" +    
nameArrylist[i] + "</name><type>" + typeArrylist[i] + "</type> <param1>" + param1Arrylist[i]
+ "</param1> </passengers>";
            }
   2.5 对于往返这种情况,是用两个单程拼接出来的

3、订单自动支付[PA1]
   3.1 订单支付这个我们采取的是自动支付,支付宝账号绑定到51平台然后实现自动扣费,怎么绑定的话可以询问相关的客服,支付以后会回调我们在创建订单的时候那个地方的支付回调
   3.2 出票的话可以让客服把账号调到测试组里进行检验出票,出票的时候回出现票号,我在2.2中解释过,据type类型来判断出票状态,还有就是出票完成后 一定要请求返回S,否则会请求多次,因为当初没注意的时候,给我发了多次短信提醒 ,我采用的方法是ajax里面直接 Response.Write("S");
4、订单退废票申请[RC1]
  4.1 退废票的话refundTicketList(退款参数)的拼接其实和下单的时候乘客集合的拼接是一样的,例:
        string soap2=null;
               for (int i = 0; i < ticketNos.Length; i++)
                       {
                           if (passName.Length == 1)
                           {

                               soap2 += "<refundTicketList> <passengerName>" + passName[0] +
"</passengerName><ticketNo>" + ticketNos[i] + "</ticketNo><segment>" + segmentArrylist[j] +
"</segment></refundTicketList>";
                           }
                           else
                           {
                               soap2 += "<refundTicketList> <passengerName>" + passName[i] +
"</passengerName><ticketNo>" + ticketNos[i] + "</ticketNo><segment>" + segmentArrylist[j] +
"</segment></refundTicketList>";
                           }
                       }
4.2 refundNotifiedUrl(退票通知地址)这个和出票通知地址、支付通知地址调用方法是一样的,可以根据type类型来判断退票状态,还有就是退票完成后 一定要请求返回S,否则会请求多次,因为当初没注意的时候,给我发了多次短信提醒 ,我采用的方法是ajax里面直接 Response.Write("S");

 好了,我把我在做机票的时候遇到的问题差不多都总结了一下,希望大佬们可以指出其中的不足。欢迎各位留言。
    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值