01-架构

014-移动支付12-SDK设计-整体结构原理与设计

2017-06-08  本文已影响36人  AncientMing

上一篇:013-移动支付11-支付宝支付-服务器端开发

一、支付总结分析

1、微信支付

2、银联支付

3、支付宝支付

假如再把苹果支付,QQ钱包等也算在内,本质上也是服务器组装Model然后客户端解析Model并且调起支付。

总结:所有第三方支付都是同一个目的

4、以支付宝为案例,细分一下逻辑:

4.1、客户端请求商户服务器,目的:获取支付签名信息支付Model

4.2、客户端服务器访问支付宝服务器

4.3、支付宝服务器返回预支付结果

4.4、商户服务器返回客户端组装支付Model

4.5、商户客户端调起支付客户端

4.6、支付SDK调用支付服务器

4.7、支付宝服务器返回支付结果

4.8、支付SDK回调商户客户端,提示用户(刷新UI)

4.9、支付宝服务器通知商户服务器

注:第4.9步一般会延迟执行。大致流程如上,错误及详细细节不述。

二、分析Model

在查看各种不同平台的参数的时候回发现参数是不一样的。那我们怎么办呢?

1、找相同点,分析并找到所有支付都有的参数,这样就形成了抽象类,也就是基类。(BaseModel或者叫BaseBean)

2、不同点处理:定义差异化Model
差异化的Model继承自BaseModel或BaseBean。(客户端习惯叫Model服务器习惯叫Bean本质都是模型)

以Ping++为例,在设计SDK的时候整体就是这样的。虽然Ping++客户端并没有开源,但是Java服务器端部分代码是开源的,阅读之可以证实就是这么设计的。

三、客户端支付SDK整体架构分析

1、解析Model,调用具体的支付平台

问题来了:我们发现,在使用微信客户端支付时,会调用商户服务器,返回支付Model后再调用微信支付SDK。而在使用银联支付时,也会调用商户服务器,返回支付Model后再调用银联支付SDK。那我们要怎么进行封装呢?SDK又该怎么设计呢?

分析之后,我们可以针对SDK的调用进行设计。

调用自己商户服务器不需要封装,因为会有差异化。

不同服务器,参数支付需要的列表不一致,需求也是不一样!

2、子模块:服务器组装Model解析、异常处理、Log统计、时间点击统计等等子模块不细述了。

整体思路同上即可。
下一篇:015-CFBridgingRelease简析

上一篇下一篇

猜你喜欢

热点阅读