跨区域支付方法及装置、电子设备
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种跨区域支付方法及装置、电子设备。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
发明内容
本说明书提出一种跨区域支付方法;其中,跨区域支付系统包括区块链,接入所述区块链的与第一区域对应的客户端,以及接入所述区块链的与第二区域对应的业务服务端;所述区块链中存储了用户在所述第一区域的业务服务端开通的第一用户账户与在所述第二区域的业务服务端开通的第二用户账户之间的对应关系;所述方法应用于所述客户端,包括:
响应于用户的支付操作,查询所述区块链中存储的所述对应关系,确定与用户在所述第一区域的业务服务端中开通的第一用户账户对应的第二用户账户;
确定所述第二用户账户所属的第二区域,并调用所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码;
获取生成的图形编码,并通过预设的支付界面对所述图形编码进行输出显示,以使所述第二区域的支付受理终端对所述图形编码进行扫描,获取所述用户的支付信息,并基于获取到的支付信息完成支付结算。
可选地,所述方法还包括:
响应于用户的授权操作,获取所述用户在所述第一区域的业务服务端中开通的第一用户账户,并基于所述第一用户账户构建授权交易;
向所述区块链中的节点设备发送所述授权交易,以由所述区块链中的节点设备对所述授权交易进行共识处理,在所述授权交易共识通过之后,基于所述第一用户账户在所述第二区域的业务服务端中开通第二用户账户,并将所述第一用户账户与所述第二用户账户之间的对应关系存储至所述区块链。
可选地,所述区块链中部署了包括指示所述第二区域对应的业务服务端中的图形编码生成规则的合约代码的智能合约;
所述调用所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码,包括:
构建用于调用所述智能合约的合约调用交易,并将所述合约调用交易发送给所述区块链中的其它节点设备,以对所述合约调用交易进行共识处理,并在所述合约调用交易共识通过之后,执行所述智能合约的合约代码,基于所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码。
可选地,所述客户端中部署了包括指示所述第二区域对应的业务服务端中的图形编码生成规则的代码的软件开发工具包SDK;
所述调用所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码,包括:
调用所述SDK,基于所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码。
可选地,所述通过预设的支付界面对所述图形编码进行输出显示,以使所述第二区域的支付受理终端对所述图形编码进行扫描,获取所述用户的支付信息,并基于获取到的支付信息完成支付结算,包括:
通过预设的支付界面对所述图形编码进行输出显示,由所述第二区域的支付受理终端对所述图形编码进行扫描,获取所述用户的支付信息,并将获取到的支付信息发送至所述第二区域的业务服务端,由所述第二区域的业务服务端基于所述支付信息完成支付结算。
可选地,所述区块链中存储了由所述第二区域的业务服务端发布至所述区块链的所述用户的行程信息;
所述方法还包括:
响应于用户的行程查询操作,查询所述区块链中存储的与所述用户对应的行程信息,并将查询到的行程信息展示给所述用户。
可选地,所述区块链中存储了由所述第二区域的业务服务端在完成支付结算后发布至所述区块链的所述用户的订单信息;
所述方法还包括:
响应于用户的订单查询操作,查询所述区块链中存储的与所述用户对应的订单信息,并将查询到的订单信息展示给所述用户。
可选地,所述图形编码为二维码。
本说明书还提出一种跨区域支付装置;其中,跨区域支付系统包括区块链,接入所述区块链的与第一区域对应的客户端,以及接入所述区块链的与第二区域对应的业务服务端;所述区块链中存储了用户在所述第一区域的业务服务端开通的第一用户账户与在所述第二区域的业务服务端开通的第二用户账户之间的对应关系;所述装置应用于所述客户端,包括:
查询模块,响应于用户的支付操作,查询所述区块链中存储的所述对应关系,确定与用户在所述第一区域的业务服务端中开通的第一用户账户对应的第二用户账户;
生成模块,确定所述第二用户账户所属的第二区域,并调用所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码;
输出模块,获取生成的图形编码,并通过预设的支付界面对所述图形编码进行输出显示,以使所述第二区域的支付受理终端对所述图形编码进行扫描,获取所述用户的支付信息,并基于获取到的支付信息完成支付结算。
可选地,所述装置还包括:
构建模块,响应于用户的授权操作,获取所述用户在所述第一区域的业务服务端中开通的第一用户账户,并基于所述第一用户账户构建授权交易;
授权模块,向所述区块链中的节点设备发送所述授权交易,以由所述区块链中的节点设备对所述授权交易进行共识处理,在所述授权交易共识通过之后,基于所述第一用户账户在所述第二区域的业务服务端中开通第二用户账户,并将所述第一用户账户与所述第二用户账户之间的对应关系存储至所述区块链。
可选地,所述区块链中部署了包括指示所述第二区域对应的业务服务端中的图形编码生成规则的合约代码的智能合约;
所述生成模块:
构建用于调用所述智能合约的合约调用交易,并将所述合约调用交易发送给所述区块链中的其它节点设备,以对所述合约调用交易进行共识处理,在所述合约调用交易共识通过之后,执行所述智能合约的合约代码,基于所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码。
可选地,所述客户端中部署了包括指示所述第二区域对应的业务服务端中的图形编码生成规则的代码的软件开发工具包SDK;
所述生成模块:
调用所述SDK,基于所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码。
可选地,所述输出模块:
通过预设的支付界面对所述图形编码进行输出显示,由所述第二区域的支付受理终端对所述图形编码进行扫描,获取所述用户的支付信息,并将获取到的支付信息发送至所述第二区域的业务服务端,由所述第二区域的业务服务端基于所述支付信息完成支付结算。
可选地,所述区块链中存储了由所述第二区域的业务服务端发布至所述区块链的所述用户的行程信息;
所述装置还包括:
第一查询模块,响应于用户的行程查询操作,查询所述区块链中存储的与所述用户对应的行程信息,并将查询到的行程信息展示给所述用户。
可选地,所述区块链中存储了由所述第二区域的业务服务端在完成支付结算后发布至所述区块链的所述用户的订单信息;
所述装置还包括:
第二查询模块,响应于用户的订单查询操作,查询所述区块链中存储的与所述用户对应的订单信息,并将查询到的订单信息展示给所述用户。
可选地,所述图形编码为二维码。
本说明书还提出一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现上述任一项所述方法的步骤。
本说明书还提出一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述任一项所述方法的步骤。
在上述技术方案中,可以响应于用户在第一区域的客户端上发起的与第二区域对应的支付操作,先确定与在第一区域开通的第一用户账户对应的第二用户账户,并确定第二用户账户所属的第二区域,再调用第二区域对应的的业务服务端中的图形编码生成规则,生成与用户的支付信息对应的图形编码,并通过预设的支付界面对该图形编码进行输出显示,后续即可使用该图形编码在第二区域进行支付。采用这样的方式,使用户可以通过第一区域的客户端在第二区域进行跨域支付,从而实现了对第一区域和第二区域的支付流程进行互联互通,简化用户操作,提升用户体验。
附图说明
图1是本说明书示出的一种智能合约的创建流程的示意图;
图2是本说明书示出的一种智能合约的调用流程的示意图;
图3是本说明书示出的一种智能合约的创建和调用流程的示意图;
图4是相关技术中跨区域支付系统的示意图;
图5是本说明书一示例性实施例示出的一种跨区域支付系统的示意图;
图6是本说明书一示例性实施例示出的一种跨区域支付方法的流程图;
图7是本说明书一示例性实施例示出的一种授权界面的示意图;
图8是本说明书一示例性实施例示出的一种支付界面的示意图;
图9是本说明书一示例性实施例示出的一种跨区域支付装置所在电子设备的硬件结构图;
图10是本说明书一示例性实施例示出的一种跨区域支付装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还可以有上述多种类型的结合,比如私有链+联盟链、联盟链+公有链等。
其中,去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者(也可称为区块链中的节点)可以读取链上的数据记录、参与交易、以及竞争新区块的记账权等。而且,各节点可自由加入或者退出网络,并进行相关操作。
私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,其对节点具有严格限制且节点数量较少。这种类型的区块链更适合于特定机构内部使用。
联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
基于区块链的基本特性,区块链通常是由若干个区块构成。在这些区块中分别记录有与该区块的创建时刻对应的时间戳,所有的区块严格按照区块中记录的时间戳,构成一条在时间上有序的数据链条。
对于物理世界产生的真实数据,可以将其构建成区块链所支持的标准的交易(transaction)格式,然后发布至区块链,由区块链中的节点设备对收到的交易进行共识处理,并在达成共识后,由区块链中作为记账节点的节点设备,将这笔交易打包进区块,在区块链中进行持久化存证。
其中,区块链中支持的共识算法可以包括:
第一类共识算法,即节点设备需要争夺每一轮的记账周期的记账权的共识算法;例如,工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)等共识算法;
第二类共识算法,即预先为每一轮记账周期选举记账节点(不需要争夺记账权)的共识算法;例如,实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等共识算法。
在采用第一类共识算法的区块链网络中,争夺记账权的节点设备,都可以在接收到交易后执行该笔交易。争夺记账权的节点设备中可能有一个节点设备在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将收到的交易与其它交易一起打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
在采用第二类共识算法的区块链网络中,具有记账权的节点设备在本轮记账前已经商定好。因此,节点设备在接收到交易后,如果自身不是本轮的记账节点,则可以将该交易发送至记账节点。对于本轮的记账节点,在将该交易与其它交易一起打包以生成最新区块的过程中或者之前,可以执行该交易。记账节点在生成最新区块后,可以将该最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
如上所述,无论区块链采用以上示出的哪种共识算法,本轮的记账节点都可以将接收到的交易打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识验证。如果其它节点设备接收到最新区块或者该最新区块的区块头后,经验证没有问题,可以将该最新区块追加到原有的区块链末尾,从而完成区块链的记账过程。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行该区块中的包含的交易。
在区块链领域,有一个重要的概念就是账户(account);以以太坊为例,以太坊通常将账户划分为外部账户和合约账户两类;外部账户就是由用户直接控制的账户,也称之为用户账户;而合约账户则是由用户通过外部账户创建的,包含合约代码的账户(即智能合约)。当然,对于一些基于以太坊的架构而衍生出的区块链项目(比如蚂蚁区块链),还可以对区块链支持的账户类型,进行进一步的扩展,在本说明书中不进行特别限定。
对于区块链中的账户而言,通常会通过一个结构体,来维护账户的账户状态。当区块中的交易被执行后,区块链中与该交易相关的账户的状态通常也会发生变化。
以以太坊为例,账户的结构体通常包括Balance,Nonce,Code和Storage等字段。其中:
Balance字段,用于维护账户目前的账户余额;
Nonce字段,用于维护该账户的交易次数;它是用于保障每笔交易能且只能被处理一次的计数器,有效避免重放攻击;
Code字段,用于维护该账户的合约代码;在实际应用中,Code字段中通常仅维护合约代码的hash值;因而,Code字段通常也称之为Codehash字段。
Storage字段,用于维护该账户的存储内容(默认字段值为空);对于合约账户而言,通常会分配一个独立的存储空间,用以存储该合约账户的存储内容;该独立的存储空间通常称之为该合约账户的账户存储。合约账户的存储内容通常会构建成MPT(MerklePatricia Trie)树的数据结构存储在上述独立的存储空间之中;其中,基于合约账户的存储内容构建成的MPT树,通常也称之为Storage树。而Storage字段通常仅维护该Storage树的根节点;因此,Storage字段通常也称之为StorageRoot字段。
其中,对于外部账户而言,以上示出的Code字段和Storage字段的字段值均为空值。
对于大多数区块链项目,通常都会使用Merkle树;或者,基于Merkle树的数据结构,来存储和维护数据。以以太坊为例,以太坊使用了MPT树(一种Merkle树变种),作为数据组织形式,用来组织和管理账户状态、交易信息等重要数据。
以太坊针对区块链中需要存储和维护的数据,设计了三颗MPT树,分别是MPT状态树、MPT交易树和MPT收据树。其中,除了以上三颗MPT树以外,实际上还存在一颗基于合约账户的存储内容构建的Storage树。
MPT状态树,是由区块链中所有账户的账户状态(state)数据组织成的MPT树;MPT交易树,是由区块链中的交易(transaction)数据组织成的MPT树;MPT收据树,是区块中的交易在执行完毕后生成的与每笔交易对应的交易(receipt)收据组织成的MPT树。以上示出的MPT状态树、MPT交易树和MPT收据树的根节点的hash值,最终都会被添加至对应区块的区块头中。
其中,MPT交易树和MPT收据树均与区块相对应,即每一个区块都有自己的MPT交易树和MPT收据树。而MPT状态树是一个全局的MPT树,并不与某一个特定的区块相对应,而是涵盖了区块链中所有账户的账户状态数据。
需要说明的是,区块链每产生一个最新区块,则在该最新区块中的交易被执行之后,区块链中这些被执行交易的相关账户(可以是外部账户也可以是合约账户)的账户状态,通常也会随之发生变化;
例如,当区块中的一笔“转账交易”执行完毕后,与该“转账交易”相关的转出方账户和转入方账户的余额(即这些账户的Balance字段的字段值),通常也会随之发生变化。
而节点设备在区块链产生的最新区块中的交易执行完毕后,由于当前区块链中的账户状态发生了变化,因此节点设备需要根据区块链中所有账户当前的账户状态数据,来构建MPT状态树,用于维护区块链中所有账户的最新状态。
也即,每当区块链中产生一个最新区块,并且该最新区块中的交易执行完毕后,导致区块链中的账户状态发生变化,节点设备都需要基于区块链中所有账户最新的账户状态数据,重新构建一颗MPT状态树。换句话说,区块链中每一个区块,都有一个与之对应的MPT状态树;该MPT状态树,维护了在该区块中的交易在执行完毕后,区块链中所有账户最新的账户状态。
在实际应用中,不论是公有链、私有链还是联盟链,都可能提供智能合约(smartcontract)的功能。区块链上的智能合约是在区块链上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑。以太坊作为一个可编程区块链,其核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,通过它可以实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实际上,EVM直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”),所以部署在区块链上的智能合约可以是字节码。
如图1所示,Bob将一笔包含创建智能合约信息的交易(transaction)发送到以太坊网络后,各节点均可以在EVM中执行这笔交易。其中,图1中交易的From字段用于记录发起创建智能合约的账户的地址,交易的Data字段的字段值保存的合约代码可以是字节码,交易的To字段的字段值为一个null(空)的账户。当节点间通过共识机制达成一致后,这个智能合约成功创建,后续用户可以调用这个智能合约。
智能合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址;比如,图1中各节点中的“0x68e12cf284…”就代表了创建的这个合约账户的地址;合约代码(Code)和账户存储(Storage)将保存在该合约账户的账户存储中。智能合约的行为由合约代码控制,而智能合约的账户存储则保存了合约的状态。换句话说,智能合约使得区块链上产生包含合约代码和账户存储的虚拟账户。
前述提到,包含创建智能合约的交易的Data字段保存的可以是该智能合约的字节码。字节码由一连串的字节组成,每一字节可以标识一个操作。基于开发效率、可读性等多方面考虑,开发者可以不直接书写字节码,而是选择一门高级语言编写智能合约代码。例如,高级语言可以采用诸如Solidity、Serpent、LLL语言等。对于采用高级语言编写的智能合约代码,可以经过编译器编译,生成可以部署到区块链上的字节码。
以Solidity语言为例,用其编写的合约代码与面向对象编程语言中的类(Class)很相似,在一个合约中可以声明多种成员,包括状态变量、函数、函数修改器、事件等。状态变量是永久存储在智能合约的账户存储(Storage)字段中的值,用于保存合约的状态。
如图2所示,仍以以太坊为例,Bob将一笔包含调用智能合约信息的交易发送到以太坊网络后,各节点均可以在EVM中执行这笔交易。其中,图2中交易的From字段用于记录发起调用智能合约的账户的地址,To字段用于记录被调用的智能合约的地址,交易的Data字段用于记录调用智能合约的方法和参数。调用智能合约后,合约账户的账户状态可能改变。后续,某个客户端可以通过接入的区块链节点(例如图2中的节点1)查看合约账户的账户状态。
智能合约可以以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当这样的交易执行完毕后,区块链上就保存了无法篡改、不会丢失的交易凭证。
创建智能合约和调用智能合约的示意图如图3所示。以太坊中要创建一个智能合约,需要经过编写智能合约、变成字节码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,各个节点的EVM可以分别执行该交易,将智能合约代码分布式的运行在以太坊网络中每个节点的虚拟机中。
智能合约的事件机制,是智能合约与链外实体进行交互的一种方式。对于区块链上部署的智能合约来说,通常无法直接与链外实体进行交互;例如,智能合约在调用完成后,通常无法将智能合约的调用结果,点对点的发送给智能合约的调用发起方。
智能合约在调用的过程中产生的调用结果(包括中间结果和最终的调用结果),通常都会以事件(event)的形式,记录到调用该智能合约的那笔交易的交易日志(transaction logs),在节点设备的存储空间中进行存储。而需要与智能合约进行交互的链外实体,则可以通过监听节点设备的存储空间中存储的上述交易日志的方式,来获取智能合约的调用结果;
例如,以以太坊为例,交易日志最终会作为调用该智能合约的那笔交易笔交易的收据(receipt)的一部分内容,存储在以上描述的MPT收据树中。而与智能合约进行交互的链外实体,可以监听节点设备的存储空间中存储的MPT收据树上的交易收据,并从监听到的交易收据中,来获取智能合约生成的事件。
请参考图4,图4是相关技术中跨区域支付系统的示意图。
在如图4所示的跨区域支付系统中,第一区域和第二区域可以是不同的地理区域(例如:城市、省份等)。一方面,用户可以通过第一区域的客户端在第一区域中发起支付操作,第一区域的业务服务端则可以针对用户在第一区域发起的支付操作进行支付结算;另一方面,用户可以通过第二区域的客户端在第二区域中发起支付操作,第二区域的业务服务端则可以针对用户在第二区域发起的支付操作进行支付结算。其中,第一区域的业务服务端和第二区域的业务服务端的支付流程是不互通的。
在基于二维码的支付场景下,用户在某个区域中进行支付时,使用的二维码通常是按照与该区域对应的二维码生成规则,对该用户的支付信息(例如:身份证号码、支付账户、支付密码等)进行计算得到的二维码。在实际应用中,不同的区域通常具有不同的二维码生成规则;对于某个区域而言,与该区域对应的二维码生成规则通常是由该区域的技术人员设置的。
也即,用户在上述第一区域中进行支付时,使用的二维码是按照与第一区域对应的二维码生成规则,对该用户的支付信息进行计算得到的二维码;用户在上述第二区域中进行支付时,使用的二维码是按照与第二区域对应的二维码生成规则,对该用户的支付信息进行计算得到的二维码。
举例来说,用户在城市A(即第一区域)乘坐地铁、公交等公共交通工具时,用于支付的二维码是按照城市A的公共交通管理机构设置的二维码生成规则,对该用户的支付信息进行计算得到的二维码;用户在城市B(即第二区域)乘坐地铁、公交等公共交通工具时,用于支付的二维码是按照城市B的公共交通管理机构设置的二维码生成规则,对该用户的支付信息进行计算得到的二维码。
为了在第一区域和第二区域进行支付,一方面,用户需要在第一区域的客户端中开通符合与第一区域对应的二维码生成规则的用户账户(该用户账户包括生成与第一区域对应的二维码所需的支付信息),从而使第一区域的业务服务端可以按照与第一区域对应的二维码生成规则,基于该用户在第一区域开通的用户账户生成二维码。后续,该用户可以使用该二维码在第一区域中进行支付。具体地,可以由第一区域的支付受理终端(例如:地铁出入口的闸机、公交车上安装的扫描设备等)对该二维码进行扫描,获取到该用户的支付信息,并将该用户的支付信息发送至第一区域的业务服务端,由第一区域的业务服务端基于该用户的支付信息完成支付结算。
另一方面,用户需要在第二区域的客户端中开通符合与第二区域对应的二维码生成规则的用户账户(该用户账户包括生成与第二区域对应的二维码所需的支付信息),从而使第二区域的业务服务端可以按照与第二区域对应的二维码生成规则,基于该用户在第二区域开通的用户账户生成二维码。后续,该用户即可使用该二维码在第二区域中进行支付。具体地,可以由第二区域的支付受理终端对该二维码进行扫描,获取到该用户的支付信息,并将该用户的支付信息发送至第二区域的业务服务端,由第二区域的业务服务端基于该用户的支付信息完成支付结算。
本说明书旨在提出一种在第一区域的客户端中显示按照与第二区域对应的二维码生成规则生成的用于在第二区域中进行支付的二维码的技术方案,以对第一区域和第二区域的支付流程进行互联互通,使用户可以通过第一区域的客户端在第二区域中进行支付,简化用户操作,提升用户体验。
请参考图5,图5是本说明书一示例性实施例示出的一种跨区域支付系统的示意图。
同样地,在如图5所示的跨区域支付系统中,第一区域和第二区域可以是不同的地理区域(例如:城市、省份等)。
一方面,第一区域的业务服务端可以作为该跨区域支付系统中的区块链中的节点设备加入该区块链网络,也可以与该区块链中的节点设备建立连接,以通过该节点设备接入该区块链网络;第一区域的客户端则可以通过第一区域的业务服务端接入该区块链网络。
另一方面,第二区域的业务服务端可以作为该跨区域支付系统中的区块链中的节点设备加入该区块链网络,也可以与该区块链中的节点设备建立连接,以通过该节点设备接入该区块链网络;第二区域的客户端则可以通过第二区域的业务服务端接入该区块链网络。
在具体实现时,用户在第二区域中进行支付时,可以通过第一区域的客户端发起与第二区域对应的支付操作。
第一区域的客户端可以响应于上述支付操作,获取用户的第一用户账户,并通过查询上述区块链中存储的在第一区域开通的用户账户和在第二区域开通的用户账户的对应关系,确定与用户的第一用户账户对应的第二用户账户。
后续,可以进一步确定用户的第二用户账户所属的第二区域,并调用第二区域对应的的业务服务端中的图形编码生成规则,生成与用户的支付信息对应的图形编码。在实际应用中,该图形编码通常可以是二维码。
第一区域的客户端在获取到基于用户的支付信息生成的与第二区域对应的图形编码之后,可以通过预设的支付界面对该图形编码进行输出显示,从而使第二区域的支付受理终端对该图形编码进行扫描,获取用户的支付信息,并基于获取到的支付信息完成支付结算。
在上述技术方案中,可以响应于用户在第一区域的客户端上发起的与第二区域对应的支付操作,先确定与在第一区域开通的第一用户账户对应的第二用户账户,并确定第二用户账户所属的第二区域,再调用第二区域对应的的业务服务端中的图形编码生成规则,生成与用户的支付信息对应的图形编码,并通过预设的支付界面对该图形编码进行输出显示,后续即可使用该图形编码在第二区域进行支付。采用这样的方式,使用户可以通过第一区域的客户端在第二区域进行跨域支付,从而实现了对第一区域和第二区域的支付流程进行互联互通,简化用户操作,提升用户体验。
请参考图6,图6是本说明书一示例性实施例示出的一种跨区域支付方法的流程图。该跨区域支付方法可以应用于图5所示的跨区域支付系统中被部署了第一区域的客户端的电子设备;其中,该电子设备具体可以是手机、平板设备、笔记本电脑、掌上电脑(PDAs,Personal Digital Assistants)等;本说明书对此不作限制。该跨区域支付方法可以包括以下步骤:
步骤602,响应于用户的支付操作,查询所述区块链中存储的所述对应关系,确定与用户在所述第一区域的业务服务端中开通的第一用户账户对应的第二用户账户;
步骤604,确定所述第二用户账户所属的第二区域,并调用所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码;
步骤606,获取生成的图形编码,并通过预设的支付界面对所述图形编码进行输出显示,以使所述第二区域的支付受理终端对所述图形编码进行扫描,获取所述用户的支付信息,并基于获取到的支付信息完成支付结算。
在本实施例中,为了通过第一区域的客户端在第二区域中进行支付,用户可以首先通过第一区域的客户端对第二区域进行授权。
在示出的一种实施方式中,用户可以使用其在第一区域的业务服务端开通的用户账户(称为第一用户账户)在第一区域的客户端上进行用户登录。在用户登录成功之后,第一区域的客户端可以面向用户输出如图7所示的授权界面。用户可以在该授权界面中选择需要授权的第二区域,并在完成选择之后,点击该授权界面中的“授权”按钮,以发起与第二区域对应的授权操作。第一区域的客户端在检测到针对该“授权”按钮的点击操作时,可以获取用户的第一用户账户,并基于用户的第一用户账户构建与第二区域对应的授权交易。
后续,第一区域的客户端可以通过第一区域的业务服务端将该授权交易发给送上述区块链中的节点设备,以由该区块链中的节点设备对该授权交易进行共识处理,并在该授权交易共识通过之后,先基于用户的第一用户账户在第二区域的业务服务端中开通用户账户(称为第二用户账户),再在完成第二用户账户的开通之后,将第一用户账户和第二用户账户的对应关系发布至上述区块链进行存证。
具体地,该区块链中的节点设备可以在该授权交易共识通过之后,执行该授权交易调用的智能合约的合约代码;该授权交易调用的智能合约具体可以包括指示开通属于第二区域的用户账户的合约代码。在这种情况下,该区块链中的节点设备可以通过执行该授权交易调用的智能合约的合约代码,实现先基于用户的第一用户账户在第二区域的业务服务端中开通第二用户账户,再在完成第二用户账户的开通之后,将第一用户账户和第二用户账户的对应关系发布至上述区块链进行存证。
在实际应用中,第一区域的客户端也可以向第一区域的业务服务端发送包含用户的第一用户账户和第二区域信息的授权请求,并由第一区域的业务服务端基于用户的第一用户账户构建与第二区域对应的授权交易;本说明书对此不作限制。
具体地,可以先在上述区块链中创建与用户的第一用户账户对应的虚拟账户(例如:区块链账户),再将用户的第一用户账户和该虚拟账户的对应关系发布至该区块链进行存证。其中,该虚拟账户中存储了用户的第一用户账户中的全部信息。第二区域的业务服务端可以对该区块链中存储的数据进行监听,从而可以监听到该区块链中存储的用户的第一用户账户和该虚拟账户的对应关系。由于用户的第一用户账户包括生成与第一区域对应的图形编码(例如:二维码)所需的支付信息,因此第二区域的业务服务端在监听到该对应关系时,可以从用户的第一用户账户中提取出生成与第二区域对应的图形编码所需的支付信息,并在第二区域的业务服务端中为用户开通包括生成与第二区域对应的图形编码所需的支付信息的第二用户账户。后续,第二区域的业务服务端可以将用户的第二用户账户和上述虚拟账户的对应关系发布至上述区块链进行存证。
在这种情况下,可以将用户的第一用户账户和该虚拟账户的对应关系,以及用户的第二用户账户和该虚拟账户的对应关系,共同视为第一用户账户和第二用户账户的对应关系,即第一用户账户和第二用户账户通过该虚拟账户实现了相互对应。
在本实施例中,用户在第二区域中进行支付时,可以通过第一区域的客户端发起与第二区域对应的支付操作。
具体地,第一区域的客户端可以面向用户输出如图8所示的支付界面。一方面,用户在第一区域中进行支付时,可以通过点击该支付界面中“支付”按钮,发起与第一区域对应的支付操作;另一方面,用户在第二区域中进行支付时,可以在该支付界面中选择第二区域,并在完成选择之后,点击该授权界面中的“跨区域支付”按钮,以发起与第二区域对应的支付操作。第一区域的客户端在检测到针对该“跨区域支付”按钮的点击操作时,可以视为接收到与用户选择的第二区域对应的支付操作。
在本实施例中,第一区域的客户端可以响应于上述支付操作,获取用户的第一用户账户,并通过查询上述区块链中存储的在第一区域开通的用户账户和在第二区域开通的用户账户的对应关系,确定与用户的第一用户账户对应的第二用户账户。
后续,可以进一步确定用户的第二用户账户所属的第二区域,并调用第二区域对应的的业务服务端中的图形编码生成规则,生成与用户的支付信息对应的图形编码。在实际应用中,该图形编码通常可以是二维码。
在示出的一种实施方式中,可以通过第二区域的业务服务端在上述区块链中发布用于生成与第二区域对应的图形编码的智能合约。其中,该智能合约具体可以包括指示第二区域对应的业务服务端中的图形编码生成规则的合约代码。
在这种情况下,第一区域的客户端在确定了上述第二用户账户所属的第二区域之后,可以构建用于调用上述智能合约的合约调用交易,并将该合约调用交易发给送上述区块链中的节点设备,以由该区块链中的节点设备对该合约调用交易进行共识处理,并在该合约调用交易共识通过之后,执行该智能合约的合约代码。由于该智能合约包括指示第二区域对应的业务服务端中的图形编码生成规则的合约代码,因此该区块链中的节点设备可以通过执行该智能合约的合约代码,实现按照第二区域对应的业务服务端中的图形编码生成规则,对用户的第二用户账户中的支付信息进行计算,生成与第二区域对应的图形编码。后续,第一区域的客户端可以从该区块链中读取到生成的图形编码,从而可以将该图形编码用于在第二区域进行的支付。
在示出的另一种实施方式中,可以由技术人员预先在第一区域的客户端中部署SDK(Software Development Kit,软件开发工具包)。其中,该SDK具体可以包括指示所述第二区域对应的业务服务端中的图形编码生成规则的代码。
在这种情况下,第一区域的客户端在确定了上述第二用户账户所属的第二区域之后,可以直接调用该SDK,实现按照第二区域对应的业务服务端中的图形编码生成规则,对用户的第二用户账户中的支付信息进行计算,生成与第二区域对应的图形编码。后续,第一区域的客户端可以获取到由该SDK输出的图形编码,从而可以将该图形编码用于在第二区域进行的支付。
在本实施例中,第一区域的客户端在获取到基于用户的支付信息生成的与第二区域对应的图形编码之后,可以通过预设的支付界面对该图形编码进行输出显示,从而使第二区域的支付受理终端对该图形编码进行扫描,获取用户的支付信息,并基于获取到的支付信息完成支付结算。
具体地,第一区域的客户端在获取到基于用户的支付信息生成的与第二区域对应的图形编码之后,可以由如图8所示的支付界面跳转至下一个支付界面,并通过跳转的支付界面对该图形编码进行输出显示,即将该图形编码显示在跳转的支付界面中。
在示出的一种实施方式中,第二区域的支付受理终端可以对由第一区域的客户端输出显示的与第二区域对应的图形编码进行扫描,并对扫描得到的图形编码进行解析,以获取该图形编码指示的用户的支付信息。后续,第二区域的支付受理终端可以将获取到的支付信息发送至第二区域的业务服务端,由第二区域的业务服务端基于该支付信息完成支付结算,例如:从用户的支付账户的余额中扣除相应金额。
在用户乘坐公共交通工具的场景下,第二区域的支付受理终端在将用户的支付信息发送至第二区域的业务服务端时,还可以将用户的行程信息发送至第二区域的业务服务端,从而使第二区域的业务服务端可以根据用户的行程信息确定需要用户支付的金额。
举例来说,第二区域的支付受理终端可以将自身的位置信息发送至第二区域的业务服务端;第二区域的业务服务端可以根据由支付受理终端上传的位置信息确定用户的行程起点和行程终点,从而可以确定用户需要为此次行程支付的金额。
在实际应用中,第二区域的业务服务端可以将用户的行程信息发布至上述区块链进行存证,第一区域的客户端则可以面向用户提供行程查询的功能,例如,面向用户提供用于查询行程的用户界面。第一区域的客户端在检测到用户的行程查询操作时,可以在该区块链中查询该用户的行程信息,并将查询到的行程信息展示给该用户,以供其查看。
第二区域的业务服务端还可以在完成支付结算之后,将与此次支付对应的订单信息发布至上述区块链进行存证,第一区域的客户端则可以面向用户提供订单查询的功能,例如,面向用户提供用于查询已支付订单的用户界面。第一区域的客户端在检测到用户的订单查询操作时,可以在该区块链中查询该用户的订单信息,并将查询到的订单信息展示给该用户,以供其查看。
在上述技术方案中,可以响应于用户在第一区域的客户端上发起的与第二区域对应的支付操作,先确定与在第一区域开通的第一用户账户对应的第二用户账户,并确定第二用户账户所属的第二区域,再调用第二区域对应的的业务服务端中的图形编码生成规则,生成与用户的支付信息对应的图形编码,并通过预设的支付界面对该图形编码进行输出显示,后续即可使用该图形编码在第二区域进行支付。采用这样的方式,使用户可以通过第一区域的客户端在第二区域进行跨域支付,从而实现了对第一区域和第二区域的支付流程进行互联互通,简化用户操作,提升用户体验。
与前述跨区域支付方法的实施例相对应,本说明书还提供了跨区域支付装置的实施例。
本说明书跨区域支付装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图9所示,为本说明书跨区域支付装置所在电子设备的一种硬件结构图,除了图9所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该跨区域支付的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图10,图10是本说明书一示例性实施例示出的一种跨区域支付装置的框图。该跨区域支付装置100可以应用于图9所示的电子设备,该电子设备中被部署了第一区域的客户端;其中,跨区域支付系统包括区块链,接入所述区块链的与第一区域对应的客户端,以及接入所述区块链的与第二区域对应的业务服务端;所述区块链中存储了用户在所述第一区域的业务服务端开通的第一用户账户与在所述第二区域的业务服务端开通的第二用户账户之间的对应关系;该跨区域支付装置100可以包括:
查询模块1001,响应于用户的支付操作,查询所述区块链中存储的所述对应关系,确定与用户在所述第一区域的业务服务端中开通的第一用户账户对应的第二用户账户;
生成模块1002,确定所述第二用户账户所属的第二区域,并调用所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码;
输出模块1003,获取生成的图形编码,并通过预设的支付界面对所述图形编码进行输出显示,以使所述第二区域的支付受理终端对所述图形编码进行扫描,获取所述用户的支付信息,并基于获取到的支付信息完成支付结算。
在本实施例中,所述装置100还包括:
构建模块1004,响应于用户的授权操作,获取所述用户在所述第一区域的业务服务端中开通的第一用户账户,并基于所述第一用户账户构建授权交易;
授权模块1005,向所述区块链中的节点设备发送所述授权交易,以由所述区块链中的节点设备对所述授权交易进行共识处理,在所述授权交易共识通过之后,基于所述第一用户账户在所述第二区域的业务服务端中开通第二用户账户,并将所述第一用户账户与所述第二用户账户之间的对应关系存储至所述区块链。
在本实施例中,所述区块链中部署了包括指示所述第二区域对应的业务服务端中的图形编码生成规则的合约代码的智能合约;
所述生成模块1002:
构建用于调用所述智能合约的合约调用交易,并将所述合约调用交易发送给所述区块链中的其它节点设备,以对所述合约调用交易进行共识处理,在所述合约调用交易共识通过之后,执行所述智能合约的合约代码,基于所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码。
在本实施例中,所述客户端中部署了包括指示所述第二区域对应的业务服务端中的图形编码生成规则的代码的软件开发工具包SDK;
所述生成模块1002:
调用所述SDK,基于所述第二区域对应的业务服务端中的图形编码生成规则,生成与所述用户的支付信息对应的图形编码。
在本实施例中,所述输出模块1003:
通过预设的支付界面对所述图形编码进行输出显示,由所述第二区域的支付受理终端对所述图形编码进行扫描,获取所述用户的支付信息,并将获取到的支付信息发送至所述第二区域的业务服务端,由所述第二区域的业务服务端基于所述支付信息完成支付结算。
在本实施例中,所述区块链中存储了由所述第二区域的业务服务端发布至所述区块链的所述用户的行程信息;
所述装置100还包括:
第一查询模块1006,响应于用户的行程查询操作,查询所述区块链中存储的与所述用户对应的行程信息,并将查询到的行程信息展示给所述用户。
在本实施例中,所述区块链中存储了由所述第二区域的业务服务端在完成支付结算后发布至所述区块链的所述用户的订单信息;
所述装置100还包括:
第二查询模块1007,响应于用户的订单查询操作,查询所述区块链中存储的与所述用户对应的订单信息,并将查询到的订单信息展示给所述用户。
在本实施例中,所述图形编码为二维码。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。