Skip to content

java02014/beecloud-android

Repository files navigation

BeeCloud Android SDK (Open Source)

pass license version

本SDK是根据BeeCloud Rest API 开发的 Android SDK。可以作为调用BeeCloud Rest API的示例或者直接用于生产。

流程

pic

安装

  1. 添加依赖
  1. 对于通过添加model的方式(适用于gradle,推荐直接使用Android Studio
    引入sdk model,在projectsettings.gradleinclude ':sdk',并在需要支付的model(比如本项目中的demobuild.gradle中添加依赖compile project(':sdk')
  1. 对于需要以jar方式引入的情况
    添加第三方的支付类,在beecloud-android\sdk\libs目录下
    gson-2.2.4.jar为必须引入的jar,
    微信支付需要引入libammsdk.jar
    支付宝需要引入alipaysdk.jaralipayutdid.jaralipaysecsdk.jar
    银联需要引入UPPayAssistEx.jarUPPayPluginEx.jar
    最后添加beecloud android sdkbeecloud-android\sdk\beecloud.jar

2.对于银联支付需要将银联插件beecloud-android\demo\src\main\assets\UPPayPluginEx.apk引入你的工程assets目录下

注册

  1. 注册开发者:猛击这里注册成为BeeCloud开发者。
  2. 注册应用:使用注册的账号登陆控制台后,点击"+创建App"创建新应用,并配置支付参数。

使用方法

具体使用请参考项目中的demo

1.初始化支付参数

请参考demo中的ShoppingCartActivity.java

  1. 在主activity的onCreate函数中初始化BeeCloud账户中的AppID和AppSecret,例如
BeeCloud.setAppIdAndSecret("c5d1cba1-5e3f-4ba0-941d-9b0a371fe719", "39a7a518-9ac8-4a9e-87bc-7885f33cf18c");

>2. 如果用到微信支付,在用到微信支付的Activity的onCreate函数里调用以下函数,第二个参数需要换成你自己的微信AppID,例如 ```java BCPay.initWechatPay(ShoppingCartActivity.this, "wxf1aa465362b4c8f1"); ```

2. 在AndroidManifest.xml中添加permission

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

3. 在AndroidManifest.xml中注册activity

对于微信支付,需要添加

<activity
    android:name="cn.beecloud.BCWechatPaymentActivity"
    android:launchMode="singleTop"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity-alias
    android:name=".wxapi.WXPayEntryActivity"
    android:exported="true"
    android:targetActivity="cn.beecloud.BCWechatPaymentActivity" />

对于支付宝,需要添加

<activity
    android:name="com.alipay.sdk.app.H5PayActivity"
    android:configChanges="orientation|keyboardHidden|navigation"
    android:exported="false"
    android:screenOrientation="behind"
    android:windowSoftInputMode="adjustResize|stateHidden" />

对于银联,需要添加

<activity
    android:name="cn.beecloud.BCUnionPaymentActivity"
    android:configChanges="orientation|keyboardHidden"
    android:excludeFromRecents="true"
    android:launchMode="singleTop"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:windowSoftInputMode="adjustResize" />

4.支付

请查看doc中的API,支付类BCPay,参照demoShoppingCartActivity

原型:

通过BCPay的实例,以reqWXPaymentAsync方法发起微信支付请求。
通过BCPay的实例,以reqAliPaymentAsync方法发起支付宝支付请求。
通过BCPay的实例,以reqUnionPaymentAsync方法发起银联支付请求。

参数依次为

billTitle 商品描述, UTF8编码格式, 32个字节内
billTotalFee 支付金额,以分为单位,必须是整数格式
billNum 商户自定义订单号
optional 为扩展参数,可以传入任意数量的key/value对来补充对业务逻辑
callback 支付完成后的回调入口

调用:(以微信为例)

//定义回调
BCCallback bcCallback = new BCCallback() {
    @Override
    public void done(final BCResult bcResult) {
        //此处根据业务需要处理支付结果
        final BCPayResult bcPayResult = (BCPayResult)bcResult;

        ShoppingCartActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                switch (bcPayResult.getResult()) {
                    case BCPayResult.RESULT_SUCCESS:
                        Toast.makeText(ShoppingCartActivity.this, "用户支付成功", Toast.LENGTH_LONG).show();
                        break;
                    case BCPayResult.RESULT_CANCEL:
                        Toast.makeText(ShoppingCartActivity.this, "用户取消支付", Toast.LENGTH_LONG).show();
                        break;
                    case BCPayResult.RESULT_FAIL:
                        Toast.makeText(ShoppingCartActivity.this, "支付失败, 原因: " + bcPayResult.getErrMsg()
                                + ", " + bcPayResult.getDetailInfo(), Toast.LENGTH_LONG).show();
                }
            }
        });
    }
};

//调用支付接口
Map<String, String> mapOptional = new HashMap<>();
String optionalKey = "测试key字段1";
String optionalValue = "测试value值1";

mapOptional.put(optionalKey, optionalValue);

//订单标题, 订单金额(分), 订单号, 扩展参数(可以null), 支付完成后回调入口
BCPay.getInstance(ShoppingCartActivity.this).reqWXPaymentAsync("微信支付测试", "1", UUID.randomUUID().toString().replace("-", ""), mapOptional, bcCallback);

5.查询

  • 查询支付订单

请查看doc中的API,支付类BCQuery,参照demoBillListActivity

原型:

通过构造BCQuery的实例,使用queryBillsAsync方法发起支付查询,该方法仅channel为必填参数,指代何种支付方式

调用:

//回调入口
final BCCallback bcCallback = new BCCallback() {
    @Override
    public void done(BCResult bcResult) {
    	//根据需求处理结果数据
        final BCQueryResult bcQueryResult = (BCQueryResult)bcResult;

        //resultCode为0表示请求成功
        //count包含返回的订单个数
        if (bcQueryResult.getResultCode() == 0) {
            //订单列表
            bills = bcQueryResult.getBills();
            Log.i(BillListActivity.TAG, "bill count: " + bcQueryResult.getCount());
        } else {
            bills = null;
            BillListActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    //错误信息
                    Toast.makeText(BillListActivity.this, "err code:" + bcQueryResult.getResultCode() +
                            "; err msg: " + bcQueryResult.getResultMsg() +
                            "; err detail: " + bcQueryResult.getErrDetail(), Toast.LENGTH_LONG).show();
                }
            });
        }
    }
};

//发起查询请求
BCQuery.getInstance().queryBillsAsync(
    BCReqParams.BCChannelTypes.UN_APP,      //渠道
    null,                                   //订单号
    startTime.getTime(),                    //订单生成时间
    endTime.getTime(),                      //订单完成时间
    2,                                      //忽略满足条件的前2条数据
    15,                                     //最低返回满足条件的15条数据
    bcCallback);

Demo

考虑到个人的开发习惯,本项目提供了Android StudioEclipse ADT两种工程的demo,为了使demo顺利运行,请注意以下细节

  1. 对于使用Android Studio的开发人员,下载源码后可以将demo_eclipse移除,Import Project的时候选择beecloud-androidsdkdemo的依赖modelgradle会自动关联。
  2. 对于使用Eclipse ADT的开发人员,Import Project的时候选择beecloud-android下的demo_eclipse,该demo下面已经添加所有需要的jar

测试

TODO

常见问题

  • 关于weekhook的接收
    文档请阅读 webhook

代码贡献

我们非常欢迎大家来贡献代码,我们会向贡献者致以最诚挚的敬意。

一般可以通过在Github上提交Pull Request来贡献代码。

Pull Request要求

  • 代码规范

  • 代码格式化

  • 必须添加测试! - 如果没有测试(单元测试、集成测试都可以),那么提交的补丁是不会通过的。

  • 记得更新文档 - 保证README.md以及其他相关文档及时更新,和代码的变更保持一致性。

  • 创建feature分支 - 最好不要从你的master分支提交 pull request。

  • 一个feature提交一个pull请求 - 如果你的代码变更了多个操作,那就提交多个pull请求吧。

  • 清晰的commit历史 - 保证你的pull请求的每次commit操作都是有意义的。如果你开发中需要执行多次的即时commit操作,那么请把它们放到一起再提交pull请求。

联系我们

  • 如果有什么问题,可以到QQ群-321545822BeeCloud开发者大联盟提问
  • 更详细的文档,见源代码的注释以及官方文档
  • 如果发现了bug,欢迎提交issue
  • 如果有新的需求,欢迎提交issue

代码许可

The MIT License (MIT).

About

BeeCloud Android SDK (Open Source)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published