基于区块链的退款方法和装置、电子设备
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于区块链的退款方法和装置、电子设备。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
发明内容
本说明书提出一种基于区块链的退款方法,所述方法应用于支付系统;所述区块链中存证了由收款方发布至所述区块链的退款请求;所述方法包括:
监听所述区块链中存证的与目标账单对应的退款请求;
基于所述退款请求构造智能合约调用交易;
将所述智能合约调用交易发送给所述区块链中的节点设备,以由所述节点设备响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件;
获取所述智能合约针对所述目标账单的校验结果,并在所述校验结果为满足退款条件时,基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
可选地,所述获取所述智能合约针对所述目标账单的校验结果,并在所述校验结果为满足退款条件时,基于所述退款请求中的退款数据,针对所述目标账单进行退款处理,包括:
监听所述智能合约在完成对所述目标账单的校验时生成的校验事件;
确定所述检验事件是否为校验通过事件;
如果所述校验事件为校验通过事件,则基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
可选地,所述基于所述退款请求构造智能合约调用交易之前,所述方法还包括:
基于本地存储的预校验规则,对所述目标账单进行预校验;
如果所述目标账单预校验通过,则进一步地基于所述退款请求构造智能合约调用交易。
可选地,所述预校验规则,包括以下规则中的任意一条或多条:
所述目标账单的收款方的账户是否处于正常状态;
所述目标账单的收款方的账户余额是否超过退款金额。
可选地,所述方法还包括:
在确定针对所述目标账单的退款处理完成时,生成对应于所述目标账单的退款处理结果;
将所述退款处理结果发布至所述区块链进行存证。
可选地,所述将生成的退款处理结果发布至所述区块链进行存证,包括:
生成对应于所述区块链中存证的所述退款请求的哈希指针;
将所述退款处理结果以及所述哈希指针发布至所述区块链进行存证。
可选地,所述区块链中存证了与所述目标账单对应的原始账单数据;所述退款数据包括账单标识;
所述基于所述退款请求构造智能合约调用交易,包括:
基于本地存储的账单标识与所述区块链中存证的原始账单数据的哈希指针之间的对应关系,确定与所述退款请求中的账单标识对应的哈希指针;
基于所述退款请求以及所述哈希指针构造智能合约调用交易。
可选地,所述将所述智能合约调用交易发送给所述区块链中的节点设备,以由所述节点设备响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件,包括:
将所述智能合约调用交易发送给所述区块链中的节点设备,以由所述节点设备基于所述智能合约调用交易中的哈希指针,查找所述区块链中存证的与所述目标账单对应的原始账单数据,并基于所述原始账单数据以及所述退款请求中的退款数据,校验所述目标账单是否满足退款条件。
可选地,所述原始账单数据以单向链表的形式在所述区块链中存证;所述哈希指针对应于所述单向链表的尾节点。
可选地,所述原始账单数据包括:账单创建数据;账单支付数据;以及收款确认数据;
其中,所述账单支付数据,通过与所述账单创建数据对应的哈希指针链接至所述账单创建数据;
所述收款确认数据,通过与所述账单支付数据对应的哈希指针链接至所述账单支付数据;所述收款确认数据为所述单向链表的尾节点。
可选地,所述方法还包括:
在确定针对所述目标账单的退款处理完成时,生成对应于所述目标账单的退款处理结果;
将所述退款处理结果,以及与所述退款请求中的账单标识对应的哈希指针,发布至所述区块链进行存证,以将所述退款处理结果作为所述单向链表的尾节点链接到所述单向链表上。
可选地,所述将所述退款处理结果,以及与所述退款请求中的账单标识对应的哈希指针,发布至所述区块链进行存证之后,所述方法还包括:
生成对应于所述区块链中存证的所述退款处理结果的哈希指针;
将所述对应关系中与所述退款请求中的账单标识对应的哈希指针更新为生成的所述哈希指针。
可选地,所述退款条件,包括以下条件中的任意一条或多条:
所述目标账单的收款方是否命中允许退款的收款方列表;
针对所述目标账单的退款时间是否命中允许退款的时间范围;
针对所述目标账单的退款金额是否命中允许退款的金额范围;
针对所述目标账单的退款金额与支付金额是否一致;
所述目标账单的收款方是否已经确认收款。
本说明书还提出一种基于区块链的退款方法,所述方法应用于所述区块链中的节点设备;所述区块链中存证了由收款方发布至所述区块链的退款请求;所述方法包括:
接收支付系统发送的智能合约调用交易;其中,所述智能合约调用交易由所述支付系统在监听到所述区块链中存证的与目标账单对应的退款请求时,基于所述退款请求构造;
响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件;
向所述支付系统发布所述智能合约针对所述目标账单的校验结果,以由所述支付系统在确定所述校验结果为满足退款条件时,针对所述目标账单进行退款处理。
可选地,所述向所述支付系统发布所述智能合约针对所述目标账单的校验结果,以由所述支付系统在确定所述校验结果为满足退款条件时,针对所述目标账单进行退款处理,包括:
通过所述智能合约在完成对所述目标账单的校验时生成校验事件,以由所述支付系统在确定监听到的所述校验事件为校验通过事件时,基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
可选地,所述区块链中存证了与所述目标账单对应的原始账单数据;
所述校验所述目标账单是否满足退款条件,包括:
查找所述区块链中存证的与所述目标账单对应的原始账单数据;
基于所述原始账单数据以及所述退款请求中的退款数据,校验所述目标账单是否满足退款条件。
可选地,所述智能合约调用交易还包括哈希指针;其中,所述哈希指针为所述支付系统基于本地存储的账单标识与所述区块链中存证的原始账单数据的哈希指针之间的对应关系,确定的与所述退款请求中的账单标识对应的哈希指针;
所述查找所述区块链中存证的与所述目标账单对应的原始账单数据,包括:
基于所述智能合约调用交易中的所述哈希指针,查找所述区块链中存证的与所述目标账单对应的原始账单数据。
可选地,所述原始账单数据以单向链表的形式在所述区块链中存证;所述哈希指针对应于所述单向链表的尾节点。
可选地,所述原始账单数据包括:账单创建数据;账单支付数据;以及收款确认数据;
其中,所述账单支付数据,通过与所述账单创建数据对应的哈希指针链接至所述账单创建数据;
所述收款确认数据,通过与所述账单支付数据对应的哈希指针链接至所述账单支付数据;所述收款确认数据为所述单向链表的尾节点。
可选地,所述退款条件,包括以下条件中的任意一条或多条:
所述目标账单的收款方是否命中允许退款的收款方列表;
针对所述目标账单的退款时间是否命中允许退款的时间范围;
针对所述目标账单的退款金额是否命中允许退款的金额范围;
针对所述目标账单的退款金额与支付金额是否一致;
所述目标账单的收款方是否已经确认收款。
本说明书还提出一种基于区块链的退款装置,所述装置应用于支付系统;所述区块链中存证了由收款方发布至所述区块链的退款请求;所述装置包括:
监听模块,用于监听所述区块链中存证的与目标账单对应的退款请求;
构造模块,用于基于所述退款请求构造智能合约调用交易;
发送模块,用于将所述智能合约调用交易发送给所述区块链中的节点设备,以由所述节点设备响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件;
退款模块,用于获取所述智能合约针对所述目标账单的校验结果,并在所述校验结果为满足退款条件时,基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
可选地,所述退款模块具体用于:
监听所述智能合约在完成对所述目标账单的校验时生成的校验事件;
确定所述检验事件是否为校验通过事件;
如果所述校验事件为校验通过事件,则基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
可选地,所述装置还包括:
预校验模块,用于在基于所述退款请求构造智能合约调用交易之前,基于本地存储的预校验规则,对所述目标账单进行预校验;
所述构造模块具体用于:
如果所述目标账单预校验通过,则进一步地基于所述退款请求构造智能合约调用交易。
可选地,所述预校验规则,包括以下规则中的任意一条或多条:
所述目标账单的收款方的账户是否处于正常状态;
所述目标账单的收款方的账户余额是否超过退款金额。
可选地,所述装置还包括:
第一生成模块,用于在确定针对所述目标账单的退款处理完成时,生成对应于所述目标账单的退款处理结果;
第一存证模块,用于将所述退款处理结果发布至所述区块链进行存证。
可选地,所述第一存证模块具体用于:
生成对应于所述区块链中存证的所述退款请求的哈希指针;
将所述退款处理结果以及所述哈希指针发布至所述区块链进行存证。
可选地,所述区块链中存证了与所述目标账单对应的原始账单数据;所述退款数据包括账单标识;
所述构造模块具体用于:
基于本地存储的账单标识与所述区块链中存证的原始账单数据的哈希指针之间的对应关系,确定与所述退款请求中的账单标识对应的哈希指针;
基于所述退款请求以及所述哈希指针构造智能合约调用交易。
可选地,所述发送模块具体用于:
将所述智能合约调用交易发送给所述区块链中的节点设备,以由所述节点设备基于所述智能合约调用交易中的哈希指针,查找所述区块链中存证的与所述目标账单对应的原始账单数据,并基于所述原始账单数据以及所述退款请求中的退款数据,校验所述目标账单是否满足退款条件。
可选地,所述原始账单数据以单向链表的形式在所述区块链中存证;所述哈希指针对应于所述单向链表的尾节点。
可选地,所述原始账单数据包括:账单创建数据;账单支付数据;以及收款确认数据;
其中,所述账单支付数据,通过与所述账单创建数据对应的哈希指针链接至所述账单创建数据;
所述收款确认数据,通过与所述账单支付数据对应的哈希指针链接至所述账单支付数据;所述收款确认数据为所述单向链表的尾节点。
可选地,所述装置还包括:
第二生成模块,用于在确定针对所述目标账单的退款处理完成时,生成对应于所述目标账单的退款处理结果;
第二存证模块,用于将所述退款处理结果,以及与所述退款请求中的账单标识对应的哈希指针,发布至所述区块链进行存证,以将所述退款处理结果作为所述单向链表的尾节点链接到所述单向链表上。
可选地,所述装置还包括:
第三生成模块,用于在将所述退款处理结果,以及与所述退款请求中的账单标识对应的哈希指针,发布至所述区块链进行存证之后,生成对应于所述区块链中存证的所述退款处理结果的哈希指针;
更新模块,用于将所述对应关系中与所述退款请求中的账单标识对应的哈希指针更新为生成的所述哈希指针。
可选地,所述退款条件,包括以下条件中的任意一条或多条:
所述目标账单的收款方是否命中允许退款的收款方列表;
针对所述目标账单的退款时间是否命中允许退款的时间范围;
针对所述目标账单的退款金额是否命中允许退款的金额范围;
针对所述目标账单的退款金额与支付金额是否一致;
所述目标账单的收款方是否已经确认收款。
本说明书还提出一种基于区块链的退款装置,所述装置应用于所述区块链中的节点设备;所述区块链中存证了由收款方发布至所述区块链的退款请求;所述装置包括:
接收模块,用于接收支付系统发送的智能合约调用交易;其中,所述智能合约调用交易由所述支付系统在监听到所述区块链中存证的与目标账单对应的退款请求时,基于所述退款请求构造;
校验模块,用于响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件;
发布模块,用于向所述支付系统发布所述智能合约针对所述目标账单的校验结果,以由所述支付系统在确定所述校验结果为满足退款条件时,针对所述目标账单进行退款处理。
可选地,所述发布模块具体用于:
通过所述智能合约在完成对所述目标账单的校验时生成校验事件,以由所述支付系统在确定监听到的所述校验事件为校验通过事件时,基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
可选地,所述区块链中存证了与所述目标账单对应的原始账单数据;
所述校验模块具体用于:
查找所述区块链中存证的与所述目标账单对应的原始账单数据;
基于所述原始账单数据以及所述退款请求中的退款数据,校验所述目标账单是否满足退款条件。
可选地,所述智能合约调用交易还包括哈希指针;其中,所述哈希指针为所述支付系统基于本地存储的账单标识与所述区块链中存证的原始账单数据的哈希指针之间的对应关系,确定的与所述退款请求中的账单标识对应的哈希指针;
所述校验模块具体用于:
基于所述智能合约调用交易中的所述哈希指针,查找所述区块链中存证的与所述目标账单对应的原始账单数据。
可选地,所述原始账单数据以单向链表的形式在所述区块链中存证;所述哈希指针对应于所述单向链表的尾节点。
可选地,所述原始账单数据包括:账单创建数据;账单支付数据;以及收款确认数据;
其中,所述账单支付数据,通过与所述账单创建数据对应的哈希指针链接至所述账单创建数据;
所述收款确认数据,通过与所述账单支付数据对应的哈希指针链接至所述账单支付数据;所述收款确认数据为所述单向链表的尾节点。
可选地,所述退款条件,包括以下条件中的任意一条或多条:
所述目标账单的收款方是否命中允许退款的收款方列表;
针对所述目标账单的退款时间是否命中允许退款的时间范围;
针对所述目标账单的退款金额是否命中允许退款的金额范围;
针对所述目标账单的退款金额与支付金额是否一致;
所述目标账单的收款方是否已经确认收款。
本说明书还提出一种电子设备,包括:
处理器;
用于存储机器可执行指令的存储器;
其中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
监听所述区块链中存证的与目标账单对应的退款请求;
基于所述退款请求构造智能合约调用交易;
将所述智能合约调用交易发送给所述区块链中的节点设备,以由所述节点设备响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件;
获取所述智能合约针对所述目标账单的校验结果,并在所述校验结果为满足退款条件时,基于所述退款请求中的退款数据,针对所述目标账单进行退款处理;
其中,所述区块链中存证了由收款方发布至所述区块链的退款请求。
本说明书还提出一种电子设备,包括:
处理器;
用于存储机器可执行指令的存储器;
其中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收支付系统发送的智能合约调用交易;其中,所述智能合约调用交易由所述支付系统在监听到所述区块链中存证的与目标账单对应的退款请求时,基于所述退款请求构造;
响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件;
向所述支付系统发布所述智能合约针对所述目标账单的校验结果,以由所述支付系统在确定所述校验结果为满足退款条件时,针对所述目标账单进行退款处理;
其中,所述区块链中存证了由收款方发布至所述区块链的退款请求。
在上述技术方案中,由于可以将与目标账单对应的退款请求发布至区块链进行存证,并通过部署在区块链上的智能合约,校验目标账单是否满足退款条件,以在目标账单满足退款条件时,针对目标账单进行退款,因此一方面可以保证退款请求的真实性以及可靠性,且可以对退款请求进行溯源,另一方面由于可以对与退款请求对应的目标账单进行实时校验,因此可以提高退款效率。
附图说明
图1是本说明书一示例性实施例示出的一种基于区块链的退款系统的示意图;
图2是本说明书一示例性实施例示出的一种基于区块链的退款方法的流程图;
图3是本说明书一示例性实施例示出的一种单向链表的示意图;
图4是本说明书一示例性实施例示出的另一种基于区块链的退款方法的流程图;
图5是本说明书一示例性实施例示出的一种基于区块链的退款装置所在电子设备的硬件结构图;
图6是本说明书一示例性实施例示出的一种基于区块链的退款装置的框图;
图7是本说明书一示例性实施例示出的另一种基于区块链的退款装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本说明书旨在提供一种基于区块链中存证的退款请求,对区块链中存证的与该退款请求对应的账单进行校验,以确定该账单是否满足退款条件,并在该账单满足退款条件时,自动针对该账单进行退款处理的技术方案。
在具体实现时,如果需要针对某个账单进行退款,则该账单的收款方可以将与该账单对应的退款请求发布至区块链进行存证;支付系统则可以监听区块链中存证的该退款请求,并基于该退款请求构造智能合约调用交易。
区块链中的节点设备可以接收到由支付系统发送的该智能合约调用交易,并响应于该智能合约调用交易,调用部署在区块链上的智能合约中声明的退款校验逻辑,校验该账单是否满足退款条件。
支付系统可以获取到智能合约针对该账单的校验结果,并在该校验结果为该账单满足退款条件时,针对该账单进行退款处理。
在本说明书中描述的区块链,具体可以包括任意类型的区块链网络;例如,在实际应用中,可以采用共有链、私有链、或者联盟链中的任意一种。
其中,区块链中的交易,存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块链发布的一笔具有业务意图的业务数据;例如,运营方可以基于实际的业务需求搭建一个联盟链,依托于联盟链部署一些与价值转移无关的其它类型的在线业务(比如,租房业务、车辆调度业务、保险理赔业务、信用服务、医疗服务等),而在这类联盟链中,交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求。
在上述技术方案中,由于可以将与目标账单对应的退款请求发布至区块链进行存证,并通过部署在区块链上的智能合约,校验目标账单是否满足退款条件,以在目标账单满足退款条件时,针对目标账单进行退款,因此一方面可以保证退款请求的真实性以及可靠性,且可以对退款请求进行溯源,另一方面由于可以对与退款请求对应的目标账单进行实时校验,因此可以提高退款效率。
请参考图1,图1是本说明书一示例性实施例示出的一种基于区块链的退款系统的示意图。
在图1所示的基于区块链的退款系统中,收款方可以是创建账单的机构,付款方可以是对该账单进行支付的用户,例如:收款方可以是缴费机构,付款方可以是缴纳水费和电费等费用的用户;或者,收款方可以是银行,付款方可以是进行信用卡还款的用户。
如果收款方需要向付款方收取一笔费用,则收款方可以创建一个与付款方对应的账单,并将相应的账单创建数据发布至区块链进行存证;其中,账单创建数据可以包括账单流水号、收款账户、付款账户、应收款金额以及账单创建时刻等数据。付款方可以通过支付系统针对该账单向收款方进行支付。支付系统在确定付款方完成支付后,一方面,可以将该账单的账单支付数据发布至区块链进行存证;其中,账单支付数据可以包括账单流水号、付款账户、收款账户、支付金额以及支付时刻等数据;另一方面,可以向收款方发布针对该账单的收款确认通知。收款方在确认收款后,可以将该账单的收款确认数据发布至区块链进行存证;其中,收款确认数据可以包括账单流水号、收款账户、付款账户、收款金额以及收款时刻等数据。
在实际应用中,支付系统可以将该收款确认通知发布至区块链进行存证,收款方则可以在监听到区块链中存证的该收款确认通知时,针对该账单进行收款确认,以将收款确认数据发布至区块链进行存证。
需要说明的是,支付系统可以是搭载在区块链中的节点设备上的软件系统,也可以是搭载在与区块链中的节点设备之间建立连接的服务器上的软件系统,本说明书对此不作限制。
请参考图2,图2是本说明书一示例性实施例示出的一种基于区块链的退款方法的流程图。该方法可以应用于图1所示的支付系统,包括以下步骤:
步骤202,监听所述区块链中存证的与目标账单对应的退款请求。
步骤204,基于所述退款请求构造智能合约调用交易。
步骤206,将所述智能合约调用交易发送给所述区块链中的节点设备,以由所述节点设备响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件。
步骤208,获取所述智能合约针对所述目标账单的校验结果,并在所述校验结果为满足退款条件时,基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
在本实施例中,如果收款方需要向付款方收取一笔费用,则收款方可以创建一个与付款方对应的账单(称为目标账单),并将与目标账单对应的账单创建数据发布至区块链进行存证;其中,账单创建数据可以包括账单流水号、收款账户、付款账户以及应收款金额等数据,本说明书对此不作限制。
付款方可以通过支付系统针对目标账单向收款方进行支付,支付系统在确定付款方完成支付后,一方面,可以生成与目标账单对应的账单支付数据,并将该账单支付数据发布至区块链进行存证;其中,账单支付数据可以包括账单流水号、支付金额以及支付时刻等数据,本说明书对比不作限制。
举例来说,付款方可以通过支付系统向收款方进行支付,支付系统在从付款方的账户余额中扣除了相应的金额后,可以确定付款方完成支付,从而可以生成与目标账单对应的账单支付数据,并将该账单支付数据发布至区块链进行存证。
另一方面,支付系统可以向收款方发布针对目标账单的收款确认通知。收款方在确认收款后,可以生成与目标账单对应的收款确认数据,并将该收款确认数据发布至区块链进行存证;其中,收款确认数据可以包括账单流水号、收款金额以及收款时刻等数据,本说明书对此不作限制。
举例来说,支付系统在确定付款方完成支付后,可以向收款方发布针对目标账单的收款确认通知。收款方在接收到该收款确认通知后,可以针对目标账单进行收款确认,例如:确认收款金额与支付金额是否相等;确认是否已对该支付订单进行销账处理等。收款方在确认收款后,可以生成与目标账单对应的收款确认数据,并将该收款确认数据发布至区块链进行存证。
在示出的一种实施方式中,可以将上述账单创建数据、账单支付数据以及收款确认数据统称为与目标账单对应的原始账单数据。在实际应用中,原始账单数据还可以包括其他与账单相关的数据,本说明书对此不作限制。
具体的,请参考图3,与目标账单对应的原始账单数据可以以单向链表的形式在区块链中存证。
举例来说,支付系统可以基于区块链中存证的与目标账单对应的账单创建数据,以及该账单创建数据在区块链中的存储地址进行哈希计算,并将与目标账单对应的账单支付数据与计算得到的哈希值一起发布至区块链进行存证。采用这样的方式,可以将该哈希值作为哈希指针,使区块链中存证的与目标账单对应的账单支付数据通过该哈希指针链接至与目标账单对应的账单创建数据。
类似地,收款方可以基于区块链中存证的与目标账单对应的账单支付数据,以及该账单支付数据在区块链中的存储地址进行哈希计算,并将与目标账单对应的收款确认数据与计算得到的哈希值一起发布至区块链进行存证。采用这样的方式,可以将该哈希值作为哈希指针,使区块链中存证的与目标账单对应的收款确认数据通过该哈希指针链接至与目标账单对应的账单支付数据。
如图3所示,在以单向链表的形式在区块链中存证的目标数据的原始账单数据中,账单创建数据为该单向链表的首节点,收款确认数据为该单项链表的尾节点。
在本实施例中,针对目标账单,如果收款方在已经确认收款后,由于某些业务问题导致需要将收款退还给付款方,则收款方可以发起与目标账单对应的退款请求,并将该退款请求发布至区块链进行存证。
支付系统可以对区块链中的区块进行监听。支付系统在监听到区块链中存证的与目标账单对应的退款请求时,可以基于该退款请求构造智能合约调用交易,并将构造的该智能合约调用交易发送给区块链中的节点设备。
区块链中的节点设备在接收到该智能合约调用交易后,可以对该智能合约调用交易进行响应,从而可以调用部署在区块链上的智能合约中声明的退款校验逻辑,校验目标账单是否满足退款条件。
其中,退款校验逻辑具体可以是声明在该智能合约中的,与校验账单是否满足退款条件的执行逻辑相关的程序代码(例如:一些可供调用的程序方法或者函数);退款条件可以由相关责任人自行设置,也可以是默认的缺省值,本说明书对此不作限制。
具体地,上述退款请求中的退款数据可以包括目标账单的账单标识(例如:账单流水号);支付系统中存储了账单标识与区块链中存证的原始账单数据的哈希指针的对应关系。在这种情况下,支付系统在监听到区块链中存证的与目标账单对应的退款请求时,可以基于本地存储的该对应关系,确定与该退款请求中的账单标识对应的哈希指针。
后续,支付系统可以基于该退款请求,以及该哈希指针构造智能合约调用交易,并将构造的该智能合约调用交易发送给区块链中的节点设备。
区块链中的节点设备在接收到该智能合约调用交易后,可以对该智能合约调用交易进行响应,从而可以先基于该智能合约调用交易中的哈希指针,查找区块链中存证的与目标账单对应的原始账单数据;再基于查找到的该原始账单数据,以及该退款请求中的退款数据,校验目标账单是否满足退款条件。
对于以单向链表形式在区块链中存证的原始账单数据而言,上述哈希指针可以对应于包括上述原始账单数据的单向链表的尾节点。
请继续参考图3,以图3所示的单向链表为例,该哈希指针可以对应于区块链中存证的收款确认数据,即可以基于该哈希指针查找到区块链中存证的收款确认数据;进一步地可以基于区块链中与收款确认数据一起存证的哈希指针,查找到区块链中存证的账单支付数据;再进一步地可以基于区块链中与账单支付数据一起存证的哈希指针,查找到区块链中存证的账单创建数据。
在示出的一种实施方式中,上述退款条件可以包括以下条件中的任意一条或多条:目标账单的收款方是否命中允许退款的收款方列表;针对目标账单的退款时间是否命中允许退款的时间范围;针对目标账单的退款金额是否命中允许退款的金额范围;针对目标账单的退款金额与支付金额是否一致;目标账单的收款方是否已经确认收款。
在示出的一种实施方式中,支付系统在监听到区块链中存证的与目标账单对应的退款请求时,可以先基于本地存储的预校验规则,对目标账单进行预校验。
其中,预校验规则可以由相关责任人自行设置,也可以是默认的缺省值,本说明书对此不作限制。具体地,预校验规则可以包括以下规则中的任意一条或多条:目标账单的收款方的账户是否处于正常状态;目标账单的收款方的账户余额是否超过退款金额。在实际应用中,还可以根据需求设定其他预校验规则,本说明书在此不再赘述。
如果目标账单预校验通过,再进一步地基于该退款请求构造智能合约调用交易,并将构造的该智能合约调用交易发送给区块链中的节点设备,以由区块链中的节点设备响应于该智能合约调用交易,调用部署在区块链上的智能合约中声明的退款校验逻辑,校验目标账单是否满足退款条件。采用这样的方式,可以通过支付系统先过滤掉一部分不满足退款条件的账单,以减少需要由区块链中的节点设备调用智能合约进行校验的账单数量,节省设备资源,并提高处理效率。
后续,支付系统可以获取上述智能合约针对目标账单的校验结果,并在该校验结果为满足退款条件时,针对目标订单进行退款处理。
在示出的一种实施方式中,区块链中的节点设备可以调用上述智能合约进行支付订单校验,该智能合约可以在完成对目标账单的校验时,生成校验事件。支付系统可以对智能合约生成的校验事件进行监听,并确定监听到的校验事件是否为校验通过事件。如果确定该校验事件为校验通过事件,则支付系统可以针对目标账单进行退款处理。
举例来说,支付系统可以基于与目标账单对应的账单支付数据中的支付金额,将该支付金额退还至付款方的账户余额。
在示出的一种实施方式中,为了避免重复对账单进行退款处理,支付系统在完成针对上述目标账单的退款处理时,可以生成与目标账单对应的退款处理结果,并将该退款处理结果发布至区块链进行存证;其中,退款处理结果可以包括账单流水号、退款金额以及退款时刻等数据,本说明书对此不作限制。
举例来说,支付系统在将与目标账单对应的账单支付数据中的支付金额退还至付款方的账户余额后,可以确定完成针对目标账单的退款处理,从而可以生成与目标账单对应的退款处理结果,并将该退款处理结果发布至区块链进行存证。
在示出的一种实施方式中,支付系统可以基于区块链中存证的与目标账单对应的退款请求,以及该退款请求在区块链中的存储地址进行哈希计算,并将与目标账单对应的退款处理结果与计算得到的哈希值一起发布至区块链进行存证。采用这样的方式,可以将该哈希值作为哈希指针,使区块链中存证的与目标账单对应的退款处理结果通过该哈希指针链接至与目标账单对应的退款请求,即将与目标账单对应的退款请求和退款处理结果以单向链表的形式在区块链中存证。后续,可以通过遍历链表的方式,直接获取到互相对应的退款请求和退款处理结果。
在示出的一种实施方式中,支付系统可以将与目标账单对应的退款处理结果,以及与上述退款请求中的账单标识对应的哈希指针,一起发布至区块链进行存证。由于该退款请求中的账单标识对应的哈希指针,是与包括与目标账单对应的原始账单数据的单向链表的尾节点对应的,因此采用这样的方式,可以使区块链中存证的与目标账单对应的退款处理结果通过该哈希指针,作为该单向链表的新的尾节点,链接到该单向链表上。
另一方面,支付系统可以生成对应于区块链中存证的与目标账单对应的退款处理结果的哈希指针,并将上述对应关系中与该退款请求中的账单标识对应的哈希指针,更新为新生成的该哈希指针。
在上述技术方案中,由于可以将与目标账单对应的退款请求发布至区块链进行存证,并通过部署在区块链上的智能合约,校验目标账单是否满足退款条件,以在目标账单满足退款条件时,针对目标账单进行退款,因此一方面可以保证退款请求的真实性以及可靠性,且可以对退款请求进行溯源,另一方面由于可以对与退款请求对应的目标账单进行实时校验,因此可以提高退款效率。
请参考图4,图4是本说明书一示例性实施例示出的另一种基于区块链的退款方法的流程图。该方法可以应用于图1所示的区块链中的节点设备,包括以下步骤:
步骤402,接收支付系统发送的智能合约调用交易;其中,所述智能合约调用交易由所述支付系统在监听到所述区块链中存证的与目标账单对应的退款请求时,基于所述退款请求构造。
步骤404,响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件。
步骤406,向所述支付系统发布所述智能合约针对所述目标账单的校验结果,以由所述支付系统在确定所述校验结果为满足退款条件时,针对所述目标账单进行退款处理。
在本实施例中,如果收款方需要向付款方收取一笔费用,则收款方可以创建一个与付款方对应的账单(称为目标账单),并将与目标账单对应的账单创建数据发布至区块链进行存证;其中,账单创建数据可以包括账单流水号、收款账户、付款账户以及应收款金额等数据,本说明书对此不作限制。
付款方可以通过支付系统针对目标账单向收款方进行支付,支付系统在确定付款方完成支付后,一方面,可以生成与目标账单对应的账单支付数据,并将该账单支付数据发布至区块链进行存证;其中,账单支付数据可以包括账单流水号、支付金额以及支付时刻等数据,本说明书对比不作限制。
另一方面,支付系统可以向收款方发布针对目标账单的收款确认通知。收款方在确认收款后,可以生成与目标账单对应的收款确认数据,并将该收款确认数据发布至区块链进行存证;其中,收款确认数据可以包括账单流水号、收款金额以及收款时刻等数据,本说明书对此不作限制。
在示出的一种实施方式中,可以将上述账单创建数据、账单支付数据以及收款确认数据统称为与目标账单对应的原始账单数据。在实际应用中,原始账单数据还可以包括其他与账单相关的数据,本说明书对此不作限制。
具体的,与目标账单对应的原始账单数据可以以单向链表的形式在区块链中存证。
举例来说,支付系统可以基于区块链中存证的与目标账单对应的账单创建数据,以及该账单创建数据在区块链中的存储地址进行哈希计算,并将与目标账单对应的账单支付数据与计算得到的哈希值一起发布至区块链进行存证。采用这样的方式,可以将该哈希值作为哈希指针,使区块链中存证的与目标账单对应的账单支付数据通过该哈希指针链接至与目标账单对应的账单创建数据。
类似地,收款方可以基于区块链中存证的与目标账单对应的账单支付数据,以及该账单支付数据在区块链中的存储地址进行哈希计算,并将与目标账单对应的收款确认数据与计算得到的哈希值一起发布至区块链进行存证。采用这样的方式,可以将该哈希值作为哈希指针,使区块链中存证的与目标账单对应的收款确认数据通过该哈希指针链接至与目标账单对应的账单支付数据。
在这种情况下,在以单向链表的形式在区块链中存证的目标数据的原始账单数据中,账单创建数据为该单向链表的首节点,收款确认数据为该单项链表的尾节点。
在本实施例中,针对目标账单,如果收款方在已经确认收款后,由于某些业务问题导致需要将收款退还给付款方,则收款方可以发起与目标账单对应的退款请求,并将该退款请求发布至区块链进行存证。
支付系统可以对区块链中的区块进行监听。支付系统在监听到区块链中存证的与目标账单对应的退款请求时,可以基于该退款请求构造智能合约调用交易,并将构造的该智能合约调用交易发送给区块链中的节点设备。
区块链中的节点设备在接收到该智能合约调用交易后,可以对该智能合约调用交易进行响应,从而可以调用部署在区块链上的智能合约中声明的退款校验逻辑,校验目标账单是否满足退款条件。
其中,退款校验逻辑具体可以是声明在该智能合约中的,与校验账单是否满足退款条件的执行逻辑相关的程序代码(例如:一些可供调用的程序方法或者函数);退款条件可以由相关责任人自行设置,也可以是默认的缺省值,本说明书对此不作限制。
具体地,上述退款请求中的退款数据可以包括目标账单的账单标识(例如:账单流水号);支付系统中存储了账单标识与区块链中存证的原始账单数据的哈希指针的对应关系。在这种情况下,支付系统在监听到区块链中存证的与目标账单对应的退款请求时,可以基于本地存储的该对应关系,确定与该退款请求中的账单标识对应的哈希指针。
后续,支付系统可以基于该退款请求,以及该哈希指针构造智能合约调用交易,并将构造的该智能合约调用交易发送给区块链中的节点设备。
区块链中的节点设备在接收到该智能合约调用交易后,可以对该智能合约调用交易进行响应,从而可以先基于该智能合约调用交易中的哈希指针,查找区块链中存证的与目标账单对应的原始账单数据;再基于查找到的该原始账单数据,以及该退款请求中的退款数据,校验目标账单是否满足退款条件。
对于以单向链表形式在区块链中存证的原始账单数据而言,上述哈希指针可以对应于包括上述原始账单数据的单向链表的尾节点。
以上述单向链表为例,该哈希指针可以对应于区块链中存证的收款确认数据,即可以基于该哈希指针查找到区块链中存证的收款确认数据;进一步地可以基于区块链中与收款确认数据一起存证的哈希指针,查找到区块链中存证的账单支付数据;再进一步地可以基于区块链中与账单支付数据一起存证的哈希指针,查找到区块链中存证的账单创建数据。
在示出的一种实施方式中,上述退款条件可以包括以下条件中的任意一条或多条:目标账单的收款方是否命中允许退款的收款方列表;针对目标账单的退款时间是否命中允许退款的时间范围;针对目标账单的退款金额是否命中允许退款的金额范围;针对目标账单的退款金额与支付金额是否一致;目标账单的收款方是否已经确认收款。
在示出的一种实施方式中,支付系统在监听到区块链中存证的与目标账单对应的退款请求时,可以先基于本地存储的预校验规则,对目标账单进行预校验。
其中,预校验规则可以由相关责任人自行设置,也可以是默认的缺省值,本说明书对此不作限制。具体地,预校验规则可以包括以下规则中的任意一条或多条:目标账单的收款方的账户是否处于正常状态;目标账单的收款方的账户余额是否超过退款金额。在实际应用中,还可以根据需求设定其他预校验规则,本说明书在此不再赘述。
如果目标账单预校验通过,再进一步地基于该退款请求构造智能合约调用交易,并将构造的该智能合约调用交易发送给区块链中的节点设备,以由区块链中的节点设备响应于该智能合约调用交易,调用部署在区块链上的智能合约中声明的退款校验逻辑,校验目标账单是否满足退款条件。采用这样的方式,可以通过支付系统先过滤掉一部分不满足退款条件的账单,以减少需要由区块链中的节点设备调用智能合约进行校验的账单数量,节省设备资源,并提高处理效率。
后续,支付系统可以获取上述智能合约针对目标账单的校验结果,并在该校验结果为满足退款条件时,针对目标订单进行退款处理。
在示出的一种实施方式中,区块链中的节点设备可以调用上述智能合约进行支付订单校验,该智能合约可以在完成对目标账单的校验时,生成校验事件。支付系统可以对智能合约生成的校验事件进行监听,并确定监听到的校验事件是否为校验通过事件。如果确定该校验事件为校验通过事件,则支付系统可以针对目标账单进行退款处理。
在示出的一种实施方式中,为了避免重复对账单进行退款处理,支付系统在完成针对上述目标账单的退款处理时,可以生成与目标账单对应的退款处理结果,并将该退款处理结果发布至区块链进行存证;其中,退款处理结果可以包括账单流水号、退款金额以及退款时刻等数据,本说明书对此不作限制。
在示出的一种实施方式中,支付系统可以基于区块链中存证的与目标账单对应的退款请求,以及该退款请求在区块链中的存储地址进行哈希计算,并将与目标账单对应的退款处理结果与计算得到的哈希值一起发布至区块链进行存证。采用这样的方式,可以将该哈希值作为哈希指针,使区块链中存证的与目标账单对应的退款处理结果通过该哈希指针链接至与目标账单对应的退款请求,即将与目标账单对应的退款请求和退款处理结果以单向链表的形式在区块链中存证。后续,可以通过遍历链表的方式,直接获取到互相对应的退款请求和退款处理结果。
在示出的一种实施方式中,支付系统可以将与目标账单对应的退款处理结果,以及与上述退款请求中的账单标识对应的哈希指针,一起发布至区块链进行存证。由于该退款请求中的账单标识对应的哈希指针,是与包括与目标账单对应的原始账单数据的单向链表的尾节点对应的,因此采用这样的方式,可以使区块链中存证的与目标账单对应的退款处理结果通过该哈希指针,作为该单向链表的新的尾节点,链接到该单向链表上。
另一方面,支付系统可以生成对应于区块链中存证的与目标账单对应的退款处理结果的哈希指针,并将上述对应关系中与该退款请求中的账单标识对应的哈希指针,更新为新生成的该哈希指针。
在上述技术方案中,由于可以将与目标账单对应的退款请求发布至区块链进行存证,并通过部署在区块链上的智能合约,校验目标账单是否满足退款条件,以在目标账单满足退款条件时,针对目标账单进行退款,因此一方面可以保证退款请求的真实性以及可靠性,且可以对退款请求进行溯源,另一方面由于可以对与退款请求对应的目标账单进行实时校验,因此可以提高退款效率。
与前述基于区块链的退款方法的实施例相对应,本说明书还提供了基于区块链的退款装置的实施例。
本说明书基于区块链的退款装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本说明书基于区块链的退款装置所在电子设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该基于区块链的退款的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图6,图6是本说明书一示例性实施例示出的一种基于区块链的退款装置的框图。该装置60可以应用于图5所示的电子设备上搭载的支付系统;所述区块链中存证了由收款方发布至所述区块链的退款请求;所述装置60可以包括:
监听模块601,用于监听所述区块链中存证的与目标账单对应的退款请求;
构造模块602,用于基于所述退款请求构造智能合约调用交易;
发送模块603,用于将所述智能合约调用交易发送给所述区块链中的节点设备,以由所述节点设备响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件;
退款模块604,用于获取所述智能合约针对所述目标账单的校验结果,并在所述校验结果为满足退款条件时,基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
在本实施例中,所述退款模块604具体可以用于:
监听所述智能合约在完成对所述目标账单的校验时生成的校验事件;
确定所述检验事件是否为校验通过事件;
如果所述校验事件为校验通过事件,则基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
在本实施例中,所述装置60还可以包括:
预校验模块605,用于在基于所述退款请求构造智能合约调用交易之前,基于本地存储的预校验规则,对所述目标账单进行预校验;
所述构造模块602具体可以用于:
如果所述目标账单预校验通过,则进一步地基于所述退款请求构造智能合约调用交易。
在本实施例中,所述预校验规则,包括以下规则中的任意一条或多条:
所述目标账单的收款方的账户是否处于正常状态;
所述目标账单的收款方的账户余额是否超过退款金额。
在本实施例中,所述装置60还可以包括:
第一生成模块606,用于在确定针对所述目标账单的退款处理完成时,生成对应于所述目标账单的退款处理结果;
第一存证模块607,用于将所述退款处理结果发布至所述区块链进行存证。
在本实施例中,所述第一存证模块607具体可以用于:
生成对应于所述区块链中存证的所述退款请求的哈希指针;
将所述退款处理结果以及所述哈希指针发布至所述区块链进行存证。
在本实施例中,所述区块链中存证了与所述目标账单对应的原始账单数据;所述退款数据包括账单标识;
所述构造模块602具体可以用于:
基于本地存储的账单标识与所述区块链中存证的原始账单数据的哈希指针之间的对应关系,确定与所述退款请求中的账单标识对应的哈希指针;
基于所述退款请求以及所述哈希指针构造智能合约调用交易。
在本实施例中,所述发送模块603具体可以用于:
将所述智能合约调用交易发送给所述区块链中的节点设备,以由所述节点设备基于所述智能合约调用交易中的哈希指针,查找所述区块链中存证的与所述目标账单对应的原始账单数据,并基于所述原始账单数据以及所述退款请求中的退款数据,校验所述目标账单是否满足退款条件。
在本实施例中,所述原始账单数据以单向链表的形式在所述区块链中存证;所述哈希指针对应于所述单向链表的尾节点。
在本实施例中,所述原始账单数据包括:账单创建数据;账单支付数据;以及收款确认数据;
其中,所述账单支付数据,通过与所述账单创建数据对应的哈希指针链接至所述账单创建数据;
所述收款确认数据,通过与所述账单支付数据对应的哈希指针链接至所述账单支付数据;所述收款确认数据为所述单向链表的尾节点。
在本实施例中,所述装置60还可以包括:
第二生成模块608,用于在确定针对所述目标账单的退款处理完成时,生成对应于所述目标账单的退款处理结果;
第二存证模块609,用于将所述退款处理结果,以及与所述退款请求中的账单标识对应的哈希指针,发布至所述区块链进行存证,以将所述退款处理结果作为所述单向链表的尾节点链接到所述单向链表上。
在本实施例中,所述装置60还可以包括:
第三生成模块610,用于在将所述退款处理结果,以及与所述退款请求中的账单标识对应的哈希指针,发布至所述区块链进行存证之后,生成对应于所述区块链中存证的所述退款处理结果的哈希指针;
更新模块611,用于将所述对应关系中与所述退款请求中的账单标识对应的哈希指针更新为生成的所述哈希指针。
在本实施例中,所述退款条件,包括以下条件中的任意一条或多条:
所述目标账单的收款方是否命中允许退款的收款方列表;
针对所述目标账单的退款时间是否命中允许退款的时间范围;
针对所述目标账单的退款金额是否命中允许退款的金额范围;
针对所述目标账单的退款金额与支付金额是否一致;
所述目标账单的收款方是否已经确认收款。
请参考图7,图7是本说明书一示例性实施例示出的另一种基于区块链的退款装置的框图。该装置70可以应用于图5所示的电子设备,该电子设备可以是所述区块链中的节点设备;所述区块链中存证了由收款方发布至所述区块链的退款请求;所述装置70可以包括:
接收模块701,用于接收支付系统发送的智能合约调用交易;其中,所述智能合约调用交易由所述支付系统在监听到所述区块链中存证的与目标账单对应的退款请求时,基于所述退款请求构造;
校验模块702,用于响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件;
发布模块703,用于向所述支付系统发布所述智能合约针对所述目标账单的校验结果,以由所述支付系统在确定所述校验结果为满足退款条件时,针对所述目标账单进行退款处理。
在本实施例中,所述发布模块703具体可以用于:
通过所述智能合约在完成对所述目标账单的校验时生成校验事件,以由所述支付系统在确定监听到的所述校验事件为校验通过事件时,基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
在本实施例中,所述区块链中存证了与所述目标账单对应的原始账单数据;
所述校验模块702具体可以用于:
查找所述区块链中存证的与所述目标账单对应的原始账单数据;
基于所述原始账单数据以及所述退款请求中的退款数据,校验所述目标账单是否满足退款条件。
在本实施例中,所述智能合约调用交易还包括哈希指针;其中,所述哈希指针为所述支付系统基于本地存储的账单标识与所述区块链中存证的原始账单数据的哈希指针之间的对应关系,确定的与所述退款请求中的账单标识对应的哈希指针;
所述校验模块702具体可以用于:
基于所述智能合约调用交易中的所述哈希指针,查找所述区块链中存证的与所述目标账单对应的原始账单数据。
在本实施例中,所述原始账单数据以单向链表的形式在所述区块链中存证;所述哈希指针对应于所述单向链表的尾节点。
在本实施例中,所述原始账单数据包括:账单创建数据;账单支付数据;以及收款确认数据;
其中,所述账单支付数据,通过与所述账单创建数据对应的哈希指针链接至所述账单创建数据;
所述收款确认数据,通过与所述账单支付数据对应的哈希指针链接至所述账单支付数据;所述收款确认数据为所述单向链表的尾节点。
在本实施例中,所述退款条件,包括以下条件中的任意一条或多条:
所述目标账单的收款方是否命中允许退款的收款方列表;
针对所述目标账单的退款时间是否命中允许退款的时间范围;
针对所述目标账单的退款金额是否命中允许退款的金额范围;
针对所述目标账单的退款金额与支付金额是否一致;
所述目标账单的收款方是否已经确认收款。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
与上述基于区块链的退款方法实施例相对应,本说明书还提供了一种电子设备的实施例。该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
监听所述区块链中存证的与目标账单对应的退款请求;
基于所述退款请求构造智能合约调用交易;
将所述智能合约调用交易发送给所述区块链中的节点设备,以由所述节点设备响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件;
获取所述智能合约针对所述目标账单的校验结果,并在所述校验结果为满足退款条件时,基于所述退款请求中的退款数据,针对所述目标账单进行退款处理;
其中,所述区块链中存证了由收款方发布至所述区块链的退款请求。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
监听所述智能合约在完成对所述目标账单的校验时生成的校验事件;
确定所述检验事件是否为校验通过事件;
如果所述校验事件为校验通过事件,则基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器还被促使:
在基于所述退款请求构造智能合约调用交易之前,基于本地存储的预校验规则,对所述目标账单进行预校验;
如果所述目标账单预校验通过,则进一步地基于所述退款请求构造智能合约调用交易。
在本实施例中,所述预校验规则,包括以下规则中的任意一条或多条:
所述目标账单的收款方的账户是否处于正常状态;
所述目标账单的收款方的账户余额是否超过退款金额。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器还被促使:
在确定针对所述目标账单的退款处理完成时,生成对应于所述目标账单的退款处理结果;
将所述退款处理结果发布至所述区块链进行存证。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
生成对应于所述区块链中存证的所述退款请求的哈希指针;
将所述退款处理结果以及所述哈希指针发布至所述区块链进行存证。
在本实施例中,所述区块链中存证了与所述目标账单对应的原始账单数据;所述退款数据包括账单标识;
通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
基于本地存储的账单标识与所述区块链中存证的原始账单数据的哈希指针之间的对应关系,确定与所述退款请求中的账单标识对应的哈希指针;
基于所述退款请求以及所述哈希指针构造智能合约调用交易。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
将所述智能合约调用交易发送给所述区块链中的节点设备,以由所述节点设备基于所述智能合约调用交易中的哈希指针,查找所述区块链中存证的与所述目标账单对应的原始账单数据,并基于所述原始账单数据以及所述退款请求中的退款数据,校验所述目标账单是否满足退款条件。
在本实施例中,所述原始账单数据以单向链表的形式在所述区块链中存证;所述哈希指针对应于所述单向链表的尾节点。
在本实施例中,所述原始账单数据包括:账单创建数据;账单支付数据;以及收款确认数据;
其中,所述账单支付数据,通过与所述账单创建数据对应的哈希指针链接至所述账单创建数据;
所述收款确认数据,通过与所述账单支付数据对应的哈希指针链接至所述账单支付数据;所述收款确认数据为所述单向链表的尾节点。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器还被促使:
在确定针对所述目标账单的退款处理完成时,生成对应于所述目标账单的退款处理结果;
将所述退款处理结果,以及与所述退款请求中的账单标识对应的哈希指针,发布至所述区块链进行存证,以将所述退款处理结果作为所述单向链表的尾节点链接到所述单向链表上。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
在将所述退款处理结果,以及与所述退款请求中的账单标识对应的哈希指针,发布至所述区块链进行存证之后,生成对应于所述区块链中存证的所述退款处理结果的哈希指针;
将所述对应关系中与所述退款请求中的账单标识对应的哈希指针更新为生成的所述哈希指针。
在本实施例中,所述退款条件,包括以下条件中的任意一条或多条:
所述目标账单的收款方是否命中允许退款的收款方列表;
针对所述目标账单的退款时间是否命中允许退款的时间范围;
针对所述目标账单的退款金额是否命中允许退款的金额范围;
针对所述目标账单的退款金额与支付金额是否一致;
所述目标账单的收款方是否已经确认收款。
与上述基于区块链的退款方法实施例相对应,本说明书还提供了另一种电子设备的实施例。该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收支付系统发送的智能合约调用交易;其中,所述智能合约调用交易由所述支付系统在监听到所述区块链中存证的与目标账单对应的退款请求时,基于所述退款请求构造;
响应于所述智能合约调用交易,调用部署在所述区块链上的智能合约中声明的退款校验逻辑,校验所述目标账单是否满足退款条件;
向所述支付系统发布所述智能合约针对所述目标账单的校验结果,以由所述支付系统在确定所述校验结果为满足退款条件时,针对所述目标账单进行退款处理;
其中,所述区块链中存证了由收款方发布至所述区块链的退款请求。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
通过所述智能合约在完成对所述目标账单的校验时生成校验事件,以由所述支付系统在确定监听到的所述校验事件为校验通过事件时,基于所述退款请求中的退款数据,针对所述目标账单进行退款处理。
在本实施例中,所述区块链中存证了与所述目标账单对应的原始账单数据;
通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
查找所述区块链中存证的与所述目标账单对应的原始账单数据;
基于所述原始账单数据以及所述退款请求中的退款数据,校验所述目标账单是否满足退款条件。
在本实施例中,所述智能合约调用交易还包括哈希指针;其中,所述哈希指针为所述支付系统基于本地存储的账单标识与所述区块链中存证的原始账单数据的哈希指针之间的对应关系,确定的与所述退款请求中的账单标识对应的哈希指针;
通过读取并执行所述存储器存储的与基于区块链的退款的控制逻辑对应的机器可执行指令,所述处理器被促使:
基于所述智能合约调用交易中的所述哈希指针,查找所述区块链中存证的与所述目标账单对应的原始账单数据。
在本实施例中,所述原始账单数据以单向链表的形式在所述区块链中存证;所述哈希指针对应于所述单向链表的尾节点。
在本实施例中,所述原始账单数据包括:账单创建数据;账单支付数据;以及收款确认数据;
其中,所述账单支付数据,通过与所述账单创建数据对应的哈希指针链接至所述账单创建数据;
所述收款确认数据,通过与所述账单支付数据对应的哈希指针链接至所述账单支付数据;所述收款确认数据为所述单向链表的尾节点。
在本实施例中,所述退款条件,包括以下条件中的任意一条或多条:
所述目标账单的收款方是否命中允许退款的收款方列表;
针对所述目标账单的退款时间是否命中允许退款的时间范围;
针对所述目标账单的退款金额是否命中允许退款的金额范围;
针对所述目标账单的退款金额与支付金额是否一致;
所述目标账单的收款方是否已经确认收款。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其他实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。