af-pay
Introduction: 对支付宝和微信支付 sdk 的二次封装,极大简化支付过程
Tags:
支付-pay-af-pay 原为QuickAF(一个快速的 Android 开发框架)中的支付组件,现已抽取出来作为一个单独的 Android 支付库, 支持支付宝,微信支付,并且同时支持客户端下单与服务端下单。
0.2.0 及其以上版本支持银联支付,如需使用银联支付,请点击这里。
新的版本(0.1.0 及其以上)没有提供纯净版,如果您使用的是 0.1 以下版本,请移步旧文档
在 Android 中直接使用
- 引入完整版本,包含支付平台相关的 jar 包
dependencies { compile 'cn.ieclipse.af:af-pay:0.2.0' }
使用 jitpack.io 仓库
1,在工程根目录中的 build.gradle 中添加 jitpack 仓库
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2,在 app 模块中添加依赖
dependencies {
compile 'com.github.Jamling:af-pay:master-SNAPSHOT'
}
常见问题
因支付宝 SDK 的最低 SDK 版本改为了 16,如果 app 模块最低仍为 14,需要在 AndroidManifest.xml 中,添加以下声明
<uses-sdk tools:overrideLibrary="com.alipay.sdk,cn.ieclipse.pay"/>
示例代码
支付宝支付
客户端下单方式同时支持支付宝 sdk v1 和 2,建议使用 v2。服务端下单方式仅支持 v2。如果申请了支付宝支付,可以修改相关配置,然后运行本 demo,可以支付成功。
private void doAlipay(String orderInfo) {
final Activity activity = this;
Alipay alipay = new Alipay(activity);
alipay.setPayListener(new Alipay.PayListener() {
@Override
public void onPaySuccess(PayResult payResult) {
showToast(activity, "支付成功");
}
@Override
public void onPayWaiting(PayResult payResult) {
showToast(activity, "支付结果确认中...");
}
@Override
public void onPayCancel(PayResult payResult) {
showToast(activity, "您已取消支付");
}
@Override
public void onPayFailure(PayResult payResult) {
showToast(activity, "支付失败\n" + payResult.getMemo());
}
});
if (TextUtils.isEmpty(orderInfo)) {
// set v1 config
Alipay.DEBUG = true;
Alipay.Config.appId = "";
Alipay.Config.rsa_private = "";
Alipay.Config.rsa_public = "";
Alipay.Config.notify_url = "app/pay/alipay_notify.do";
if (!alipay.check()) {
showToast(activity, "缺少配置,无法支付");
return;
}
String trans_order_id = OrderInfoUtil2_0.genOutTradeNo();
Map<String, String> map = OrderInfoUtil2_0.buildOrderParamMap(trans_order_id, "测试支付", "测试商品 1,测试商品 2",
String.valueOf(0.01f), null);
orderInfo = OrderInfoUtil2_0.getOrderInfo(map);
alipay.payV1(orderInfo);
}
else {
alipay.payV2(orderInfo);
}
}
微信支付
private void doWxpay(String orderInfo) {
final Activity activity = this;
// 获取支付类
Wxpay wxpay = Wxpay.getInstance(activity);
// 设置支付回调监听
wxpay.setPayListener(new Wxpay.PayListener() {
@Override
public void onPaySuccess(BaseResp resp) {
showToast(activity, "支付成功");
}
@Override
public void onPayCanceled(BaseResp resp) {
showToast(activity, "支付取消");
}
@Override
public void onPayFailure(BaseResp resp) {
showToast(activity, "支付失败");
}
});
// 这里是服务端下单,内容是统一下单返回的 xml
if (!TextUtils.isEmpty(orderInfo)) {
PayReq req = OrderInfoUtil.getPayReq(orderInfo);
wxpay.pay(req);
}
else { // 客户端下单
Wxpay.DEBUG = true; // 开启日志
// API 密钥,在微信商户平台设置
Wxpay.Config.api_key = "32 位的字串";
// APPID,在微信开放平台创建应用后生成
Wxpay.Config.app_id = "wx...";
// 商户 ID,注册商户平台后生成
Wxpay.Config.mch_id = "14...";
// 支付结果异步通知接口,由后台开发提供
Wxpay.Config.notify_url = "http://www.ieclipse.cn/app/pay/wxpay_notify.do";
// 创建统一下单异步任务
Wxpay.DefaultOrderTask task = new Wxpay.DefaultOrderTask(wxpay);
// 这个商户订单号,由后台返回,在这里随便生成一个
String outTradeNo = OrderInfoUtil2_0.genOutTradeNo();
// 设置统一下单的请求参数
task.setParams(OrderInfoUtil.buildOrderParamMap(outTradeNo, "测试支付", "", "1", null, null, null));
task.execute();
}
}
版本记录
0.2.0
- 支付银联支付 (aar sdk 3.5.4)
- 添加一些设计资源
0.1.0
- 使用支付宝最新的 aar sdk 15.5.9
- 使用微信支付 sdk 5.1.6
0.0.2
- 微信依赖改为
com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+