美文网首页01-架构
014-移动支付12-SDK设计-整体结构原理与设计

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

作者: AncientMing | 来源:发表于2017-06-08 22:57 被阅读36次

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

    一、支付总结分析

    1、微信支付

    • 服务器:实际上做的事情就是组装支付Model

    • 客户端:解析Model,根据Model调起微信支付

    2、银联支付

    • 服务器:实际上就是组装支付Model(组装支付数据)

    • 客户端:解析Model,根据Model调起银联支付

    3、支付宝支付

    • 服务器:实际上就是组装Model

    • 客户端:解析Model,根据Model调起支付宝支付

    假如再把苹果支付,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简析

    相关文章

      网友评论

        本文标题:014-移动支付12-SDK设计-整体结构原理与设计

        本文链接:https://www.haomeiwen.com/subject/ncztqxtx.html