在现在的商业app开发中,基本上都会用到支付功能,如微信,支付宝等待,网络上此类的文章很多,下面就我工作中实际用到的给那些刚刚使用支付功能的朋友一些经验,非demo;
在开发支付模块之前我们要思考下:
1.支付模块应该是属于公共模块,也就是说应该是 独立与app 主要业务逻辑之外的,他只提供支付即可,(独立)
2.支付成功后应该有返回响应,支付平台何其多,每一次都写返回,提示,浪费精力也容易出错,不规整(响应)
3.当app不断迭代之后,代码量上来了,万一支付sdk升级,开发文档不完整(一般公司都是补开发文档),员工离职,等待情况,维护成本增大;(维护升级)
...
针对上述的3种情况,支付模块可以做:
1.独立于工程之外,以后只要用到支付功能 直接导入库工程然后调用api即可实现支付,可以单独新建一个库工程(不是仅仅建一个包)
2.在库工程中把每一个平台的支付代码,新建一个包
3.资源文件建议,已加标示,方便维护,比方,支付宝的 string 可以写成,alipay_strings.xml,,里面的值也以alipay开头,虽然多写string 麻烦,但是好辨识 以后不爽的时候也可以看着修改,方便自己也方便他人!
下图是我常用 的工程目录(每一个应用差不多 ,比方说环信模块,页面和逻辑数据库,等都不和主模块耦合,需要就调用,具体逻辑在相应模块中自行处理,比如,聊天中中要发红包,这是聊天的事和主逻辑无关,发完后 告诉一声就可以了 (可以用回调,也可以用事件订阅))
下面开始支付宝支付(亮点都打了码):
1.打开支付宝网站,签约支付宝账号,下载相应的sdk
忘记密码汗!了 引用一张官方网站的
这样下载的sdk中的keys.java的参数都有了
以上的 是Keys的参数的来源,一般来说,公司会提供,自己开发的话需要看一下费率(支付宝是要收手续费的)
http://fun.alipay.com/qyfl/index.htm
(注:微信支付认证的话 是300元一年)
2.支付需要的参数以及调用的方法
上一节我们拿到了支付所需要的参数,下面我们详细介绍支付的步骤;
直接上代码
public abstract class BaseAliPay implements Define_pay { public Context context; public PayCallBack payCallBack;
/** 支付宝支付的实际操作方法 */ protected void payToAli(final String orderInfo) { new Thread() { @Override public void run() { AliPay alipay = new AliPay((Activity) context, mHandler); // 设置为沙箱模式,不设置默认为线上环境 // alipay.setSandBox(true);