Skip to content

java02014/beecloud-android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ff42078 · Jul 31, 2015

History

14 Commits
Jul 31, 2015
Jul 31, 2015
Jul 30, 2015
Jul 30, 2015
Jul 31, 2015
Jul 31, 2015
Jul 30, 2015
Jul 30, 2015
Jul 31, 2015
Jul 30, 2015
Jul 30, 2015
Jul 30, 2015
Jul 30, 2015
Jul 31, 2015

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