前言
因公司业务需求,需接入阿里百川SDK和京东联盟cps相关服务,为了跳到淘宝和京东,用户购买后得到佣金。接入过程中遇到很多坑,网上相关资料也甚少,虽然东西不算多,但花了不少时间,在此记录下来,为了以后的人能有个参考。
这里只跳转到天猫,淘宝的产品详情页,京东产品详情会另做文章分享。
准备工作
1.申请百川无线应用
注意:Android端和IOS端各申请一个应用,虽然会提示名字不能重复但不影响,也是可以正常使用的。
2.开通业务产品的使用权限
3.获取安全图片
注意:
1.一定要使用gradle3.0以下的编译环境的包,不然会提示“上传失败”(这个坑了我好长时间)。
2.对应的keystore要一致,虽然我没有遇到问题,但看到其他人反馈过,小心为妙。
接入
下载百川电商SDK
里面会有很详细的说明,这里只快速的过一遍,总结一下自己遇到的坑及解决方法。
添加安全图片 yw1222.jpg
获得安全图片,并放在/res/drawable目录下,如果已经有安全图片,需要替换。
项目中的build.gradle
文件
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文件
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 规则
-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
<!--cps-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
tools:replace="android:allowBackup"
Application初始化
// 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();
}
});
工具类
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方法,释放百川相应的资源引用
AlibcTradeSDK.destroy();