Giter Site home page Giter Site logo

jamling / af-pay Goto Github PK

View Code? Open in Web Editor NEW
112.0 4.0 24.0 3.57 MB

精简的Android支付SDK,对支付宝alipaySdk和微信wechat-sdk进行了二次封装,支持支付宝、微信和银联支付,支持客户端/服务端下单支付

License: Apache License 2.0

Java 100.00%
android payment-integration alipay-sdk wechat-pay unionpay

af-pay's Introduction

af-pay

Build Status GitHub release Bintray Jitpack

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:+

说明

  • 因本demo未申请支付宝支付和微信支付,所以在示例中无法支付成功。
  • af-pay原来是包含在QuickAF中,建议使用QuickAF的同学们更新依赖。
  • 日志tag为pay_sdk,可以设置Wxpay.DEUBG = trueAlipay.DEUBG = true来开启日志。
  • 更多请加入QQ群: 629153672

af-pay's People

Contributors

jamling avatar sungerk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

af-pay's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.