发送支付消息的方法和聚合支付平台与流程

文档序号:14445346阅读:650来源:国知局
发送支付消息的方法和聚合支付平台与流程

本发明涉及电子支付领域,尤其涉及一种发送支付消息的方法和装置。



背景技术:

随着互联网技术的飞速发展,越来越多的企业选择接入第三方支付公司(支付宝、微信、银联等)提供的接口,给客户提供简单、方便的支付方式。在支付的过程中,虽然第三支付平台会重复给用户发送异步通知,但往往时间比较短,比如微信,最长异步通知会在3小时之后再发。若此时商户服务器还没有恢复,则会丢失异步通知,也就无法知道订单是否真实支付。

而对于广大的中小型企业来说,由于人力和财力的不足,选择接入第三方支付公司提供的接口反而会是自身业务发展的一大瓶颈。而聚合支付服务能降低支付方面的集成难度和接入时间,让这些公司有更多的时间和精力投入到自身产品研发之中。



技术实现要素:

本发明的实施例为了解决商户服务器异常时间过长导致商户无法获取异步通知的问题,提供了一种发送支付消息的方法和一种聚合支付平台。

第一方面,提供了一种发送支付消息的方法,用于聚合支付平台,包括:接收第三方支付公司服务器发送的支付消息,支付消息用于指示用户的订单的支付是否成功;将支付消息添加到聚合支付平台上,并将支付消息发送给商户服务器;若未收到所述商户服务器发送的成功消息,则将支付消息添加到聚合支付平台上,并在经过延迟处理后进行重复发送,直到接收到商户服务器发送的成功消息,成功消息用于指示成功接收到支付消息。

在第一种可能实现的方式中,上述聚合支付平台包括延迟队列服务器和消费队列服务器,延迟队列服务器设置有延迟队列和正常队列,若未收到商户服务器发送的成功消息,则将支付消息添加到聚合支付平台上,并在经过延迟处理后进行重复发送,包括:若消费队列服务器未接收到商户服务器发送的成功消息,则向延迟队列服务器发送支付消息;延迟队列服务器将支付消息添加到延迟队列中;延迟队列服务器在经过延迟处理后将支付消息添加到正常队列,并发送给消费队列服务器;消费队列服务器将支付消息发送给商户服务器。

结合第一方面的第一种可能的实现方式,在第二种可能实现的方式中,将支付消息添加到聚合支付平台上,并将支付消息发送给商户服务器,包括:延迟队列服务器将支付消息添加到正常队列进,并发送给消费队列服务器;消费队列服务器将支付消息发送给商户服务器。

结合第一方面,在第三种可能实现的方式中,聚合支付平台还包括后端服务器,接收第三方支付公司服务器发送的支付消息,包括:后端服务器接收第三方支付公司发送的支付消息。

结合第一方面的上述任何一种可能的实现方式,在第四种可能实现的方式中,第n次重复发送支付消息的时间间隔为2^n秒,其中n小于或等于17。

第二方面,提供一种聚合支付平台,聚合支付平台用于接收第三方支付公司服务器发送的支付消息,其中支付消息用于指示用户的订单的支付是否成功;聚合支付平台用于添加支付消息,并用于将支付消息发送给商户服务器;在未收到商户服务器发送的成功消息时,聚合支付平台用于添加支付消息,并在经过延迟处理后进行重复发送,直到接收到商户服务器发送的成功消息,其中成功消息用于指示成功接收到支付消息。

在第一种可能实现的方式中,聚合支付平台包括延迟队列服务器和消费队列服务器,延迟队列服务器设置有延迟队列和正常队列,若消费队列服务器未接收到商户服务器发送的成功消息,则向延迟队列服务器发送支付消息;延迟队列服务器用于将支付消息添加到延迟队列中;延迟队列服务器在经过延迟处理后用于将支付消息添加到正常队列,并发送给消费队列服务器;消费队列服务器用于将支付消息发送给商户服务器。

结合第二方面的第一种可能的实现方式,在第二种可能实现的方式中,延迟队列服务器还用于将支付消息添加到正常队列,并将支付消息发送给消费队列服务器;消费队列服务器用于将支付消息发送给商户服务器。

结合第二方面,在第三种可能实现的方式中,聚合支付平台还包括后端服务器,后端服务器用于接收第三方支付公司发送的支付消息。

结合第二方面的上述任何一种可能的实现方式,在第四种可能实现的方式中,第n次重复发送支付消息的时间间隔为2^n秒,其中n小于或等于17。

根据本发明的实施例,能够利用聚合支付平台多次延时重复发送支付异步通知消息,这样就能够保障商户服务器即使在网络不好或者宕机的情况下依然能够接收到订单的真实支付的消息,明显减少因商户服务器问题导致的漏单。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:

图1是本发明一实施例的支付系统的示意性框架图;

图2是本发明一实施例的发送支付消息的方法的示意性流程图;

图3是本发明另一实施例的发送支付消息的方法过程的示意性流程图;

图4是本发明一实施例的聚合支付平台的示意结构图;

图5是本发明一实施例的用于发送支付消息的计算机设备的框架图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其它实施例,都属于本发明保护的范围。

图1是根据本发明一实施例的支付系统100的示意性框架图。

支付系统100可以包括第三方支付公司服务器110、聚合支付平台120和商户服务器130。

例如,商户可以在聚合支付平台120上注册账户并登录,创建支付应用,与聚合支付平台120的工作人员联系,配置支付渠道的参数,比如商户号和密钥等,设置接收异步通知的商户服务器130的统一资源定位器url(uniformresourelocator)。商户根据自己运用的编程语言,选择不同的软件开发工具包sdk(softwaredevelopmentkit),在代码里面填好应用账号appid(applicationidentity)和应用密码appsecret(applicationsecret)。这样聚合支付平台120就可以将第三方支付公司服务器110和商户服务器130联系起来。当商户将订单消息发给聚合支付平台120后,聚合支付平台120就会返回第三方支付公司的支付地址给商户服务器130,商户收到支付地址后就会展示给用户进行支付,用户支付完成后,第三方支付公司服务器110会给聚合支付平台120发送异步通知消息。其中,第三方支付公司可以是支付宝、微信、银联等,聚合支付平台120的接入可以将多种互联网支付方式整合起来,第三方支付公司服务器110、聚合支付平台120和商户服务器130之间可以通过有线或无线网络等方式进行通信。

大型企业直接接入第三方支付公司提供的接口,可以给客户提供简单、方便的支付方式。但对于广大的中小型企业来说,由于人力和财力问题,这种接入反而会是自身业务发展的一大瓶颈。因此对于这些公司,聚合支付服务确实能降低支付方面的集成难度和接入时间,让这些公司有更多的时间和精力投入到自身产品研发之中。

图2是根据本发明一实施例的发送支付消息的方法的示意性流程图。

该发送支付消息的方法用在图1中的支付系统100上,由聚合支付平台120执行。

210,接收第三方支付公司服务器发送的支付消息,支付消息用于指示用户的订单的支付是否成功。

例如,当商户将订单消息发给聚合支付平台120后,聚合支付平台120就会返回第三方支付公司的支付地址给商户服务器130,商户收到支付地址后就会展示给用户进行支付,用户支付完成后,商户服务器130会将支付完成的消息发送给第三方支付公司服务器110,然后第三方支付公司服务器110会给聚合支付平台120发送支付完成的异步通知消息。

220,将支付消息添加到聚合支付平台上,并将支付消息发送给商户服务器。

具体而言,将支付完成的异步通知消息添加到聚合支付平台120上,然后直接将其发送给商户服务器130,如果商户服务器130返回成功给聚合支付平台120,那么此过程就终止。

230,若未收到商户服务器发送的成功消息,则将支付消息添加到聚合支付平台上,并在经过延迟处理后进行重复发送,直到接收到商户服务器发送的成功消息,成功消息用于指示成功接收到支付消息。

例如,如果商户服务器130返回非成功给聚合支付平台120,则将上述异步通知消息添加到聚合支付平台上进行延迟处理,并且重复发送,直到接收到商户服务器130发送的成功消息为止。

根据本发明的实施例,能够利用聚合支付平台多次延时重复发送异步通知消息,这样就能够保障商户服务器即使在网络不好或者宕机的情况下依然能够接收到订单的真实支付的消息,明显减少因商户服务器问题导致的漏单。

应理解,商户服务器可以是连接聚合支付平台的多个商户服务器中的任意一个。

根据本发明的实施例,聚合支付平台包括延迟队列服务器和消费队列服务器,延迟队列服务器设置有延迟队列和正常队列,若未收到商户服务器发送的成功消息,则将支付消息添加到聚合支付平台上,并在经过延迟处理后进行重复发送,包括:若消费队列服务器未接收到商户服务器发送的成功消息,则向延迟队列服务器发送支付消息;延迟队列服务器将支付消息添加到延迟队列中;延迟队列服务器在经过延迟处理后将支付消息添加到正常队列,并发送给消费队列服务器;消费队列服务器将支付消息发送给商户服务器。

例如,将上述第三方支付公司服务器110发送给聚合支付平台120的异步通知消息添加到聚合支付平台120上,然后再将异步通知消息发送给商户服务器130。如果消费队列服务器接收到商户服务器130返回的成功“success”则整个过程停止,但如果消费队列服务器接收到商户服务器130返回的非“success”,那么就要将异步通知消息重新保存到延迟队列服务器中,然后将异步通知消息放在延迟队列上进行排队,排队时间到后,再到正常队列进行排队,排到之后再将异步通知消息发送给消费队列服务器进行处理,处理之后再发送给商户服务器130,直到商户服务器130返回“success”为止。其中,延迟队列服务器可以选择开源消息队列系统,比如,rabbitmq服务器。消费队列服务器中设置有消费队列,消费队列可以更新rabbitmq服务器发过来的异步通知消息,然后发送给商户服务器130,而且如果消费队列服务器接收到商户服务器130返回的“success”后可以调用deletemessage接口删除该异步通知消息。

可选的,作为另一实施例,将支付消息添加到聚合支付平台上,并将支付消息发送给商户服务器,包括:延迟队列服务器将支付消息添加到正常队列进行发送,并发送给消费队列服务器;消费队列服务器将支付消息发送给商户服务器。

例如,在用户购买商品提交订单时,商户服务器130会将此订单消息发送给聚合支付平台120,聚合支付平台120会把第三方支付公司的支付地址返回给商户服务器130,商户收到支付地址后会展示给用户进行支付,用户支付完成后,第三方支付公司服务器110将支付完成的异步通知消息发送给延迟队列服务器,延迟队列服务器将异步通知消息添加到正常队列进行排队,排队完成后,将异步通知消息发送给消费队列服务器,然后消费队列服务器将异步通知消息发送给商户服务器130。

可选的,作为另一实施例,聚合支付平台还包括后端服务器,接收第三方支付公司服务器发送的支付消息,包括:所述后端服务器接收所述第三方支付公司发送的支付消息。

例如,当商户将订单消息发给聚合支付平台120的后端服务器后,聚合支付平台120的后端服务器就会返回第三方支付公司的支付地址给商户服务器130,商户收到支付地址后就会展示给用户进行支付,用户支付完成后,商户服务器130会将支付完成的消息发送给第三方支付公司服务器110,然后第三方支付公司服务器110会给聚合支付平台120的后端服务器发送异步通知消息,聚合支付平台120的后端服务器接收第三方支付公司服务器110发送的支付完成的异步通知消息然后将其添加到延迟队列服务器上。

后端服务器还包括数据库,数据库可以是一套开源分布式非结构化查询语言nosql(notonlystructuredquerylanguage)数据库,这种数据库具有很好的扩展性且不存在单点故障。比如,可以选择cassandra数据库。后端服务器在接收到第三方支付公司服务器110发送的支付完成的异步通知消息后,将数据库中的订单状态进行修改,比如,将订单状态改为完成。

基于本发明的实施例,后端服务器作为处理和分发订单信息的统一接口,可以将商户信息、订单信息等进行聚合,使得支付更加快速、便捷,也可以保存数据,便于下次查询等操作。

可选的,作为另一实施例,第n次重复发送所述支付消息的时间间隔为2^n秒,其中n小于或等于17。

具体而言,当消费队列服务器第一次没有接收到“success”时,将异步通知消息添加到延迟队列服务器的第一个延迟队列上,2s后会将此消息放在正常队列上发送给商户服务器130,如果这次消费队列服务器还是没有接收到“success”,再将异步通知消息添加到延迟队列服务器的第二个延迟队列上,2^2s秒后会将此消息放在正常队列上发送给商户服务器130,如果第n次消费队列服务器还是没有接收到“success”,再将异步通知消息添加到延迟队列服务器的第n个延迟队列上,2^n秒后会将此消息放在正常队列上发送给商户服务器130。也就是说,重复发送异步通知消息的顺序为消费队列服务器将异步通知消息继续保存在延迟队列服务器中,然后将异步通知消息添加到延迟队列上进行排队,排到后再添加到正常队列进行排队,然后发送给消费队列服务器,消费队列服务器再将异步通知消息重复发送给商户服务器130。其中,延迟队列可以选择17个,正常队列可以选择1个,也就是此处的n为17。

基于本发明的实施例,这种重发方式程序算法复杂度较低,处理时间较短。而且,消费队列服务器在发送给商户的异步通知消息失败时,把通知消息重新放到延迟队列服务器,并根据失败次数,增加下一次发送时间的时间间隔。

下面结合具体例子,更加详细地描述本发明的实施例。

图3是本发明一实施例的发送支付消息的方法过程的示意性流程图。

305,商户从自己的商户网站服务器端发送订单消息到beecloud后端服务器。

beecloud后端服务器仅仅是一种聚合支付平台中的一部分,并不是所有的聚合支付平台都包括beecloud后端服务器。

310,beecloud后端服务器返回第三方支付公司的支付地址给商户。比如,第三方支付公司可以选择支付宝或者京东的收银台。

315,商户的商户网站服务器收到支付地址后,展示给用户进行支付,用户支付完成之后,商户网站服务器将支付完成消息发送给第三方支付公司服务器。

320,第三方支付公司服务器给beecloud后端服务器发送异步通知消息。

比如,用户使用京东支付服务器处理完支付之后,京东支付服务器会往beecloud后端服务器发送异步通知消息,发送的数据是加密之后的数据,需要用京东支付提供的des密钥和公钥进行验证和解密。解析出来的数据会以java脚本对象符号json(javascriptobjectnotation)格式放在消息详情(messagedetail)里面。messagedetail包括:银行代码(bankcode)、数量(amount)、卡持有者姓名(cardholdername)、贸易号码(tradenumber)、卡类型(cardtype)、卡号(cardno)、贸易时间(tradetime)、卡持有者类型(cardholdertype)、交易费(transactionfee)、交易成功(tradesuccess)、卡持有者身份证cardholderid(identification)、卡持有者手机(cardholdermobile)、状态(status)等。

325,beecloud后端服务器收到异步通知消息之后,修改cassandra数据库里订单的订单状态,改成“支付完成”状态。

330,beecloud后端服务器往rabbitmq服务器发送异步通知消息,rabbitmq服务器直接将异步通知消息添加到正常队列上进行排队。其中,异步通知消息可以是json格式字符串。

335,排队完成后,rabbitmq服务器把从beecloud后端服务器接收到的异步通知消息立即转发到消费队列服务器,消费队列服务器收到数据之后,开始处理rabbitmq服务器上面的异步通知消息,获取异步通知消息发送的地址,同时将数据写入日志。

340,消费队列服务器处理完异步通知消息之后,发送异步通知消息给商户处理异步通知服务器。

345,若商户已经成功接收并正确处理异步通知消息,则同步返回成功“success”。若商户没有正常处理,则返回非“success”,这时可能是商户服务器异常,也可能是商户服务器处理逻辑异常。

350,若消费队列服务器收到非“success”,将异步通知消息放到rabbitmq服务器中的延迟队列进行排队,排到后再将异步通知消息放到正常队列中进行排队发送,发送给消费队列服务器,这样就可以重复发送异步通知消息。聚合支付平台的rabbitmq服务器将在2秒,4秒,8秒,…,2^17秒(约36小时)重发异步通知消息。如果在以上任一时间间隔,聚合支付平台的消费队列服务器收到了“success”,重复发送异步通知消息将终止。

上面描述了根据本发明实施例的发送支付消息的方法,下面结合图4描述根据本发明实施例的聚合支付平台。

图4是根据本发明一实施例的聚合支付平台400的示意结构图。

聚合支付平台400用于接收第三方支付公司服务器发送的支付消息,其中所述支付消息用于指示用户的订单的支付是否成功;聚合支付平台400还用于添加所述支付消息,并用于将所述支付消息发送给商户服务器;在未收到商户服务器发送的成功消息时,聚合支付平台400还用于添加支付消息,并在经过延迟处理后进行重复发送,直到接收到商户服务器发送的成功消息,其中成功消息用于指示成功接收到支付消息。

聚合支付平台400的操作和功能可以参考图2的210、220、230的方法,为了避免重复,在此不赘述。

基于本发明的实施例,对于广大的中小型企业来说,聚合支付服务能降低支付方面的集成难度和接入时间,让这些公司有更多的时间和精力投入到自身产品研发之中。而上述聚合支付平台能够保障商户服务器即使在网络不好或者宕机的情况下依然能够接收到订单的真实支付的消息。

可选的,作为另一实施例,聚合支付平台400包括延迟队列服务器410和消费队列服务器420,延迟队列服务器410设置有延迟队列和正常队列,若消费队列服务器420未接收到商户服务器130发送的成功消息,则用于向延迟队列服务器410发送支付消息;延迟队列服务器410用于将支付消息添加到延迟队列中;延迟队列服务器410在经过延迟处理后用于将支付消息添加到正常队列,并发送给消费队列服务器420;消费队列服务器420用于将支付消息发送给商户服务器130。

聚合支付平台400的操作和功能可以参考图2的210、220、230的方法,延迟队列服务器410的操作和功能可以参考图3的330、335和350的方法,消费队列服务器420的操作和功能可以参考图3的335、340、345和350的方法,为了避免重复,在此不赘述。

可选的,作为另一实施例,延迟队列服务器410还用于将支付消息添加到正常队列,并将支付消息发送给消费队列服务器420,消费队列服务器420用于将支付消息发送给商户服务器130。

聚合支付平台400的操作和功能可以参考图2的210、220、230的方法,延迟队列服务器410的操作和功能可以参考图3的330和335的方法,商户服务器130的操作和功能可以参考图3的335和340的方法,为了避免重复,在此不赘述。

可选的,作为另一实施例,聚合支付平台还包括后端服务器430,后端服务器用于接收第三方支付公司发送的支付消息。

聚合支付平台400的操作和功能可以参考图2的210、220、230的方法,后端服务器430的操作和功能可以参考图3的320的方法,为了避免重复,在此不赘述。

可选的,作为另一实施例,第n次重复发送所述支付消息的时间间隔为2^n秒,其中n小于或等于17。

聚合支付平台400的操作和功能可以参考图2的210、220、230的方法,重复发送的操作和功能可以参考图3的335、340、345和350的方法,为了避免重复,在此不赘述。

图5是根据本发明一实施例的用于发送支付消息的计算机设备500的框图。

参照图5,装置500包括处理组件510,其进一步包括一个或多个处理器,以及由存储器520所代表的存储器资源,用于存储可由处理组件510的执行的指令,例如应用程序。存储器520中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件510被配置为执行指令,以执行上述对图像进行分类方法。

装置500还可以包括一个电源组件被配置为执行装置500的电源管理,一个有线或无线网络接口被配置为将装置500连接到网络,和一个输入输出(i/o)接口。装置500可以操作基于存储在存储器520的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

一种非临时性计算机可读存储介质,当存储介质中的指令由上述装置500的处理器执行时,使得上述装置500能够执行一种发送支付消息的方法,包括:接收第三方支付公司服务器发送的支付消息,支付消息用于指示用户的订单的支付是否成功;将支付消息添加到聚合支付平台上,并在经过延迟处理后,将支付消息发送给商户服务器;若未收到商户服务器发送的成功消息,则将支付消息添加到聚合支付平台上进行重复发送,直到接收到商户服务器发送的成功消息,成功消息用于指示成功接收到支付消息。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的发送支付消息的步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的方法和平台的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的平台和方法,可以通过其它的方式实现。例如,以上所描述的支付平台实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序校验码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1