HfaxSDK集成说明(by 星空武哥)

时间:2022-07-29 06:17:28

HfaxSDK集成说明

概述

HfaxSDK采用了快速集的方式,让用户集成更简便、更高效,极大提升了平台的对接效率,由于采用原生与JS桥接的方式,可以有效提升用户体验并且减少了依赖包的体积,并且HfaxSDK提供相应的API接口支持第三方使用平台与后台数据交互。

使用eclipse集成请访问:https://github.com/lsyz0021/hfaxsdk-eclipse

下载地址

Eclipse 下载链接:https://eyun.baidu.com/s/3i5A4vIl 密码:hfaxsdk

AndroidStudio 下载链接:https://eyun.baidu.com/s/3pLsbrSn 密码:hfaxsdk

AndroidStudio Gradle依赖:

compile 'com.hfax.hfaxsdk:hfaxsdk:20170629'

文档目录(点击快速导航)

HFaxSDK所需申请权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">

1 . AndroidStudio集成

1.1 集成方式 一

在build.gradle中添加依赖即可(推荐)

compile 'com.hfax.hfaxsdk:hfaxsdk:20170629'

1.2 集成方式 二

可以使用下面的方式集成,下载依赖包后,复制到module的libs目录内

1.2.1 下载HfaxSDK

AndroidStudio 下载链接:https://eyun.baidu.com/s/3pLsbrSn 密码:hfaxsdk

1.2.2 修改app/build.gradle 配置文件引入aar

HfaxSDK集成说明(by 星空武哥)

1.2.3 添加libs目录指向

repositories {
flatDir {
dirs 'libs'
}
dependencies {
compile(name: hfaxsdk_v20170629', ext:'aar')
}

1.2.4 在manifest文件里中配置HfaxActivity

记得在manifest节点下添加 xmlns:tools=”http://schemas.android.com/tools”

<manifest 
xmlns:tools="http://schemas.android.com/tools">

……
<activity
android:name="com.hfax.hfaxsdk.view.HfaxActivity"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
tools:replace="exported"/>

</manifest>

2 . Eclipse集成

2.1 下载eclipse集成的library

Eclipse github版:https://github.com/lsyz0021/hfaxsdk-eclipse

Eclipse 下载链接:https://eyun.baidu.com/s/3i5A4vIl 密码:hfaxsdk

2.2 下载完成后导入到项目中,然后依赖到项目中

HfaxSDK集成说明(by 星空武哥)

2.3 在manifest文件里中配置HfaxActivity

记得在manifest节点下添加 xmlns:tools=”http://schemas.android.com/tools”

<manifest 
xmlns:tools="http://schemas.android.com/tools">

……
<activity
android:name="com.hfax.hfaxsdk.view.HfaxActivity"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
tools:replace="exported"/>

</manifest>

3 . 微信分享

Hfaxsdk含有微信分享功能,但是没有将微信分享的依赖库打包到Hfaxsdk中,所以如果要使用微信分享功能,请将demo里提供的libammsdk.jar复制的项目的libs目录下,若项目中存在微信分享jar包,强烈建议使用我们提供微信分享jar包。

3.1 配置WXAPPID

在清单文件中增加如下配置

<meta-data
android:name="WXAPPID"
android:value="wxe************"/>

检查“WXEntryActivity”中是否配置获取的“WXAPPID”方法,否则会分享失败

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
// 在清单文件里配置 WXAPPID,然后再通过下面的方式获取
ApplicationInfo info = this.getPackageManager().getApplicationInfo(
getPackageName(), PackageManager.GET_META_DATA);
String ID = info.metaData.getString("WXAPPID");
IWXAPI wxApi = WXAPIFactory.createWXAPI(this, ID, true);
wxApi.handleIntent(getIntent(), this);
} catch (Exception e) {
e.printStackTrace();
}
}

3.2 导入微信分享的jar包到libs目录

HfaxSDK集成说明(by 星空武哥)

3.3 新建WXEntryActivity

在你的包名相应目录下新建一个wxapi包,并在该wxapi目录下新建一个WXEntryActivity(已存在就不用新建了),该类继承自Activity(例如应用程序的包名为com.hfax.hfaxsdkdemo,则新添加的类如下图所示)

HfaxSDK集成说明(by 星空武哥)

3.4 实现IWXAPIEventHandler接口

实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法

3.5 接收回调数据

在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法,示例如下图:

HfaxSDK集成说明(by 星空武哥)

当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。

HfaxSDK集成说明(by 星空武哥)

上面的详细配置可以参考demo

4 . 混淆配置

如果你的项目中开启了混淆,请在proguard-project.txt中添加下面的混淆规则

-keepclassmembers class fqcn.of.javascript.interface.for.webview {
public *;
}
-keep public class com.hfax.hfaxsdk.tools.**{ *;}
-keep public class com.hfax.hfaxsdk.view.**{ *;}
-keep public class com.hfax.hfaxsdk.jsbridge.** { *;}

# HfaxSDK含有微信分享功能,所以要配置微信混淆
-keep class com.tencent.mm.opensdk.** { *;}
-keep class com.tencent.wxop.** { *;}
-keep class com.tencent.mm.sdk.** { *;}

# 如果使用eclipse开发项目,请再添加下面的依赖
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.**
-dontwarn android.net.**

5 . HfaxSDK接口调用

HfaxSDK总共含有三个入口,分别为钱包入口、理财入口、支付入口,下面分别对这个三个入口的使用进行说明(详细使用请参考提供的demo)

5.1 . 钱包入口

将要求的传入的数据放入到一个HashMap集合中,然后进行如下操作

// 创建含有数据的hashMap
HashMap<String, Object> wallatHashMap = getMapData(
userName, userId, userMobile, userAuthKey, WXAPI, channelKey,
HfaxConstant.HFAX_VersionCode, merchantId);
HfaxSerializableMap wallatTmpMap = new HfaxSerializableMap();
wallatTmpMap.setMap(wallatHashMap);
Bundle wallatBundle = new Bundle();
wallatBundle.putSerializable(HfaxConstant.HFAX_MAP, wallatTmpMap);

Intent wallatIntent = new Intent(MainActivity.this, HfaxActivity.class);
wallatIntent.putExtra(HfaxConstant.HFAX_STATE, HfaxConstant.HFAX_ENTRY_WALLET);
wallatIntent.putExtras(wallatBundle);
startActivity(wallatIntent);

5.2 . 理财入口

理财入口传入的参数和钱包入口传入的参数是一样的

// 创建含有数据的hashMap
HashMap<String, Object> listHashMap = getMapData(
userName, userId, userMobile, userAuthKey, WXAPI, channelKey,
HfaxConstant.HFAX_VersionCode, merchantId);
HfaxSerializableMap listTmpMap = new HfaxSerializableMap();
listTmpMap.setMap(listHashMap);
Bundle listBundle = new Bundle();
listBundle.putSerializable(HfaxConstant.HFAX_MAP, listTmpMap);

Intent listIntent = new Intent(MainActivity.this, HfaxActivity.class);
listIntent.putExtra(HfaxConstant.HFAX_STATE, HfaxConstant.HFAX_ENTRY_LIST);
listIntent.putExtras(listBundle);
startActivity(listIntent);

5.3 . 支付入口

如果调用支付口入,并且想获取支付结果的回调,请在进入支付入口时使用startActivityForResult( )开启HfaxActivity,然后在当前的activity中重写onActivityResult方法(详细请参考的demo)

// 创建含有数据的hashMap
HashMap<String, Object> hashMap = getMapData(
userName, userId, userMobile, userAuthKey, WXAPI, channelKey,
HfaxConstant.HFAX_VersionCode, merchantId, ordrNO, consumeAmount, consumeRemark,
consumeTime, syncCallbackUrl, asyncCallbackUrl, extraField);
HfaxSerializableMap tmpMap = new HfaxSerializableMap();
tmpMap.setMap(hashMap);
Bundle bundle = new Bundle();
bundle.putSerializable(HfaxConstant.HFAX_MAP, tmpMap);

Intent intent = new Intent(MainActivity.this, HfaxActivity.class);
intent.putExtra(HfaxConstant.HFAX_STATE, HfaxConstant.HFAX_ENTRY_PURCHASE);
intent.putExtras(bundle);
startActivityForResult(intent, HfaxConstant.HFAX_REQUESTCODE_PURCHASE);

获取回调必须重写onActivityResult方法

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == HfaxConstant.HFAX_REQUESTCODE_PURCHASE) {
// 这里获取的result是json字符串,数据格式为 {"orderId":"123465"}
String result = data == null ? null : data.getStringExtra(HfaxConstant.HFAX_PAYCALLBACKDATA);
String orderId = "";
try {
if (!TextUtils.isEmpty(result)) {
JSONObject jsonObject = new JSONObject(result);
if (jsonObject.has(HfaxConstant.HFAX_ORDER_ID_KEY)) {
orderId = jsonObject.getString(HfaxConstant.HFAX_ORDER_ID_KEY);
}
}
} catch (JSONException e) {
e.printStackTrace();
}

switch (resultCode) {
case HfaxConstant.HFAX_PAY_SUCCESS_RESULTCODE: // 支付成功
Log.i("hfaxsdk", "支付成功,订单号 :" + orderId);
break;
case HfaxConstant.HFAX_PAY_FAIL_RESULTCODE: // 支付失败
Log.i("hfaxsdk", "支付失败,订单号 :" + orderId);
break;
default: // 没进入支付结果页就退出了
Log.i("hfaxsdk", "未操作");
break;
}
}
}

6 . 接口字段使用说明

关键字段:(所有字段在HfaxConstant类中)

key 说明 描述
HFAX_STATE 控制需要跳到到的hfax界面 HFAX_ENTRY_WALLET 钱包界面
HFAX_ENTRY_LIST 产品列表界面
HFAX_ENTRY_PURCHASE 支付界面
HFAX_MAP 需要传递的map,包括所有用户请求的参数信息等 必须使用HashMap<String, Object>
HFAX_EXIT_RESULT 获取退出hfaxSDK回调状态 返回的是Boolean类型(默认为false)
注:以下内容需要放在HfaxSerializableMap中进行序列化传递 注:以下内容需要放在HfaxSerializableMap中进行序列化传递
HFAX_WXID 设置微信分享APPID 必填,否则微信无法分享
HFAX_MERCHANTID 商户号id 所有请求必填
HFAX_CHANNELKEY 渠道key 所有请求必填
HFAX_AUTHKEY SDK用户authkey 非必填
HFAX_USERNAME 第三方平台用户名 非必填
HFAX_MOBILE 用户手机号 所有请求必填
HFAX_ORDERNO 订单号 消费时必填
HFAX_CONSUME_AMOUNT 消费金额:1200.23 消费时必填
HFAX_CONSUME_REMARK 消费备注 消费时必填
HFAX_CONSUME_TIME 消费时间:2017-04-01 15:25:35 消费时必填
HFAX_SYNCCALLBACKURL 消费结果前台回调地址 消费时必填
HFAX_ASYNCCALLBACKURL 消费结果后台回调地址 消费时必填
HFAX_EXTRAFIELD 消费回调扩展字段,否则消费前台后台回调会原样返回 非必填
HFAX_BASEURL 修改sdk服务器环境 开发时添加,上线app时必须删除

7 . 修改测试环境

HFaxSDK默认的是指向生产环境服务器,但是对于刚要接入的用户,难免需要在测试环境测试sdk,所以为了方便用户测试,可以参考下面的方式动态修改测试环境。(注意:setData()这个方法有两个)

HfaxSDK集成说明(by 星空武哥)

返回顶部