AppPay¶
AppPay for Android 是一个专注于App支付的库,将主流的官方App支付集成方式进行二次封装,简化集成步骤,让实现App支付更简单。
AppPay的各Module相关说明¶
模块(子库) | 模块说明 |
---|---|
WXPay | 封装的微信支付库 |
AliPay | 封装的支付宝支付库 |
UnionPay | 封装的银联支付库 |
AppPay | 基于以上所有子库进行整合再次封装,让集成App支付一步到位 |
AppPay的整体结构:将多个独立封装的子库再次封装,并且使用更简单。
结构¶
引入¶
Gradle:¶
-
在Project的 build.gradle 或 setting.gradle 中添加远程仓库
repositories { //... mavenCentral() }
-
在Module的 build.gradle 里面添加引入依赖项
// WXPay implementation 'com.github.jenly1314.AppPay:wxpay:2.1.0' // AliPay implementation 'com.github.jenly1314.AppPay:alipay:2.1.0' // UnionPay implementation 'com.github.jenly1314.AppPay:unionpay:2.1.0' // AppPay implementation 'com.github.jenly1314.AppPay:apppay:2.1.0'
使用¶
WXPay¶
微信App支付:支持商户App调用微信提供的SDK调用微信支付模块,商户App会跳转到微信中完成支付,支付完后跳回到商户App内,最后展示支付结果;
WXPay 主要是基于官方的微信支付SDK进行二次封装,简化集成步骤;使用 WXPay 可快速接入微信App支付;
WXPay代码示例¶
// 初始化微信支付
mWXPay = new WXPay(Context context);
// 设置微信支付监听
mWXPay.setOnPayListener(new WXPay.OnPayListener() {
@Override
public void onPayResult(WXPayResult result) {
// 支付结果
if (result.isSuccess()) {
// TODO 支付成功
}
}
});
// 发送微信支付请求
mWXPay.sendReq(WXPayReq req);
// 发送微信支付请求并监听(参数:req为拉起支付的请求参数)
mWXPay.sendReq(req, new WXPay.OnPayListener() {
@Override
public void onPayResult(WXPayResult result) {
// 支付结果
if (result.isSuccess()) {
// TODO 支付成功
}
}
});
AliPay¶
支付宝App支付:指商家在商家移动端 App 中集成支付宝 SDK,调起支付宝来完成付款的一种支付产品。适用于在商家移动端 App 内使用支付宝支付功能的场景。
AliPay 主要是基于官方的支付宝支付SDK进行二次封装,简化集成步骤;使用 AliPay 可快速接入支付宝App支付;
AliPay代码示例¶
// 初始化支付宝支付
mAliPay = new AliPay(Activity activity);
// 设置支付宝支付监听
mAliPay.setOnPayListener(new AliPay.OnPayListener() {
@Override
public void onPayResult(AliPayResult result) {
// 支付结果
if(result.isSuccess()){
//TODO 支付成功
}
}
});
// 发送支付宝支付请求;
mAliPay.sendReq(String orderInfo);
// 发送支付宝支付请求并监听(参数:orderInfo为拉起支付的订单信息)
mAliPay.sendReq(orderInfo, new AliPay.OnPayListener() {
@Override
public void onPayResult(AliPayResult result) {
// 支付结果
if(result.isSuccess()){
//TODO 支付成功
}
}
});
UnionPay¶
银联支付:支持商户移动端APP或者WAP网页中拉起云闪付APP、手机Pay、银行APP(云网版、网银版)等支付工具完成支付;使用 UnionPay 可快速接入银联支付;
UnionPay 主要是基于官方的银联支付SDK进行二次封装,简化集成步骤;使用 UnionPay 可快速接入银联支付;
UnionPay代码示例¶
// 初始化银联支付
mUnionPay = new UnionPay(Context context);
// 设置银联支付监听
mUnionPay.setOnPayListener(new UnionPay.OnPayListener() {
@Override
public void onPayResult(UnionPayResult result) {
// 支付结果
if(result.isSuccess()){
//TODO 支付成功
}
}
});
// 发送银联支付请求;(参数:orderInfo为订单信息的流水号,即TN;serverMode为银联后台环境标识;用于区分使用测试环境还是正式环境;说明参见:UnionPay.PRO_SERVER_MODE 和 UnionPay.TEST_SERVER_MODE)
mUnionPay.sendReq(String orderInfo, String serverMode);
// 发送银联支付请求并监听;(参数:orderInfo为订单信息的流水号,即TN;serverMode为银联后台环境标识;用于区分使用测试环境还是正式环境;说明参见:UnionPay.PRO_SERVER_MODE 和 UnionPay.TEST_SERVER_MODE)
mUnionPay.sendReq(orderInfo, serverMode, new UnionPay.OnPayListener() {
@Override
public void onPayResult(UnionPayResult result) {
// 支付结果
if(result.isSuccess()){
//TODO 支付成功
}
}
});
使用银联支付时需要在
Activity
中的onActivityResult
方法中调用 UnionPay 的 onActivityResult(int, int, Intent)} 方法,这样设置的银联支付监听才会被触发。
AppPay¶
AppPay 是基于以上所有子库进行整合再次封装,让集成App支付一步到位。
AppPay代码示例¶
// 初始化AppPay
mAppPay = new AppPay(Activity activity);
// 发送微信支付请求(参数:req为拉起支付的请求参数)
mAppPay.sendWXPayReq(req, new WXPay.OnPayListener() {
@Override
public void onPayResult(WXPayResult result) {
// 支付结果
if (result.isSuccess()) {
// TODO 支付成功
}
}
});
// 发送支付宝支付请求(参数:orderInfo为拉起支付的订单信息)
mAppPay.sendAliPayReq(orderInfo, new AliPay.OnPayListener() {
@Override
public void onPayResult(AliPayResult result) {
// 支付结果
if (result.isSuccess()) {
// TODO 支付成功
}
}
});
// 发送银联支付请求(参数:orderInfo为订单信息的流水号,即TN;serverMode为银联后台环境标识;用于区分使用测试环境还是正式环境;说明参见:UnionPay.PRO_SERVER_MODE 和 UnionPay.TEST_SERVER_MODE)
mAppPay.sendUnionPayReq(orderInfo, serverMode, new UnionPay.OnPayListener() {
@Override
public void onPayResult(UnionPayResult result) {
// 支付结果
if (result.isSuccess()) {
// TODO 支付成功
}
}
});
使用银联支付时需要在
Activity
中的onActivityResult
方法中调用 AppPay 的 onActivityResult(int, int, Intent)} 方法,这样设置的银联支付监听才会被触发。
更多使用详情,请查看app中的源码使用示例或直接查看 API帮助文档
补充说明¶
关于银联支付相关的应用可见性适配¶
当 targetSdkVersion 为30或以上时,请在 AndroidManifest 中加入以下内容,以符合 Android 应用可见性机制的要求。
方式一:直接配置读取所有应用列表的权限(可能会影响应用上架)
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
方式二:配置需要查询的应用对应的包名(如果你无法使用方式一,那么可以用方式二)
<!-- 适配应用可见性:银联支付支持对应各商户相关的App包名 -->
<queries>
<!-- 云闪付 -->
<package android:name="com.unionpay" />
<!-- 其他安卓 pay -->
<package android:name="com.unionpay.tsmservice" />
<!-- 小米 pay -->
<package android:name="com.unionpay.tsmservice.mi" />
<!-- 华为钱包 -->
<package android:name="com.huawei.wallet" />
<!-- 平安口袋银行 -->
<package android:name="com.cmbc.cc.mbank" />
<!-- 中国建设银行 -->
<package android:name="com.pingan.paces.ccms" />
<!-- 建行生活 -->
<package android:name="com.chinamworld.main" />
<!-- 中信银行 -->
<package android:name="com.ecitic.bank.mobile" />
<!-- 动卡空间 -->
<package android:name="com.citiccard.mobilebank" />
<!-- 光大银行 -->
<package android:name="com.cebbank.mobile.cemb" />
<!-- 阳光惠生活 -->
<package android:name="com.ebank.creditcard" />
<!-- 民生银行 -->
<package android:name="cn.com.cmbc.newmbank" />
<!-- 全民生活 -->
<package android:name="com.cmbc.cc.mbank" />
<!-- 浦发银行 -->
<package android:name="cn.com.spdb.mobilebank.per" />
<!-- 浦大喜奔 -->
<package android:name="com.spdbccc.app" />
<!-- 交通银行 -->
<package android:name="com.bankcomm.Bankcomm" />
<!-- 买单吧 -->
<package android:name="com.bankcomm.maidanba" />
<!-- 招商银行 -->
<package android:name="cmb.pb" />
<!-- 掌上生活 -->
<package android:name="com.cmbchina.ccd.pluto.cmbActivity" />
<!-- 上海银行 -->
<package android:name="cn.com.shbank.mper" />
<!-- 上银美好生活 -->
<package android:name="cn.com.shbank.pension" />
<!-- 北京银行(京彩生活) -->
<package android:name="com.bankofbeijing.mobilebanking" />
<!-- 掌上京彩 -->
<package android:name="com.csii.bj.ui" />
<!-- 中国工商银行 -->
<package android:name="com.icbc" />
<!-- 工银 e 生活 -->
<package android:name="com.icbc.elife" />
<!-- 中国农业银行 -->
<package android:name="com.android.bankabc" />
<!-- 农银 e 管家 -->
<package android:name="com.abchina.ebizbtob" />
<!-- 邮储银行 -->
<package android:name="com.yitong.mbank.psbc" />
<!-- 邮储信用卡 -->
<package android:name="com.yitong.mbank.psbc.creditcard" />
<!-- 中国银行 -->
<package android:name="com.chinamworld.bocmbci" />
<!-- 缤纷生活 -->
<package android:name="com.forms" />
<!-- 广发银行 -->
<package android:name="com.cgbchina.xpt" />
<!-- 发现精彩 -->
<package android:name="com.cs_credit_bank" />
<!-- 兴业银行 -->
<package android:name="com.cib.cibmb" />
<!-- 好兴动 -->
<package android:name="com.cib.xyk" />
<!-- 华夏银行 -->
<package android:name="com.hxb.mobile.client" />
<!-- 华彩生活 -->
<package android:name="com.HuaXiaBank.HuaCard" />
<!-- 兰州银行 -->
<package android:name="cn.com.lzb.mobilebank.per" />
</queries>
其他¶
ABI过滤¶
在Module的 build.gradle 里面的 android{} 中设置支持的 SO 库架构(可选,支持多个平台的 so,支持的平台越多,APK体积越大)
defaultConfig {
//...
ndk {
//设置支持的 SO 库架构(开发者可以根据需要,选择一个或多个平台的 so)
abiFilters 'armeabi-v7a' // , 'arm64-v8a', 'x86', 'x86_64'
}
}