本发明实施例涉及支付交易领域,尤其涉及一种防止重复支付的方法和装置。
背景技术:
随着科技的进步和发展,用户通过网络交易已经成为一种普遍的方式,使用网络交易时通常是在线支付。由于在线支付是基于网络及非面对面的特性,因此,在线支付的过程中若系统出现异常可能会造成同一订单重复支付的问题。
在现有技术中,第三方支付装置会提供支付和支付状态查询两种功能,图1示出了现有技术中订单支付和确定支付状态流程,如图1所示,支付和确定支付状态包括以下步骤:
步骤101,用户向第三方支付装置发起订单支付请求;
步骤102,第三方支付装置接收用户发起的订单支付请求;
步骤103,第三方支付装置确定是否成功接收到用户发起的订单支付请求;若否,则执行步骤104;若是,则执行步骤105;
步骤104,确定支付状态为该订单不存在;
步骤105,确定订单支付状态为订单支付成功、订单支付失败或订单支付状态不明确;
步骤106,第三方支付装置向支付平台发送支付请求;
步骤107,支付平台向第三方支付装置发送订单支付响应;
步骤108,第三方支付装置确定是否接收到支付平台发送的订单支付响应;
步骤109,若接收到支付平台发送的订单支付响应,则根据支付响应确定支付状态为支付成功或支付失败;具体来说,支付响应为支付成功,则支付状态为支付成功;支付响应为支付失败,则支付状态为支付失败;
步骤120,若未接收到支付平台发送的订单支付响应,则确定支付状态不明确。
当第三方支付装置在用户发起支付请求之前,系统出现异常,从而导致第三方支付装置未成功接收到支付请求,从而也无法向用户展示支付状态,由于用户没有看到支付状态,因此用于可能会查询该订单的支付状态。由于第三方支付装置的异常,可能导致先成功接收到查询请求,后续再成功接收到支付请求,此时由于第三方支付装置成功接收到的信令的时序出现颠倒,因此导致第三方支付装置处理信令的时序颠倒。该情况下,由于第三方支付装置在处理查询请求之前,还未处理支付请求,因此可能向用户发送的支付状态为:确定该订单不存在。用户看到该支付状态,可能会发起第二次支付,即用户向第三方支付装置再次发送支付请求,第三方支付装置对两次发送的支付请求均进行处理,导致用户对一个订单重复进行支付。
目前,对于出现订单重复支付的情况通常采取事后处理的方式:当用户确定同一个订单已经进行了重复支付,则通过发起退款来解决订单重复支付的问题,如此,会给用户造成一定的资金风险。
综上,亟需一种防止重复支付的方案,用于避免用户对同一个订单进行重复支付的问题。
技术实现要素:
本发明实施例提供了一种防止重复支付的方法和装置,用于防止对重复发送的支付请求进行支付。
本发明实施例提供一种防止重复支付的方法,包括:
第三方支付装置接收终端发送的支付请求;其中,支付请求包括订单标识;第三方支付装置确定接收到支付请求之前未接收到包括订单标识的订单请求,确定是首次接收到订单标识,则根据支付请求对订单标识对应的订单进行支付处理;第三方支付装置确定接收到支付请求之前接收到包括订单标识的订单请求,确定不是首次接收到订单标识,则向终端发送第一指示信息;第一指示信息用于指示支付请求的支付状态为支付失败;其中,订单请求包括:用于对订单标识对应的订单进行支付的支付请求,以及用于查询订单标识对应的订单的支付状态查询请求。
可选地,第三方支付装置确定接收到支付请求之前未接收到包括订单标识的订单请求,确定是首次接收到订单标识,包括:第三方支付装置将支付请求中的订单标识保存至数据库;其中,支付请求中的订单标识为数据库主键;第三方支付装置确定支付请求中的订单标识保存成功,则确定是首次接收到订单标识。
可选地,第三方支付装置根据支付请求对所订单标识对应的订单进行支付处理,包括:第三方支付装置向支付平台发送支付请求;第三方支付装置接收支付平台发送的支付响应。可选地,第三方支付装置根据支付请求对订单标识对应的订单进行支付处理之后,还包括:第三方支付装置接收终端发送的查询请求;其中,查询请求中包括订单标识;第三方支付装置将查询请求中的订单标识保存至数据库;其中,查询请求中的订单标识为数据库主键;第三方支付装置确定查询请求中的订单标识保存失败,则根据确定出订单标识对应的支付响应,向终端发送第二指示信息;其中,支付响应为支付成功,则第二指示信息用于指示支付请求的支付状态为支付成功;支付响应为支付失败,则第二指示信息用于指示支付请求的支付状态为支付失败。
可选地,第三方支付装置接收终端发送的支付请求之前,还包括:第三方支付装置接收包括订单标识的订单请求,并将订单请求中的订单标识保存至数据库;其中,订单请求中的订单标识为数据库主键。可选地,第三方支付装置确定接收到支付请求之前接收到包括订单标识的订单请求,确定不是首次接收到订单标识,包括:第三方支付装置将支付请求中的订单标识保存至数据库;其中,支付请求中的订单标识为数据库主键;第三方支付装置确定支付请求中的订单标识保存失败,则确定不是首次接收到订单标识。
可选地,订单请求为查询请求。可选地,第三方支付装置接收包括订单标识的订单请求,并将订单请求中的订单标识保存至数据库之后,第三方支付装置接收终端发送的支付请求之前,还包括:第三方支付装置确定查询请求中的订单标识保存成功,则向终端发送第三指示信息;第三指示信息用于指示终端在发送查询请求之前发送的订单标识对应的支付请求的支付状态为支付失败。
一种防止重复支付的装置,包括:
接收单元,用于接收终端发送的支付请求;其中,支付请求包括订单标识;
处理单元,用于确定接收到支付请求之前未接收到包括订单标识的订单请求,确定是首次接收到订单标识,则根据支付请求对订单标识对应的订单进行支付处理;确定接收到支付请求之前接收到包括订单标识的订单请求,确定不是首次接收到订单标识,则向终端发送第一指示信息;第一指示信息用于指示支付请求的支付状态为支付失败;其中,订单请求包括:用于对订单标识对应的订单进行支付的支付请求,以及用于查询订单标识对应的订单的支付状态查询请求。
可选地,处理单元,具体用于:将支付请求中的订单标识保存至数据库;其中,支付请求中的订单标识为数据库主键;确定支付请求中的订单标识保存成功,则确定是首次接收到订单标识。
可选地,还包括发送单元,用于:向支付平台发送支付请求;接收单元,还用于:接收支付平台发送的支付响应;接收终端发送的查询请求;其中,查询请求中包括订单标识;处理单元,还用于:将查询请求中的订单标识保存至数据库;其中,查询请求中的订单标识为数据库主键;确定查询请求中的订单标识保存失败,则根据确定出订单标识对应的支付响应,向终端发送第二指示信息;其中,支付响应为支付成功,则第二指示信息用于指示支付请求的支付状态为支付成功;支付响应为支付失败,则第二指示信息用于指示支付请求的支付状态为支付失败。
可选地,接收单元,还用于:接收包括订单标识的订单请求;处理单元,还用于:将订单请求中的订单标识保存至数据库;其中,订单请求中的订单标识为数据库主键;将支付请求中的订单标识保存至数据库;其中,支付请求中的订单标识为数据库主键;确定支付请求中的订单标识保存失败,则确定不是首次接收到订单标识。
可选地,订单请求为查询请求;
可选地,处理单元,具体用于:确定查询请求中的订单标识保存成功,则向终端发送第三指示信息;第三指示信息用于指示终端在发送查询请求之前发送的订单标识对应的支付请求的支付状态为支付失败。
本发明实施例中第三方支付装置在接收到支付请求之后,首先确定在接收到该支付请求之前是否接收到包括订单标识的订单请求,根据该订单请求来确定接收到的支付请求中的订单标识是否为首次接收:若是首次接收,则说明在接收到该支付请求之前没有接收到该订单请求,所以根据该支付请求对订单标识对应的订单进行支付处理;若不是首次接收,则说明在接收到该支付请求之前接收到了除该支付请求之外的其它订单请求,比如其它支付请求或查询请求,因此不对此次接收到的支付请求进行支付处理,向终端发送指示该支付失败的第一指示信息。可见,若终端进行了重复支付,即第二次发送支付请求,则本发明实施例所提供的方案可有效防止对重复发送的支付请求进行支付。
附图说明
图1为现有技术中支付和确定支付状态流程示意图;
图1a为本发明实施例提供的一种系统架构示意图;
图2为本发明实施例提供的一种防止重复支付的方法流程示意图;
图3为本发明实施例提供的另一种防止重复支付的方法流程示意图;
图4为本发明实施例提供的另一种防止重复支付的方法流程示意图;
图5为本发明实施例提供的可选地一种防止重复支付的具体方法流程示意图;
图6为本发明实施例提供的可选地另一种防止重复支付的具体方法流程示意图;
图7为本发明实施例提供的一种第三方支付装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1a示出了应用本发明实施例的一种系统的架构示意图。如图1a所示,该系统架构可以包括终端101a、第三方支付装置102a、支付平台103a。终端与第三方支付装置之间,或者第三方支付装置与支付平台之间可通过无线或有线的方式进行连接。
终端用于向第三方支付装置发送订单请求。终端可以经无线接入网(Radio Access Network,简称RAN)与一个或多个核心网进行通信,终端设备可以指用户设备(User Equipment,简称UE)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置。终端可以是蜂窝电话、无绳电话、会话启动协议(Session Initiation Protocol,简称SIP)电话、无线本地环路(Wireless Local Loop,简称WLL)站、个人数字处理(Personal Digital Assistant,简称PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,未来5G网络中的终端设备等。
第三方支付装置用于接收并处理终端发送的订单请求,可以是支付宝、微信等。
支付平台用来接收第三方支付装置发送的支付请求并向第三方支付装置反馈支付响应,可以是银行等。
基于图1a所示的系统架构,图2示例性示出了本发明实施例提供的一种防止重复支付的方法流程示意图,如图2所示,防止重复支付方法包括以下步骤:
步骤201,第三方支付装置接收终端发送的支付请求;其中,支付请求包括订单标识;
步骤202,第三方支付装置确定接收到支付请求之前是否接收到包括订单标识的订单请求,即确定是否是首次接收到订单标识;若第三方支付装置确定接收到支付请求之前未接收到包括订单标识的订单请求,确定是首次接收到订单标识,则执行步骤203;若第三方支付装置确定接收到支付请求之前接收到包括订单标识的订单请求,确定是不首次接收到订单标识,则执行步骤204;
步骤203,则根据支付请求对订单标识对应的订单进行支付处理;
步骤204,向终端发送第一指示信息;第一指示信息用于指示支付请求的支付状态为支付失败;其中,订单请求包括:用于对订单标识对应的订单进行支付的支付请求,以及用于查询订单标识对应的订单的支付状态查询请求。
上述步骤202中,第三方支付装置确定接收到支付请求之前未接收到包括订单标识的订单请求,即确定是首次接收到订单标识;第三方支付装置确定接收到支付请求之前接收到包括订单标识的订单请求,则确定不是首次接收到订单标识。订单请求可能为包括上述订单标识的另一个支付请求,也可能是包括上述订单标识的一个查询请求。
由于本发明实施例中本发明实施例中第三方支付装置在接收到支付请求之后,首先确定在接收到该支付请求之前是否接收到包括订单标识的订单请求,根据该订单请求来确定接收到的支付请求中的订单标识是否为首次接收:若是首次接收,则说明在接收到该支付请求之前没有接收到该订单请求,所以根据该支付请求对订单标识对应的订单进行支付处理;若不是首次接收,则说明在接收到该支付请求之前接收到了除该支付请求之外的其它订单请求,比如其它支付请求或查询请求,因此不对此次接收到的支付请求进行支付处理,向终端发送指示该支付失败的第一指示信息。可见,若终端进行了重复支付,即第二次发送支付请求,则本发明实施例所提供的方案可有效防止对重复发送的支付请求进行支付。
为了确定出接受到的支付请求中的订单标识是不是首次接收到的订单标识,有多种实施方式,比如对每一次的支付请求中的订单标识用不同的序号标注或第三方支付装置对每一次接收到的订单支付请求中的订单标识用接收到订单标识的时间确定。本发明实施例提供一种可选地方案,用于使第三方支付装置确定出是否是接收到支付请求之前未接收到包括订单标识的订单请求,即确定是否是首次接收到订单标识。
图3示例性示出了本发明提供的另一种防止重复支付的方法流程示意图。如图3所示,该方法包括以下步骤:
步骤301,终端向第三方支付装置发送支付请求;其中,支付请求中包括订单标识。
步骤302,第三方支付装置接收终端发送的支付请求。
步骤303,第三方支付装置将支付请求中的订单标识保存至数据库;其中,支付请求中的订单标识为数据库主键。
可选地,订单标识通过订单三要素(商户号、订单号、订单时间)来唯一的确定。第三方支付装置将支付请求对应的订单标识保存至数据库;可选地,根据订单标识作为数据库主键保存到数据库中,比如DB2数据库。
本发明实施例中数据库主键是表中的一列或多列的组合,其值能唯一地标识表中的每一列。这样的一列或多列为表的主键,通过主键可强制表的实体完整性,利用数据库主键可解决因报文处理时序颠倒产生的重复支付。
该示例中将支付请求中的订单标识保存至数据库时,可能保存成功,也可能保存不成功。具体来说,若数据库中没有保存过该订单标识,即该次将支付请求中的订单标识保存至数据库是首次将该订单标识以数据库主键的形式保存至数据库,则可以保存成功;若数据库中以订单标识为数据库主键的形式曾经保存过该订单标识,即该次将支付请求中的订单标识保存至数据库不是首次将该订单标识以数据库主键的形式保存至数据库,则会保存失败。
该示例中以该次将支付请求中的订单标识保存至数据库是首次将该订单标识以数据库主键的形式保存至数据库为例进行说明,此时一定能保存成功。
步骤304,第三方支付装置确定支付请求对应的订单标识保存成功;确定是首次接收到订单标识。
步骤305,第三方支付装置向支付平台发送支付请求。可选地,该支付请求中包括:订单标识、收款方信息、交易金额等信息。
步骤306,第三方支付装置接收支付平台发送的支付响应。可选地,第三方支付装置向终端发送接收到的支付响应。
具体来说,支付响应是支付平台接收到第三方支付装置发送的支付请求之后,对接收到的支付请求处理之后的结果,支付响应可以为支付成功或支付失败。若支付响应为支付成功,则第三方支付装置确定出的支付请求的支付状态为支付成功;若支付响应为支付失败,则第三方支付装置确定出的支付请求的支付状态为支付失败。
可选地,另一种实施方式中,若支付平台发送了支付响应,但是支付平台没有收到该支付响应,则第三方支付装置确定出的支付请求的支付状态为支付状态不明。
可选地,第三方支付装置中可储存支付状态表,该支付状态表中包括支付请求,以及该支付请求的支付状态。
该示例中,若第三方支付装置未将支付响应及时的发送给终端,则终端的用户可能会向第三方支付装置发送查询请求,以便确定支付请求的支付状态。该示例中以用户未接收到支付响应并向第三方支付装置发送查询请求为例进行说明。
步骤307,第三方支付装置接收终端发送的查询请求;其中,查询请求中包括订单标识。
步骤308,第三方支付装置将查询请求中的订单标识保存至数据库;其中,查询请求中的订单标识为数据库主键。
步骤309,第三方支付装置确定查询请求对应的订单标识保存失败。
由于第三方支付装置在接收到查询请求之前,已经接收了包括订单标识的支付请求,而且将该支付请求中的订单标识为数据库主键保存到数据库中,因此,当第三方支付装置接收到查询请求中的订单标识时,由于数据库中已经存在了该订单标识的数据库主键,所以查询请求对应的订单标识保存失败,即该订单标识不能再保存到数据库了。
步骤310,根据确定出订单标识对应的支付响应,向终端发送第二指示信息。其中,支付响应为支付成功,则第二指示信息用于指示支付请求的支付状态为支付成功;支付响应为支付失败,则第二指示信息用于指示支付请求的支付状态为支付失败。可选地,若第三方支付装置未接收到该支付响应,则第二指示信息用于指示支付请求的支付状态为支付不明。
图4示例性示出了本发明提供的另一种防止重复支付的方法流程示意图。如图4所示,该方法包括以下步骤:
步骤401,终端向第三方支付装置发送包括订单标识的订单请求。可选地,订单请求可为用于对订单标识对应的订单进行支付的支付请求,或者为用于查询订单标识对应的订单的支付状态查询请求。
步骤402,第三方支付装置接收包括订单标识的订单请求。
可选地,订单标识通过订单三要素(商户号、订单号、订单时间)来唯一的确定;订单请求可以为支付请求或查询请求中的任一一个。
步骤403,第三方支付装置将订单请求中的订单标识保存至数据库;其中,订单请求中的订单标识为数据库主键。
可选地,将订单请求中的订单标识保存为数据库主键,能唯一的标识该订单。具体来说,在第三方支付装置数据库中以数据库主键的的方式保存了该订单请求中包括的订单标识,由于该订单请求中的订单标识是首次以数据库主键的方式保存到数据库中,所以该订单请求中所包括的订单标识保存成功。若第三方数据库再次接收到该订单标识时,由于数据库主键是该订单的唯一标识,因此,第三方支付装置再次接收到该订单标识时不能被再次成功保存。
可选地,订单请求可为用于对订单标识对应的订单进行支付的支付请求,或者为用于查询订单标识对应的订单的支付状态查询请求;当订单请求为用于查询订单标识对应的订单的支付状态查询请求时,该查询请求对应的订单标识以数据库主键的方式成功保存到第三方支付装置的数据库中,第三方支付装置确定该查询请求中包括的订单标识为首次接收到的订单标识;之后向终端发送该订单标识所对应的支付请求的支付状态为支付失败;当订单请求为用于对订单标识对应的订单进行支付的支付请求,该支付请求对应的订单标识以数据库主键的方式成功保存到第三方支付装置的数据库中,第三方支付装置确定该支付请求中包括的订单标识为首次接收到的订单标识;之后向支付平台发送该订单标识所对应的支付请求,并对该支付请求进行处理。该示例中以第三方支付装置在接收到上述订单请求之后,再次接收到支付请求为例进行说明,由于订单请求中包括的订单标识以数据库主键的方式成功保存到了第三方支付装置的数据库中,所以,当第三方支付装置再次接收到包含该订单请求的支付请求时,支付请求中的订单标识一定会保存失败。
步骤404,终端向第三方支付装置发送包括订单标识的支付请求。
步骤405,第三方支付装置接收终端发送的包括订单标识的支付请求。
步骤406,第三方支付装置将支付请求中的订单标识保存至数据库;其中,支付请求中的订单标识为数据库主键。
步骤407,第三方支付装置确定支付请求对应的订单保存失败;
则确定不是首次接收到订单标识。
由于,第三方支付装置将支付请求中的订单标识以数据库主键的方式保存失败,所以确定接收到支付请求之前接收到包括订单标识的订单请求,所以,因此,确定支付请求对应的订单标识不是首次接收到订单标识。
步骤408,第三方支付装置向终端发送第一指示信息;第一指示信息用于指示支付请求的支付状态为支付失败。
在确定不是首次接收到订单标识之后,不对此次接收到的支付请求进行支付处理,向终端发送指示该支付失败的第一指示信息。因此,若终端进行了重复支付,即第二次发送支付请求,则可有效防止对重复发送的支付请求进行支付。
图5示例性示出了本发明提供的可选地一种防止重复支付的具体方法流程示意图。如图5所示,该方法实例中以图4所示的方法示例中订单请求为查询请求为例进行更详细的描述,该方法示例包括以下步骤:
步骤501,终端向第三方支付装置发送包括订单标识的查询请求。
可选地,查询请求为订单请求的一种,查询请求用于查询订单的支付状态,在查询请求中包括订单标识、收款方信息、交易金额等信息。
步骤502,第三方支付装置接收包括订单标识的查询请求。
步骤503,将查询请求中的订单标识保存至数据库;其中,查询请求中的订单标识为数据库主键。
步骤504,第三方支付装置确定查询请求中的订单标识保存成功。
第三方支付装置首次接收到查询请求中包括的订单标识,所以该订单标识为数据库主键的方式可以成功保存到数据库中。这说明第三方支付装置并没有接收到终端发送的该查询请求之前所发送的订单标识对应的支付请求。可选地,终端先向第三方支付装置发送首次支付请求,当终端未收到支付响应时,又向第三方支付装置发送查询请求,但是第三方支付装置首先接收都了查询请求,后接收首次支付请求,则第三方支付装置在接收到查询请求中,首先将查询请求中包含的订单标识以数据库主键的方式保存到数据库中,当后接收到包括订单标识的支付请求时,该支付请求中的订单标识以数据库主键的方式保存失败,同时第三方支付装置将首次支付请求拦截,不再进行处理。如此,可避免系统出现故障时,对支付请求进行处理错乱从而造成重复支付。
可选地,用户不可对该订单标识对应的订单再进行支付,若用户需要继续完成支付,则需另外再下单。
步骤505,第三方支付装置向终端发送第三指示信息;第三指示信息用于指示终端在发送查询请求之前发送的订单标识对应的支付请求的支付状态为支付失败。
由于第三方支付装置对查询请求中的订单标识保存成功,可选地,该查询请求对应的订单保存成功说明终端没有接收到查询请求中的订单标识对应的支付响应,也无法查询到结果。可选地,第三方支付装置并没有接收到终端发送的该查询请求之前所发送的订单标识对应的支付请求,也不再对查询请求中的订单标识对应的支付请求进行支付处理。所以向终端发送支付请求的支付状态为支付失败。
步骤506,终端向第三方支付装置发送包括订单标识的支付请求。
步骤507,第三方支付装置接收终端发送的支付请求。
步骤508,第三方支付装置将支付请求中的订单标识保存至数据库;其中,支付请求中的订单标识为数据库主键。
步骤509,第三方支付装置确定支付请求对应的订单保存失败;
则确定不是首次接收到订单标识。
由于第三方支付装置确定接收到支付请求之前接收到包括订单标识的查询请求,所以确定该支付请求中的订单标识不是首次接收到订单标识。
步骤510,第三方支付装置向终端发送第一指示信息;第一指示信息用于指示支付请求的支付状态为支付失败。
由于该支付请求的订单标识保存失败,所以第三方支付装置将该支付请求进行拦截,不再对该支付请求进行处理,直接返回支付请求的支付状态为支付失败,如此,可有效防止对重复发送的支付请求进行支付。
图6示例性示出了本发明提供的可选地另一种防止重复支付的具体方法流程示意图。如图6所示,该方法实例中以图4所示的方法示例中订单请求为支付请求为例进行更详细的描述,该方法示例包括以下步骤:
步骤601,终端向第三方支付装置发送包括订单标识的首次支付请求。
可选地,支付请求为订单请求的一种,在支付请求中包括订单标识、收款方信息、交易金额等信息。
步骤602,第三方支付装置接收包括订单标识的首次支付请求。
步骤603,将首次支付请求对应的订单标识保存至数据库;其中,订单标识为首次支付请求的数据库主键。
步骤604,第三方支付装置确定首次支付请求对应的订单标识保存成功。
第三方支付装置接收到首次支付请求中包括的订单标识,所以该订单标识为数据库主键的方式可以成功保存到数据库中。
步骤605,向支付平台发送首次支付请求。
第三方支付装置接收到包括订单标识的首次支付请求,且该首次支付请求对应的订单标识以数据库主键的方式成功保存到数据库中,所以该首次支付请求不会造成重复支付,需要支付平台对该支付请求进行支付处理。
可选地,支付平台接收到首次支付请求之后,对首次支付请求进行支付处理,并向第三方支付装置发送支付响应,第三方支付装置根据支付响应更新首次支付请求对应的支付状态,若支付响应为支付成功,则将首次支付请求的支付状态为更新为支付成功;若支付响应为支付失败,则将首次支付请求的支付状态为更新为支付失败。可选地,若第三方支付装置未接收到该支付响应,则将首次支付请求的支付状态为更新为支付不明。
步骤606,终端向第三方支付装置发送包括订单标识的支付请求。
该支付请求与首次支付请求不同,该支付请求为用户重复进行支付的一次支付请求。终端向第三方支付装置发送首次支付请求之后,由于没有收到第三方支付装置发送的支付状态或收到支付状态支付失败;终端向第三方支付装置发送该包括订单标识的支付请求。
步骤607,第三方支付装置接收终端发送的送包括订单标识支付请求。
步骤608,第三方支付装置将支付请求中的订单标识保存至数据库;其中,支付请求中的订单标识为数据库主键;
步骤609,第三方支付装置确定支付请求对应的订单保存失败;
则确定不是首次接收到订单标识。
具体来说,同一订单标识以数据库主键形式只能保存一次,由于第三方支付装置在保存支付请求对应的订单标识之前,已经成功保存了首次支付请求对应的订单标识,所以后保存同一订单标识的一定会保存失败。.
本发明实施例中通过数据库主键的形式确定接收到的订单标识是不是首次接收到的订单标识。
步骤610,第三方支付装置向终端发送第一指示信息;第一指示信息用于指示支付请求的支付状态为支付失败。
由于当第三方支付装置以数据库主键的方式保存支付请求中对应的订单标识保存失败,所以确定接收到支付请求之前接收到包括订单标识的首次支付请求请求,确定该支付请求中包括的订单标识不是首次接收到订单标识,,所以第三方支付装置将该支付请求进行拦截,不再对该支付请求进行处理,直接返回支付请求的支付状态为支付失败,如此,可有效防止对重复发送的支付请求进行支付。
图7示例性示出了本发明实施例提供的一种第三方支付装置的结构示意图。
基于相同构思,本发明实施例提供一种第三方支付装置,如图7所示,第三方支付装置700包括接收单元701和处理单元702,可选地,还包括发送单元703。其中:
接收单元,用于接收终端发送的支付请求;其中,支付请求包括订单标识;
处理单元,用于确定接收到支付请求之前未接收到包括订单标识的订单请求,确定是首次接收到订单标识,则根据支付请求对订单标识对应的订单进行支付处理;确定接收到支付请求之前接收到包括订单标识的订单请求,确定不是首次接收到订单标识,则向终端发送第一指示信息;第一指示信息用于指示支付请求的支付状态为支付失败;其中,订单请求包括:用于对订单标识对应的订单进行支付的支付请求,以及用于查询订单标识对应的订单的支付状态查询请求。
可选地,处理单元,具体用于:将支付请求中的订单标识保存至数据库;其中,支付请求中的订单标识为数据库主键;确定支付请求中的订单标识保存成功,则确定是首次接收到订单标识。
可选地,还包括发送单元,用于:向支付平台发送支付请求;
接收单元,还用于:接收支付平台发送的支付响应;接收终端发送的查询请求;其中,查询请求中包括订单标识;
处理单元,还用于:将查询请求中的订单标识保存至数据库;其中,查询请求中的订单标识为数据库主键;确定查询请求中的订单标识保存失败,则根据确定出订单标识对应的支付响应,向终端发送第二指示信息;其中,支付响应为支付成功,则第二指示信息用于指示支付请求的支付状态为支付成功;支付响应为支付失败,则第二指示信息用于指示支付请求的支付状态为支付失败。
可选地,接收单元,还用于:接收包括订单标识的订单请求;
处理单元,还用于:将订单请求中的订单标识保存至数据库;其中,订单请求中的订单标识为数据库主键;将支付请求中的订单标识保存至数据库;其中,支付请求中的订单标识为数据库主键;确定支付请求中的订单标识保存失败,则确定不是首次接收到订单标识。
可选地,订单请求为查询请求;
可选地,处理单元,具体用于:确定查询请求中的订单标识保存成功,则向终端发送第三指示信息;第三指示信息用于指示终端在发送查询请求之前发送的订单标识对应的支付请求的支付状态为支付失败。
从上述内容可以看出:本发明实施例中,由于本发明实施例中第三方支付装置在接收到支付请求之后,首先确定在接收到该支付请求之前是否接收到包括订单标识的订单请求,根据该订单请求来确定接收到的支付请求中的订单标识是否为首次接收:若是首次接收,则说明在接收到该支付请求之前没有接收到该订单请求,所以根据该支付请求对订单标识对应的订单进行支付处理;若不是首次接收,则说明在接收到该支付请求之前接收到了除该支付请求之外的其它订单请求,比如其它支付请求或查询请求,因此不对此次接收到的支付请求进行支付处理,向终端发送指示该支付失败的第一指示信息。可见,若终端进行了重复支付,即第二次发送支付请求,则本发明实施例所提供的方案可有效防止对重复发送的支付请求进行支付。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。