一种识别回调报文的方法及装置与流程

文档序号:31217427发布日期:2022-08-20 04:49阅读:132来源:国知局
一种识别回调报文的方法及装置与流程

1.本发明属于数据分析领域,尤其涉及一种识别回调报文的方法及装置。


背景技术:

2.一般来说,作为中间商,在处理上游api的回调报文时,需要开发人员针对每个上游的报文都编写对应的handler处理类进行处理,如图1所示,以从回调报文中提取报文中的信息。而一般上游的报文具有多个,这样就需要开发人员对应地频繁编写多个处理类以处理回调报文。这样做会造成以下问题:
3.1.代码重复度高:虽然编写了多个处理类,但其实针对每一个上游回调报文的处理方法区别不大,代码的冗余情况较为严重;
4.2.解析报文开发周期长:不同上游回调的报文格式都不一样,需要开发人员根据不同的上游报文格式进行编码解析;
5.3.回调报文若改动则需要重新修改代码:上游回调报文的结构如果发生改变,需要重启并且修改对应的处理类,影响交易结果的及时同步;
6.4.容错率较低:上游回调报文在解析的过程中,只要参数的位置解析不对,或者加密方式识别错误,都将会导致回调报文的解析错误;
7.5.维护成本高:只要上游回调报文的结构发生改变,就需要修改代码并且每个节点都要发布重启,导致维护成本增加。


技术实现要素:

8.鉴于以上所述现有技术的缺点,本发明的目的在于提供一种代码精简、开发便捷灵活、容错率高、维护成本低的回调报文的识别方法和装置。
9.本专利方案提供一种识别回调报文的方法,包括:
10.当检测到目标程序被触发时,接收上游回调报文;
11.确认成功接收所述上游回调报文后,使用解析算法解析所述上游回调报文以获取报文信息;
12.若确认获取报文信息成功,则将所述报文信息加入到上游回调队列;
13.若无法获取所述报文信息,则采用对应的处理类获取所述报文信息并加入所述上游回调队列;
14.所述报文信息加入到所述上游回调队列后,从所述上游回调队列中获取所述报文信息写入到数据库或进行回调下游。
15.进一步地,所述的确认成功接收所述上游回调报文后,使用解析算法解析所述上游回调报文以获取报文信息,包括:
16.确认成功接收所述上游回调报文后,判断所述上游回调报文的报文类型;
17.得到所述报文类型后,根据所述报文类型选择对应的所述解析算法;
18.选取对应的所述解析算法后,使用所述解析算法解析所述上游回调报文,获取报
文信息。
19.进一步地,所述报文类型包括json、xml。
20.进一步地,所述的判断所述上游回调报文的报文类型,包括:通过识别所述上游回调报文首尾的关键字以判断所述上游回调报文的报文类型。
21.进一步地,所述解析算法包括:根据预设的关键字段获取所述上游回调报文中的报文信息。
22.进一步地,所述关键字段能够通过图形界面进行预先设置。
23.进一步地,所述上游回调队列为消息队列。
24.还提供一种识别回调报文的装置,包括:
25.接收单元,用于当检测到目标程序被触发时,接收上游回调报文;
26.解析单元,用于确认成功接收所述上游回调报文后,使用解析算法解析所述上游回调报文以获取报文信息;
27.接入队列单元,用于若确认获取报文信息成功,则将所述报文信息加入到上游回调队列;
28.异常处理单元,用于若无法获取所述报文信息,则采用对应的处理类获取所述报文信息并加入所述上游回调队列;
29.消息处理单元,用于所述报文信息加入到所述上游回调队列后,从所述上游回调队列中获取所述报文信息写入到数据库或进行回调下游。
30.进一步地,所述解析算法包括:根据预设的关键字段获取所述上游回调报文中的报文信息。
31.进一步地,所述关键字段能够通过图形界面进行预先设置。
32.本专利的改进带来如下优点:
33.(1)本技术实施例一种识别回调报文的方法,采用该方法编写的代码相比现有技术中识别回调报文的代码更加简练,代码冗余度低,开发周期短、对报文的解析速度快。
34.(2)采用该方法编写的代码配置后马上可用,无须重启服务器,维护成本低。
35.(3)所见即所得的配置方式,极大减少出错概率。
36.(4)采用该方法编写的代码与系统的耦合度低,不需要依赖第三方回调报文格式进行硬编码,扩展容易。
附图说明
37.图1为本技术实施例可以实现回调报文动态识别的一种可选系统架构示意图。
38.图2为本技术实施例一种识别回调报文的方法的流程示意图。
39.图3为本技术实施例一种识别回调报文的装置的结构示意图。
40.图4与图5分别为两种关键字段配置窗口的示意图。
具体实施方式
41.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离
本发明的精神下进行各种修饰或改变。
42.图1为本技术实施例提供的可以实现回调报文动态识别的一种可选系统架构,该系统架构包括上游api、目标程序、下游或数据库。
43.其中,上游api提供上游回调报文;目标程序用于动态识别该上游回调报文,并从中提取报文信息提供给下游或数据库;下游可以进行回调下游,继续利用报文信息,数据库可以记录报文信息。
44.本技术所要实现的即是:上游回调报文的报文结构比较统一,大多数都由请求参数、请求头、加密方式、请求响应组成。而本技术将大多数上游api的回调报文的对接规律找出来,通过内部的处理程序进行解析、匹配,就可以实现快速解析上游回调报文,实现对上游回调报文的快速解析。
45.接下来,从目标程序的角度,对本技术的识别回调报文的方法进行详细介绍,如图2所示,图2示出了该方法的流程图,包括以下步骤:
46.s100,当检测到目标程序被触发时,接收上游回调报文;
47.s200,确认成功接收上游回调报文后,使用解析算法解析上游回调报文以获取报文信息;
48.s300,若确认获取报文信息成功,则将报文信息加入到上游回调队列;
49.s400,若无法获取报文信息,则采用对应的处理类获取报文信息并加入上游回调队列;
50.具体的,如果通过解析算法无法处理该上游回调报文,则通过编写与该上游回调报文对应的处理类对其进行解析。
51.s500,报文信息加入到上游回调队列后,从上游回调队列中获取报文信息写入到数据库或进行回调下游。
52.具体的,上游回调队列为消息队列。
53.采用上述方法处理上游回调报文,不需要像现有技术那样为每个上游都编写一个handler处理类,只需要对上游回调报文的格式与结构作出分析,选择合适的解析算法即可对多个上游的回调报文进行处理。代码简练、冗余度低,有助于提升对报文的解析速度。而且采用该方法编写的代码配置后马上可用,无须重启服务器,维护成本低。代码与系统的耦合度低,有助于提高系统的稳定性,且不需要依赖第三方回调报文格式进行硬编码,扩展容易且高效。
54.作为一个实施例,步骤s200包括以下分步骤:
55.s201,确认成功接收上游回调报文后,判断上游回调报文的报文类型。
56.具体的,报文类型可以包括json、xml或其他报文类型,而且通过识别所述上游回调报文首尾的关键字以判断所述上游回调报文的报文类型。
57.s202,得到报文类型后,根据报文类型选择对应的解析算法。
58.s203,选取对应的解析算法后,使用解析算法解析上游回调报文,获取报文信息。
59.先识别上游回调报文的类型再选择对应的解析算法,可以提高识别的速度,减少出错的概率。
60.作为一个实施例,解析算法包括:根据预设的关键字段获取上游回调报文中的报文信息。本实施通过预设关键字段,进而从报文中识别与关键字段对应的关键字的方式识
别上游回调报文,可以规避现有技术中一旦报文结构发生变动而无法识别的风险。只要相应的关键字仍在上游回调报文中,即根据预设的关键字段逐个识别报文中的报文信息,报文结构的改变基本不会影响对报文信息的识别。即便上游回调报文中的关键字发生了变化,本实施例也只需要相对应地调整变化的关键字即可,无需更改代码,不需要发布重启。而且,对上游回调报文的解析速度快,只须简单学习语义即可解析上游回调报文。比如,以前编写处理多个上游回调报文的多个处理类需要4个小时,采用本方法只须30min左右即可编写完成目标程序,即可对多个上游回调报文进行处理。
61.作为进一步改进,关键字段可以通过图形界面进行预先设置,如图4、5所示。通过可视化的方式(图形界面),将关键字段设置为可以编辑设置的关键字段配置窗口,呈现在使用者面前,在需要改动预设的关键字段时,使用者可以很方便在该关键字段配置窗口对关键字段进行设置。这样的话,即便上游回调报文上某些与关键字段对应的关键字发生改变,使用者也可以根据这种改变方便快捷地将改变后的关键字输入到关键字段配置窗口中,作为预设的关键字段,以便识别上游回调报文中相应的关键字,提取报文信息,可以减少识别出错的概率。
62.作为一个实施例,如图3所示,一种识别回调报文的装置,包括:
63.接收单元100,用于当检测到目标程序被触发时,接收上游回调报文;
64.解析单元200,用于确认成功接收上游回调报文后,使用解析算法解析上游回调报文以获取报文信息;
65.接入队列单元300,用于若确认获取报文信息成功,则将报文信息加入到上游回调队列;
66.异常处理单元400,用于若无法获取报文信息,则采用对应的处理类获取报文信息并加入上游回调队列;
67.消息处理单元500,用于报文信息加入到上游回调队列后,从上游回调队列中获取报文信息写入到数据库或进行回调下游。
68.作为一个具体的示例,以下结合识别回调报文的装置对上述方法进行进一步的详细说明,包括:
69.1.上游api发送上游回调报文触发目标程序,接收单元接收上游回调报文。
70.2.解析单元根据上游回调报文的json、xml、或者其他类型报文进行解析。具体是将其中的关键字,例如流水号、上游订单状态、上游订单状态描述、上游订单返回状态值等,利用解析算法进行解析。以下分别讲述json与xml两种报文类型的解析方法。
71.2.1json类型的上游回调报文示例如下:
[0072][0073]
具体的,解析单元识别当前上游回调报文的首、尾中含有{}字符,即可判断其为json报文类型。然后根据已经配置好的关键字段,如:message、orderstate、orderno等,利用java占位符或content函数解析报文内容,然后获取上游回调报文中对应的状态描述、成功状态值、流水号等关键字的值信息。例如,与关键字段“message”对应的上游回调报文中的关键字为“message”。根据关键字段找到对应的关键字后,提取关键字的值,例如关键字“message”的值为“充值成功”。其中关键字段配置窗口如图4所示,包括流水号(orderno)、状态(orderstate)、状态描述(message)以及成功状态值(0000)。
[0074]
2.2xml类型的上游回调报文示例如下:
[0075][0076][0077]
具体的,解析单元识别当前返回报文头含有《?xml字符,即可判断为xml报文类型。然后根据已经配置好的关键字段,如sp_order_id、sp_deal_status、msg等,利用java的content函数解析报文内容,然后获取对应的流水号、状态、状态描述等关键字的值信息。例如,与关键字段“msg”对应的上游回调报文中的关键字为“msg”。根据关键字段找到对应的关键字后,提取关键字的值,例如关键字“msg”的值为“成功”。其中关键字段配置窗口如图5所示,流水号:sp_order_id、状态:sp_deal_status、状态描述:msg。
[0078]
3.获取上述的流水号、上游订单状态、上游订单状态描述、上游订单返回状态值等关键字与关键字的值后,将这些信息包装为报文信息,提供给下一步操作。
[0079]
4.根据报文信息更新系统中的订单状态,将对应的订单状态描述添加到订单信息中。并根据上游订单的返回的状态值,进一步校验真实的订单状态,并对上游回调进行响应。
[0080]
5.由于部分上游需要批量提单操作,因此会大批量返回订单信息,因此需要将上游回调报文处理后,塞入回调队列中,进行削峰,减缓数据库io压力,也便于统一上游回调入口。
[0081]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1