支付系统涉及到资金交易,对数据安全性和一致性有较高要求。
本文简单介绍下几个常见对问题,和一些思考。(作者也是刚刚学习,有理解不对的地方敬请斧正)
支付系统中有一些操作/接口是必须对调用方进行身份强校验的。
支付结果回调不作校验的话,如果回调是别人伪装的,就可能导致商户没收到钱,却通知他发货给下单人。
订单回滚操作不作校验的话,可能导致错误地把商户的钱退换给用户。
以上两种情况都会给商户带来损失。
防抵赖通常的措施,是通过密钥对支付关键数据进行签名,请求接收方校验签名。
对于支付系统而言,订单回滚通常需要使用非对称私钥。即支付系统的使用方使用私钥进行加密,然后支付系统通过公钥匙解密。
能通过公有解密出来的信息,就是来自对应私钥的拥有者。从而做到防抵赖。
支付成功回调相比支付回滚对支付系统对要求会低一些。(因为支付系统可以要求使用方收到回调后,需要进行订单查询确认,将一些责任转移到应用/商户)
不过整体上,尤其对于不是很强势的小支付平台而言,非对称加密是比较常用的方式。
订单发生重复支付,也回增加系统使用方对负担。
重复支付问题有两个解决思路,
数据一致性主要是要避免因为网络问题或者系统对一些其它故障,要能够保证最终系统对整个链路中订单对状态是一致的。
在退款时,支付系统或应用,一旦想下游发起请求时,不过有没有收到应答,订单的状态都必须更改为退款中。后续在通过应答,或者订单的延时查询将订单的状态修正为确定状态(退款成功或失败)。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。