CN108564424B - 一种减少查询交易信息出错的方法及支付交易系统 - Google Patents
一种减少查询交易信息出错的方法及支付交易系统 Download PDFInfo
- Publication number
- CN108564424B CN108564424B CN201810008793.XA CN201810008793A CN108564424B CN 108564424 B CN108564424 B CN 108564424B CN 201810008793 A CN201810008793 A CN 201810008793A CN 108564424 B CN108564424 B CN 108564424B
- Authority
- CN
- China
- Prior art keywords
- transaction
- order
- server
- processing thread
- query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明提供了一种减少查询交易信息出错的方法及支付交易系统,应用于订单交易系统中,当服务端获取一交易订单查询请求时,服务端采用第二处理线程查询得到订单表中同笔订单的上次调用的调用时间;第二处理线程根据查询得到的调用时间以及服务端当前的时间,生成一线程等待时间;当第二处理线程计时达到线程等待时间后,第二处理线程调用交易查询接口以获取与交易订单对应的表示交易结果的第二查询结果;服务端将第二查询结果反馈至客户端。其技术方案的有益效果在于,通过在两个线程之间设置线程等待时间,不会对订单生成单元的交易查询接口造成频繁调用。
Description
技术领域
本发明涉及订单交易系统的技术领域,尤其涉及一种减少查询交易信息出错的方法及支付交易系统。
背景技术
随着电子信息的不断发展,在线交易即通过互联网完成的交易与日俱增,现在几乎所有物品均可在互联网上交易,其交易主要凭借虚拟货币完成各种实体物品、信息服务、虚拟产品的购买。
现有的交易系统通常包括客户端以及第三方的服务端,客户端主要发送交易请求至服务端,服务端则将交易请求发送至第三方服务端生成对应的订单处理结果,然后服务端通过调用第三方服务端中的相关接口以获取关于交易订单处理的查询结果,但是现有的交易系统中服务端在调用第三方服务端的相关接口获取查询结果时,存在频繁调用的问题,而第三方服务端为了防止服务端通常会设置相关的访问间隔以控制服务端的查询请求,如此便可能造成服务端获取的查询结果出错,返回的查询结果不能真实反映订交易订单的处理信息,给使用者造成不便。
发明内容
针对现有技术中交易系统存在服务端调用订单查询接口获得关于订单交易的查询结果存在的上述问题,现提供一种旨在两个线程之间设置线程等待时间,进而可以保证客户端的线程调用交易查询接口从服务端准确获取关于交易订单对应的查询结果的方法及支付交易系统。
具体技术方案如下:
一种减少查询交易信息出错的方法,应用于订单交易系统中,所述订单交易系统包括服务端、与所述服务端连接的订单生成单元以及客户端,其特征在于,
所述订单生成单元提供一交易查询接口;
所述客户端用以发送一交易请求至所述服务端,所述服务端提供所述交易请求至所述订单生成单元,以供所述订单生成单元创建一交易订单;
于所述服务端内设置一第一处理线程,所述第一处理线程用于调用所述交易查询接口获取所述交易订单的表示交易结果的第一查询结果并更新至一订单表中,所述第一处理线程每次调用所述交易查询接口的时间被作为调用时间并记录在所述订单表中;
于所述服务端内还设置一第二处理线程,所述第二处理线程用于查询所述订单表或者调用所述交易查询接口获取所述交易订单的交易结果;
还包括以下步骤:
步骤S1、当所述服务端获取一交易订单查询请求时,所述服务端采用所述第二处理线程查询得到所述订单表中同笔订单的上次调用的所述调用时间;
步骤S2、所述第二处理线程查询得到的所述调用时间以及所述服务端当前的时间,生成一线程等待时间;
步骤S3、当所述第二处理线程计时达到所述线程等待时间后,所述第二处理线程调用所述交易查询接口以获取与所述交易订单对应的表示交易结果的第二查询结果;
步骤S4,所述服务端将所述第二查询结果反馈至所述客户端。
优选的,所述订单生成单元还提供一交易对象发放接口,于创建所述交易订单之后,所述服务端启动所述第一处理线程调用所述交易对象发放接口,以获取所述交易订单对应的交易对象的交易状态信息;
所述第一处理线程于获取所述交易对象的交易状态信息之后,调用所述交易查询接口获取所述交易订单的所述第一查询结果。
优选的,所述服务端于接收所述客户端发送的所述交易请求后,于所述交易表中创建一与所述交易请求对应的订单记录。
优选的,所述第一处理线程将每次调用所述交易查询接口的时间作为所述调用时间并保存至对应的所述订单记录中。
优选的,所述第一查询结果表示的所述交易订单的所述交易结果包括,交易完成以及交易失败的两种状态;
当所述服务端已经根据用于表示所述交易订单交易完成的所述第一查询结果更新所述订单表后,所述第二处理线程根据所述客户端发送的所述订单查询请求直接查询所述订单表中对应的所述交易订单的所述交易结果并反馈至所述客户端。
优选的,所述第一处理线程于接收的所述第一查询结果并更新至所述订单表中后,所述第二处理线程处理过程还包括以下步骤:
步骤A1、判断所述交易订单的订单状态是否为交易完成的状态;
若是,交易完成,退出,所述退出表示所述服务端已获得所述交易订单的所有信息,后续查询当前的所述交易订单无需调用所述订单生成单元的交易查询接口;
步骤A2、所述第二处理线程调用所述交易查询接口以获取与所述交易订单对应的第二查询结果;
步骤A3、所述第二处理线程将所述第二查询结果更新至所述交易表中。
优选的,所述服务端如果查询得到的所述订单调用时间为空,则表示此次为第一次调用,所述线程等待时间设置为0。上述技术方案具有如下优点或有益效果:通过在两个线程之间设置线程等待时间,即第一处理线程和第二处理线程在调用交易查询接口时,不会对订单生成单元的交易查询接口造成频繁调用,进而服务端可以准确的从订单生成单元获取关于交易订单的查询结果。
附图说明
参考所附附图,以更加充分的描述本发明的实施例。然而,所附附图仅用于说明和阐述,并不构成对本发明范围的限制。
图1为本发明一种减少查询交易信息出错的方法实施例的流程图;
图2为本发明一种减少查询交易信息出错的方法实施例中,关于第二处理线程执行操作的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
本发明的技术方案中包括一种减少查询交易信息出错的方法。
一种减少查询交易信息出错的方法,应用于订单交易系统中,订单交易系统包括服务端、与服务端连接的订单生成单元以及客户端,其中,
订单生成单元提供一交易查询接口;
客户端用以发送一交易请求至服务端,服务端提供交易请求至订单生成单元,以供订单生成单元创建一交易订单;
于服务端内设置一第一处理线程,第一处理线程用于调用交易查询接口获取交易订单的表示交易结果的第一查询结果并更新至一订单表中,第一处理线程每次调用交易查询接口的时间被作为调用时间并记录在订单表中;
于服务端内还设置一第二处理线程,第二处理线程用于查询订单表或者调用交易查询接口获取交易订单的交易结果;
如图1所示,还包括以下步骤:
步骤S1、当服务端获取一交易订单查询请求时,服务端采用第二处理线程查询得到订单表中同笔订单的上次调用的调用时间;
步骤S2、第二处理线程根据查询得到的调用时间以及服务端当前的时间,生成一线程等待时间;
步骤S3、当第二处理线程计时达到线程等待时间后,第二处理线程调用交易查询接口以获取与交易订单对应的表示交易结果的第二查询结果;
步骤S4,服务端将第二查询结果反馈至客户端。
针对现有技术中,服务端的线程从第三方服务端获取查询结果时,会在较短的时间之间频繁的调用交易查询接口,造成返回至服务端中的查询结果出错,因为第三方服务端通常会对设置相关的访问间隔以控制服务端的查询请求,避免服务端的恶意攻击,此时第三方服务端检测到服务端的查询请求时间间隔短且频繁时,第三方服务端会启动拦截功能即返回一错误信息至服务端,此时服务端则无法正确接收第三方服务端返回的与交易订单对应的查询结果。
本发明中,则在两个处理线程之间设置线程等待时间,即在第一处理线程和第二处理线程调用交易查询接口之间设置线程等待时间,这样便可以使每个线程从服务端调用对应的查询结果,而不会造成线程对交易查询接口被频繁调用,避免现从第三方服务端返回错误信息,影响使用者的使用体验的问题;
其中,需要说明的是,订单生成单元可配置于服务端内,或者作为第三方服务端的方式存在。
在一种较优的实施方式中,订单生成单元还提供一交易对象发放接口,于创建交易订单之后,服务端启动第一处理线程调用交易对象发放接口,以获取交易订单对应的交易对象的交易状态信息;
第一处理线程于获取交易对象的交易状态信息之后,调用交易查询接口获取交易订单的第一查询结果。
上述技术方案中,交易对象的交易状态信息包括,交易对象发放成功,发放失败或者正在发放的三种状态。
在一种较优的实施方式中,服务端于接收客户端发送的交易请求后,于交易表中创建一与交易请求对应的订单记录。
在一种较优的实施方式中,第一处理线程将每次调用交易查询接口的时间作为调用时间并保存至对应的订单记录中。
上述技术方案中,当返回至服务端中的交易对象的交易状态信息为交易对象发放成功时,第一处理线程调用交易查询接口获取第一查询结果,其中第一查询结果中包含交易对象的实体信息,例如交易对象为卡券时,则查询结果中包含卡券兑换码信息等;
在查询结果中包含一对象的实体信息后,将交易订单信息的交易状态设置为交易完成状态。
在一种较优的实施方式中,第一查询结果表示的交易订单的交易结果包括,交易完成以及交易失败的两种状态;
当服务端已经根据用于表示交易订单交易完成的第一查询结果更新订单表后,第二处理线程根据客户端发送的订单查询请求直接查询订单表中对应的交易订单的交易结果并反馈至客户端。
在一种较优的实施方式中,如图2所示,第一处理线程于接收的第一查询结果并更新至订单表中后,第二处理线程处理过程还包括以下步骤:
步骤A1、判断交易订单的订单状态是否为交易完成的状态;
若是,交易完成,退出,此退出表示服务端已获得交易订单的所有信息,后续查询当前的交易订单无需调用订单生成单元的交易查询接口;
步骤A2、第二处理线程调用交易查询接口以获取与交易订单对应的第二查询结果;
步骤A3、第二处理线程将第二查询结果更新至交易表中。
上述技术方案中,通常状态在服务端的第一处理线程在完成其线程对应的步骤之后,接收到第三方服务端订单生成单元发送的交易状态信息(异步通知信息)之后启动第二处理线程执行上述步骤A1-A2的步骤;
但是现有的第一处理线程未完整执行其对应的流程时,例如第一处理线程刚好调用交易查询接口,还未执行等待接收返回的第一查询结果时;
服务端接收到异步通知信息启动第二处理线程,第二处理线程立刻执行步骤A2,调用交易查询接口,如此便造成了第一处理线程和第二处理线程之间的等待时间极短,调用交易查询接口非常频繁,此时的第三方服务端则会存在返回结果出错的问题;
基于上述问题本发明的技术方案则在两个处理线程之间设置线程等待时间,即在第一处理线程和第二处理线程调用交易查询接口之间设置等待时间,这样便可以使每个线程从第三方服务端调用对应的查询结果,而不会造成线程对交易查询接口被频繁调用。
在一种较优的实施方式中,服务端如果查询得到的订单调用时间为空,则表示此次为第一次调用,线程等待时间设置为0。
上述技术方案中,线程等待时间的计算公式如下:
线程等待时间=调用时间-所述服务端当前时间+所述第三方服务端允许的最小访问间隔,如果调用时间为空,或者计算公式的结果为负数,线程等待时间为0。
本发明的技术方案中还包括一种支付交易系统。
一种支付交易系统,其中,支付交易系统包括服务端、与服务端连接的订单生成单元以及客户端。
以下以一种具体实施方式进行说明,服务端接收客户端发送的交易请求并提供至订单生成单元,订单生成单元创建一与交易请求对应的交易订单,服务端中的第一处理线程调用第三方服务端的交易对象发放接口,以获取交易订单对应的交易对象的交易状态信息,例如交易对象为卡券,则第三方服务端返回的交易状态信息为卡券是否发送成功或者卡券正在发放中;
通常状态服务端的第一处理线程会继续执行调用交易查询接口,获取第一查询结果,以及根据第一查询结果(如第一查询结果返回的是交易对象的实体信息如卡券兑换码信息)对将交易订单信息的交易状态设置为交易完成状态;
但是会存在以下问题,服务端接收到异步通知信息启动第二处理线程,第二处理线程立刻调用交易查询接口,如此便造成了第一处理线程和第二处理线程之间的等待时间极短,调用交易查询接口非常频繁,此时的订单生成单元则会存在返回结果出错的问题,本发明中在两个线程之间设置线程待时间,使得第二处理线程等待第一处理线程完成相关的操作之后,第二处理线程才执行其对应的调用交易查询接口的操作,如此便可以避免服务端中的处理线程调用交易查询接口频繁造成查询出错的问题。
以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
Claims (7)
1.一种减少查询交易信息出错的方法,应用于订单交易系统中,所述订单交易系统包括服务端、与所述服务端连接的订单生成单元以及客户端,其特征在于,
所述订单生成单元提供一交易查询接口;
所述客户端用以发送一交易请求至所述服务端,所述服务端提供所述交易请求至所述订单生成单元,以供所述订单生成单元创建一交易订单;
于所述服务端内设置一第一处理线程,所述第一处理线程用于调用所述交易查询接口获取所述交易订单的表示交易结果的第一查询结果并更新至一订单表中,所述第一处理线程每次调用所述交易查询接口的时间被作为调用时间并记录在所述订单表中;
于所述服务端内还设置一第二处理线程,所述第二处理线程用于查询所述订单表或者调用所述交易查询接口获取所述交易订单的交易结果;
还包括以下步骤:
步骤S1、当所述服务端获取一交易订单查询请求时,所述服务端采用所述第二处理线程查询得到所述订单表中同笔订单的上次调用的所述调用时间;
步骤S2、所述第二处理线程根据查询得到的所述调用时间以及所述服务端当前的时间,生成一线程等待时间;
步骤S3、当所述第二处理线程计时达到所述线程等待时间后,所述第二处理线程调用所述交易查询接口以获取与所述交易订单对应的表示交易结果的第二查询结果;
步骤S4,所述服务端将所述第二查询结果反馈至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述订单生成单元还提供一交易对象发放接口,于创建所述交易订单之后,所述服务端启动所述第一处理线程调用所述交易对象发放接口,以获取所述交易订单对应的交易对象的交易状态信息;
所述第一处理线程于获取所述交易对象的交易状态信息之后,调用所述交易查询接口获取所述交易订单的所述第一查询结果。
3.根据权利要求1所述的方法,其特征在于,所述服务端于接收所述客户端发送的所述交易请求后,于一交易表中创建一与所述交易请求对应的订单记录。
4.根据权利要求1所述的方法,其特征在于,所述第一查询结果表示的所述交易订单的所述交易结果包括,交易完成以及交易失败的两种状态;
当所述服务端已经根据用于表示所述交易订单交易完成的所述第一查询结果更新所述订单表后,所述第二处理线程根据所述客户端发送的所述订单查询请求直接查询所述订单表中对应的所述交易订单的所述交易结果并反馈至所述客户端。
5.根据权利要求1所述的方法,其特征在于,所述第一处理线程于接收的所述第一查询结果并更新至所述订单表中后,所述第二处理线程处理过程还包括以下步骤:
步骤A1、判断所述交易订单的订单状态是否为交易完成的状态;
若是,交易完成,退出,所述退出表示所述服务端已获得所述交易订单的所有信息,后续查询当前的所述交易订单无需调用所述订单生成单元的交易查询接口;
步骤A2、所述第二处理线程调用所述交易查询接口以获取与所述交易订单对应的第二查询结果;
步骤A3、所述第二处理线程将所述第二查询结果更新至所述交易表中。
6.根据权利要求1所述的方法,其特征在于,所述服务端如果查询得到的所述订单调用时间为空,则表示此次为第一次调用,所述线程等待时间设置为0。
7.一种支付交易系统,包括服务端、与所述服务端连接的订单生成单元以及客户端,其特征在于,适用于权利要求1-6中任一所述的减少查询交易信息出错的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810008793.XA CN108564424B (zh) | 2018-01-04 | 2018-01-04 | 一种减少查询交易信息出错的方法及支付交易系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810008793.XA CN108564424B (zh) | 2018-01-04 | 2018-01-04 | 一种减少查询交易信息出错的方法及支付交易系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108564424A CN108564424A (zh) | 2018-09-21 |
CN108564424B true CN108564424B (zh) | 2021-11-30 |
Family
ID=63529561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810008793.XA Active CN108564424B (zh) | 2018-01-04 | 2018-01-04 | 一种减少查询交易信息出错的方法及支付交易系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108564424B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828826B (zh) * | 2019-01-10 | 2021-11-09 | 新华三云计算技术有限公司 | 一种任务进度的轮询方法、装置及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095775A (zh) * | 2016-05-24 | 2016-11-09 | 中国银行股份有限公司 | 一种实现数据查询或导出的方法及系统 |
CN106204043A (zh) * | 2016-07-22 | 2016-12-07 | 上海瀚之友信息技术服务有限公司 | 一种支付管理系统及方法 |
CN106599310A (zh) * | 2016-12-29 | 2017-04-26 | 中国建设银行股份有限公司 | 基于多数据源场景的并发查询方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8401952B1 (en) * | 2009-03-24 | 2013-03-19 | Trading Technologies International, Inc. | Trade order submission for electronic trading |
CN104021489A (zh) * | 2013-09-17 | 2014-09-03 | 宁波公众信息产业有限公司 | 一种电子交易系统结构 |
CN104463611B (zh) * | 2015-01-07 | 2018-01-19 | 上海瀚银信息技术有限公司 | 代理商管理系统 |
-
2018
- 2018-01-04 CN CN201810008793.XA patent/CN108564424B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095775A (zh) * | 2016-05-24 | 2016-11-09 | 中国银行股份有限公司 | 一种实现数据查询或导出的方法及系统 |
CN106204043A (zh) * | 2016-07-22 | 2016-12-07 | 上海瀚之友信息技术服务有限公司 | 一种支付管理系统及方法 |
CN106599310A (zh) * | 2016-12-29 | 2017-04-26 | 中国建设银行股份有限公司 | 基于多数据源场景的并发查询方法和装置 |
Non-Patent Citations (2)
Title |
---|
"mysql线程等待时间,解决sleep进程过多的办法";蜗牛的嘲讽;《https://blog.51cto.com/imork/1876495》;20161125;第1-4页 * |
"大型电商网站服务系统关键改进的研究和实现";罗文韬;《中国优秀博硕士学位论文全文数据库(硕士)-信息科技辑》;20161015;第I139-45页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108564424A (zh) | 2018-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020082892A1 (zh) | 基于区块链的交易处理方法及装置、电子设备 | |
WO2020082893A1 (zh) | 基于区块链的交易处理方法及装置、电子设备 | |
US11250395B2 (en) | Blockchain-based transaction processing methods and apparatuses and electronic devices | |
CN110163755B (zh) | 基于区块链的数据压缩、查询方法及装置和电子设备 | |
WO2020000720A1 (zh) | 服务器、报文处理方法、程序和计算机可读存储介质 | |
CN107133788B (zh) | 一种退款处理方法及装置 | |
CN109491765B (zh) | 对跨域业务请求的处理方法及装置 | |
US20140156785A1 (en) | Method and Apparatus for Generating User Notifications | |
CN108564424B (zh) | 一种减少查询交易信息出错的方法及支付交易系统 | |
CN113112344B (zh) | 业务处理方法、设备、存储介质及计算机程序产品 | |
CN111127088A (zh) | 实现最终一致性的方法、装置、计算机设备及存储介质 | |
CN107220818B (zh) | 网上支付方法及装置 | |
CN110233843B (zh) | 一种用户请求的处理方法及装置 | |
CN116846980A (zh) | 一种积分发放和使用方法、系统及设备 | |
CN112612807B (zh) | 分布式事务数据一致性系统设计方法 | |
CN114925077A (zh) | 一种交易状态查询方法及装置 | |
CN114155047A (zh) | 一种基于SaaS平台的高并发异步发送电子优惠券的方法 | |
CN109347940B (zh) | 处理跨域业务请求及对跨域业务的请求方法和装置 | |
CN113706133A (zh) | 资源补充方法、装置、服务器及存储介质 | |
CN111367694A (zh) | 事件处理方法、服务器及计算机存储介质 | |
CN111708617A (zh) | 事务处理方法、装置、设备及计算机可读存储介质 | |
CN113595870B (zh) | 推送消息的处理方法、装置、电子设备及存储介质 | |
CN114971163B (zh) | 重新发起业务请求的执行方法及执行装置 | |
CN106330945B (zh) | 数字证书同步方法、数字签名服务器及数字证书同步系统 | |
CN114357084A (zh) | 分布式系统的数据处理方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |