盒子
盒子
文章目录
  1. 前言
  2. 准备工作
    1. 1.申请百川无线应用
    2. 2.开通业务产品的使用权限
    3. 3.获取安全图片
  3. 接入
    1. 添加安全图片 yw1222.jpg
    2. 项目中的build.gradle文件
    3. modle的build.gradle文件
    4. Proguard 规则
    5. AndroidManifest.xml
    6. Application初始化
    7. 工具类
    8. 资源销毁
  4. 参考

Android 阿里百川cps SDK接入流程

前言

因公司业务需求,需接入阿里百川SDK和京东联盟cps相关服务,为了跳到淘宝和京东,用户购买后得到佣金。接入过程中遇到很多坑,网上相关资料也甚少,虽然东西不算多,但花了不少时间,在此记录下来,为了以后的人能有个参考。
这里只跳转到天猫,淘宝的产品详情页,京东产品详情会另作文章分享。

准备工作

阿里百川 开发者控制台

1.申请百川无线应用

开发者控制台 应用管理

注意:Android端和IOS端各申请一个应用,虽然会提示名字不能重复但不影响,也是可以正常使用的。

2.开通业务产品的使用权限

业务产品的使用权限

3.获取安全图片

获取安全图片

注意:
1.一定要使用gradle3.0以下的编译环境的包,不然会提示“上传失败”(这个坑了我好长时间)。
2.对应的keystore要一致,虽然我没有遇到问题,但看到其他人反馈过,小心为妙。

接入


下载百川电商SDK
里面会有很详细的说明,这里只快速的过一遍,总结一下自己遇到的坑及解决方法。

添加安全图片 yw1222.jpg

获得安全图片,并放在/res/drawable目录下,如果已经有安全图片,需要替换。

项目中的build.gradle文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
maven {
url 'http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/'
}
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'//Added line
allprojects {
repositories {
jcenter()
maven {
url 'https://maven.google.com/'
name 'Google'
}
maven {
url 'http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/'
}
}
}

modle的build.gradle文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
repositories {
maven {
url "http://mvnrepo.alibaba-inc.com/mvn/repository"
}
flatDir {
dirs 'libs'
}
}
//fastjson
compile 'com.alibaba:fastjson:1.2.9'
//支付
compile 'com.alibaba.alipay:alipaySingle:20160825@jar'
//登陆
compile 'com.ali.auth.sdk:alibabauth_core:1.4.3@jar'
compile 'com.ali.auth.sdk:alibabauth_ui:1.4.3@aar'
compile 'com.ali.auth.sdk:alibabauth_ext:1.4.3@jar'
//安全基础
compile 'com.taobao.android:securityguardaar3:5.1.81@aar'
//Mtop网关
compile 'com.taobao.android:mtopsdk_allinone_open:1.2.2.4@jar'
//applink
compile 'com.alibaba.sdk.android:alibc_link_partner:1.1.0.0'
//UT (因为和友盟推送的jar重复,所以去掉,不然会报错!!!)
//compile 'com.taobao.android:utdid4all:1.1.5.3_proguard@jar'
compile 'com.alibaba.mtl:app-monitor-sdk:2.5.1.3_for_bc_proguard@jar'
//联盟SDK
compile 'com.alimama.tunion.sdk:tuniontradesdk:0.3.2'
//电商SDK
compile 'com.alibaba.sdk.android:alibc_trade_common:3.1.1.206'
compile 'com.alibaba.sdk.android:alibc_trade_biz:3.1.1.206'
compile 'com.alibaba.sdk.android:alibc_trade_sdk:3.1.1.206'

Proguard 规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-keepattributes Signature
-keep class sun.misc.Unsafe { *; }
-keep class com.taobao.** {*;}
-keep class com.alibaba.** {*;}
-keep class com.alipay.** {*;}
-dontwarn com.taobao.**
-dontwarn com.alibaba.**
-dontwarn com.alipay.**
-keep class com.ut.** {*;}
-dontwarn com.ut.**
-keep class com.ta.** {*;}
-dontwarn com.ta.**
-keep class org.json.** {*;}
-keep class com.ali.auth.** {*;}

AndroidManifest.xml

1
2
3
<!--cps-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
tools:replace="android:allowBackup"

Application初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// AlibcTradeCommon.turnOnDebug();
// AlibcTradeBiz.turnOnDebug();
//电商SDK初始化
AlibcTradeSDK.asyncInit(app, new AlibcTradeInitCallback() {
@Override
public void onSuccess() {
Toast.makeText(app, "初始化成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int code, String msg) {
Toast.makeText(app, "初始化失败,错误码="+code+" / 错误消息="+msg, Toast.LENGTH_SHORT).show();
}
});

工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
private final static String H5 = "H5";
private final static String TAOBAO = "taobao";
private final static String TMALL = "tmall";
private final static String AUTO = "auto";
private static void showDetailPage(Activity activity, String id, String type) {
AlibcShowParams alibcShowParams;
switch (type) {
case H5:
alibcShowParams = new AlibcShowParams(OpenType.H5, false);
break;
case TAOBAO:
alibcShowParams = new AlibcShowParams(OpenType.Native, false);
alibcShowParams.setClientType("taobao_scheme");
break;
case TMALL:
alibcShowParams = new AlibcShowParams(OpenType.Native, false);
alibcShowParams.setClientType("tmall_scheme");
break;
case AUTO:
alibcShowParams = new AlibcShowParams(OpenType.Auto, false);
break;
default:
alibcShowParams = new AlibcShowParams(OpenType.Auto, false);
break;
}
AlibcBasePage alibcBasePage = new AlibcDetailPage(id);
HashMap<String, String> exParams = new HashMap<>();
// 固定写法
exParams.put(AlibcConstants.ISV_CODE, "appisvcode");
// 若非淘客taokeParams设置为null即可 mm_memberId_siteId_adzoneId
// pid:广告位id
AlibcTaokeParams alibcTaokeParams = new AlibcTaokeParams();
// adzoneid 为mm_memberId_siteId_adzoneId最后一位
alibcTaokeParams.adzoneid = "33333";
alibcTaokeParams.pid = "mm_11111_22222_33333";
alibcTaokeParams.subPid = "mm_11111_22222_33333";
alibcTaokeParams.extraParams = new HashMap<>();
alibcTaokeParams.extraParams.put("taokeAppkey", "xxxxxxx");
AlibcTrade.show(activity, alibcBasePage, alibcShowParams, alibcTaokeParams, exParams, new AlibcTradeCallback() {
@Override
public void onTradeSuccess(AlibcTradeResult alibcTradeResult) {
}
@Override
public void onFailure(int i, String s) {
// Toast.makeText(App.getInstance(), "初始化失败,错误码=" + i + " / 错误消息=" + s, Toast.LENGTH_SHORT).show();
}
});
}
/**
* 跳淘宝详情
*/
public static void showTaobaoDetail(Activity activity, String id) {
if (Tools.isApplicationAvilible(activity, "com.taobao.taobao")) {
showDetailPage(activity, id, TAOBAO);
} else {
showDetailPage(activity, id, AUTO);
}
}
/**
* 跳天猫详情
*/
public static void showTmallDetail(Activity activity, String id) {
if (Tools.isApplicationAvilible(activity, "com.tmall.wireless")) {
showDetailPage(activity, id, TMALL);
} else {
showDetailPage(activity, id, AUTO);
}
}

资源销毁

在使用完成后,可以调用destroy方法,释放百川相应的资源引用

1
AlibcTradeSDK.destroy();

参考

联系我:GitHub简书

支持一下
扫一扫,支持我
  • 微信扫一扫
  • 支付宝扫一扫