PayPlugin的Payso层架构思路

PayPlugin顾名思义,是支付插件。支付的东西意味着安全性要得到保证。

大家都知道,Android开发用到的是java语言编写,用java编写,就意味着会被破解,会被反编译。

所以,交易相关的核心代码,我们通常都不希望写在java层,而java层更多的是用来渲染界面。

那么我们把核心代码写在C层,也就是通过jni去调用。但是,交易支付涉及到的业务是非常多的,举个例子,我们要查询银行卡的金额。

我们的步骤是,先刷卡,或者先触卡,或者卡号之后,我们还需要去输入密码,之后,就是银联的8583协议。最后金额查到返回回来。

这当中涉及到的接口十分多。于是乎,我们在jni的native那边写了比较多的方法,比如刷卡,比如输入密码这些步骤。

我们想尽量减少接口,把接口做成通用化,用指令去代替。于是,我设计了这套架构。

PayPlugin的Payso层架构思路_第1张图片


下面让我解释一下,上面的架构大体上的意思。

1.PaySys

paySysCmd(ISysCallBack callback)
setSysParams(int tag, String value)
readSysParams(int tag)

这个类是起始触发类,是java连通native的关键类。其中,最主要的方法是PaySysCmd这个方法。另外两个setSysParams和readSysParams方法是保存和读取缓存的方法。


2.ISysCallback

ISysCallback这个接口是供native层调用的接口,它有很多实现类。


3.BaseSysCallBackImpl
BaseSysCallBackImpl是交易基类,交易过程中,显示对话框,提示框,还有包括C控制java层界面的方法controlUI()。其中controlUI上的步骤可以用IStep接口实现类去做。


4.IStep
有了交易基类还不够,如果想要走支付交易流程,就必须把步骤串联起来,比如查询余额,就有刷卡,输入密码等步骤。所以现实IStep的类都是业务上的步骤类。


优点:

1.减少jni的接口,把接口归纳归类,通用化。
2.核心支付逻辑放入到C层,防止被破解,java层仅做界面的展示和触发。


缺点:
每新增一个业务,C层和java层都必须约定好指令,所以代码都必须要修改。


可优化的地方:
可以通过动态下载更新


你可能感兴趣的:(android架构)