跳转至

AppPay

Image

MavenCentral JitPack CircleCI API License

AppPay for Android 是一个专注于App支付的库,将主流的官方App支付集成方式进行二次封装,简化集成步骤,让实现App支付更简单。

AppPay的各Module相关说明

模块(子库) 模块说明
WXPay 封装的微信支付库
AliPay 封装的支付宝支付库
UnionPay 封装的银联支付库
AppPay 基于以上所有子库进行整合再次封装,让集成App支付一步到位

AppPay的整体结构:将多个独立封装的子库再次封装,并且使用更简单。

结构

Image

引入

Gradle:

  1. 在Project的 build.gradlesetting.gradle 中添加远程仓库

    repositories {
        //...
        mavenCentral()
    }
    
  2. 在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 方法中调用 UnionPayonActivityResult(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 方法中调用 AppPayonActivityResult(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'
        }
    }

官方文档

微信支付Android接入指南

支付宝支付Android接入指南

银联支付Android接入指南