百川SDK-Android接入文档(4.0.0.2)

更新时间:2019/09/19 访问次数:17151

新媒体接入指南

准备工作

  • 申请百川无线应用(已有百川应用的用户此步骤跳过)
    • 首先在控制台申请入驻百川,成为百川开发者,并创建好自己的应用
    • 如何申请
  • 下载安全图片
    • 新用户,在应用申请成功以后,需要进入百川控制台,点此进入,在该页面选择自己的应用,然后获取最新的安全图片,安卓需要将安全图片放在/res/drawable目录下;由于本次SDK审计包括安全图片,所以针对老用户也需要重新获取安全图片,并下载到本地
    • image
  • 开通业务产品的使用权限
    image

Android百川组件说明

  • 打包体积说明(待定)
  • 基础安全组件(必选)
    • 安全黑匣子(无线保镖),加密&解密,安全签名,风控相关内容;其中包含 x86、x86_64、arm64-v8a、armeabi、armeabi-v7a 五个架构平台的so包,整包大小为1.8M,每个平台的so包为400kb左右,可以进行裁剪;如需裁剪,请联系百川技术同学
    implementation  'com.taobao.android:securityguardaar3:5.4.171@aar' 
    implementation 'com.taobao.android:securitybodyaar3:5.4.99@aar' 
    implementation 'com.taobao.android:avmpaar3:5.4.36@aar' 
    implementation 'com.taobao.android:sgmiddletieraar3:5.4.9@aar'
  • mtop(必选)

    • Mtop,网关(稳定的高性能无线RPC网关,网关本身包含了一套安全体系,包括加密传输、防攻击、防刷、防篡改、过载保护等安全策略,同时针对无线网络的特点,在连通性、网络加速、流量方面进行了针对性优化)(177kb)
    implementation 'com.taobao.android:mtopsdk_allinone_open:3.1.2.5@jar'
  • 登录授权(必选)
    implementation 'com.ali.auth.sdk:alibabauth_core:2.0.0.6@aar'
    implementation 'com.ali.auth.sdk:alibabauth_ui:2.0.0.6@aar'
    implementation 'com.ali.auth.sdk:alibabauth_ext:2.0.0.6@aar'
  • appLink(必选)
    • applink,打通“手机淘宝”与三方app的桥梁,实现手机淘宝与三方app之间的往返跳转,包括登陆时跳手淘授权,用手淘打开商品页,店铺等(53kb)
    implementation 'com.alibaba.sdk.android:alibc_link_partner:4.1.11@aar'
  • 基础电商组件(必选)
    • 包含打开detail,淘客分佣,jsbridge注入等功能.
    implementation 'com.alibaba.sdk.android:AlibcTradeCommon:4.0.0.2@aar'
    implementation 'com.alibaba.sdk.android:AlibcTradeBiz:4.0.0.2@aar'
    implementation 'com.alibaba.sdk.android:nb_trade:4.0.0.2@aar'
  • 支付宝SDK(可选)

    • 手机支付宝支付接口开发包主要用来向第三方应用程序提供便捷、安全以及可靠的支付服务。使用支付宝极简支付的isv需要该组件,否则会降级到h5支付,功能不会有影响,但是用户体验会降低
    implementation ‘com.alipay.android.app.cashier:standardcashier-single:15.6.5@aar
    compileOnly ‘com.alipay.mobile.android.securitysdk:apsecuritysdk-all:3.3.0’

Gradle接入方式

  • 获得安全图片(图片获取方式见接入准备文档),并放在/res/drawable目录下,如果已经有安全图片,需要替换。
  • 老用户升级,请先删除原来的所有jar & aar依赖
  • gradle配置
    • 在整个项目的gradle基础配置文件中加入仓库地址:
    allprojects {
     repositories {
       jcenter()
           maven {
                url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/"
            }
        }
    }
    • 在项目module的gradle文件中加入相关依赖
    dependencies { 
     ..... 
     //支付宝(可选) 
     implementation 'com.alipay.android.app.cashier:standardcashier-single:15.6.5@aar'
     compileOnly 'com.alipay.mobile.android.securitysdk:apsecuritysdk-all:3.3.0'
     //登陆 
     implementation 'com.ali.auth.sdk:alibabauth_core:2.0.0.6@aar' 
     implementation 'com.ali.auth.sdk:alibabauth_ui:2.0.0.6@aar' 
     implementation 'com.ali.auth.sdk:alibabauth_ext:2.0.0.6@aar' 
     //安全组件 
     implementation 'com.taobao.android:securityguardaar3:5.4.171@aar' 
     implementation 'com.taobao.android:securitybodyaar3:5.4.99@aar' 
     implementation 'com.taobao.android:avmpaar3:5.4.36@aar' 
     implementation 'com.taobao.android:sgmiddletieraar3:5.4.9@aar'
     //Mtop 
     implementation 'com.taobao.android:mtopsdk_allinone_open:3.1.2.5@jar' 
     //applink 
     implementation 'com.alibaba.sdk.android:alibc_link_partner:4.1.11@aar' 
     //ut 
     implementation 'com.taobao.android:utdid4all:1.1.5.3_proguard' 
     implementation 'com.alibaba.mtl:app-monitor-sdk:2.6.4.5_for_bc' 
     // 电商基础组件 
     implementation 'com.alibaba.sdk.android:AlibcTradeCommon:4.0.0.2@aar' 
     implementation 'com.alibaba.sdk.android:AlibcTradeBiz:4.0.0.2@aar' 
     implementation 'com.alibaba.sdk.android:nb_trade:4.0.0.2@aar'
     implementation 'com.alibaba:fastjson:1.2.41'
     ..... 
    }

aar接入方式

  • 将各个sdk的aar文件下载放到到本地工程的libs目录下,按照如下方式接入:(name以实际的本地aar或jar包的名字为准)
dependencies {
    .....
    //支付宝
    implementation(name:'standardcashier-single', ext:'aar')
    compileOnly(name:'apsecuritysdk-all', ext:'jar')
    //登陆
    implementation(name:'alibabauth_core', ext:'jar')
    implementation(name:'alibabauth_ui', ext:'aar')
    implementation(name:'alibabauth_ext', ext:'jar')
    //安全组件
    implementation(name:'securityguardaar3', ext:'aar')
    implementation(name:'securitybodyaar3', ext:'aar')
    implementation(name:'avmpaar3', ext:'aar')
    implementation(name:'MiddleTierSDK-external-debug', ext:'aar')
    //Mtop
    implementation(name:'mtopsdk_allinone_open', ext:'jar')
    //applink
    implementation(name:'alibc_link_partner', ext:'aar')
    //ut
    implementation(name:'utdid4all', ext:'jar')
    implementation(name:'app-monitor-sdk', ext:'jar')
    // 电商基础组件
    implementation(name:'AlibcTradeCommon', ext:'aar')
    implementation(name:'AlibcTradeBiz', ext:'aar')
    implementation(name:'nb_trade', ext:'aar')
    implementation 'com.alibaba:fastjson:1.2.41'
    .....
}

混淆原则

-keepattributes Signature
-ignorewarnings
-keep class javax.ws.rs.** { *; }
-keep class com.alibaba.fastjson.** { *; }
-dontwarn com.alibaba.fastjson.**
-keep class sun.misc.Unsafe { *; }
-dontwarn sun.misc.**
-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.**  {*;}
-dontwarn com.ali.auth.**
-keep class com.taobao.securityjni.** {*;}
-keep class com.taobao.wireless.security.** {*;}
-keep class com.taobao.dp.**{*;}
-keep class com.alibaba.wireless.security.**{*;}
-keep interface mtopsdk.mtop.global.init.IMtopInitTask {*;}
-keep class * implements mtopsdk.mtop.global.init.IMtopInitTask {*;}

快速入门

初始化


AlibcTradeSDK.asyncInit(this, new AlibcTradeInitCallback() { @Override public void onSuccess() { Toast.makeText(BaseApplication.this, "初始化成功", Toast.LENGTH_SHORT).show(); } @Override public void onFailure(int code, String msg) { Toast.makeText(BaseApplication.this, "初始化失败", Toast.LENGTH_SHORT).show(); } });

电商API的使用


// 以code的方式打开电商页面(eg:详情--detail,店铺--shop) // 页面实例 AlibcBasePage page = new AlibcDetailPage(itemId); AlibcBasePage page = new AlibcShopPage(shopId); //展示参数配置 AlibcShowParams showParams = new AlibcShowParams(); showParams.setOpenType(openType); showParams.setClientType(clientType); showParams.setBackUrl(BACK_URL); showParams.setNativeOpenFailedMode(nativeOpenFailedMode); // showParam各参数介绍 1、OpenType(页面打开方式): 枚举值(Auto和Native),Native表示唤端,Auto表示不做设置 2、clientType表示唤端类型:taobao---唤起淘宝客户端;tmall---唤起天猫客户端 3、BACK_URL(小把手):唤端返回的scheme (如果不传默认将不展示小把手;如果想展示小把手,可以自己传入自定义的scheme, 或者传入百川提供的默认scheme:"alisdk://") 4、AlibcFailModeType(唤端失败模式): 枚举值如下 AlibcNativeFailModeNONE:不做处理; AlibcNativeFailModeJumpBROWER:跳转浏览器; AlibcNativeFailModeJumpDOWNLOAD:跳转下载页; AlibcNativeFailModeJumpH5:应用内webview打开) (注:AlibcNativeFailModeJumpBROWER不推荐使用) 5、degradeUrl(降级url):可自行设置降级url,如果唤端失败且设置了降级url,则加载该url // taokeParams(淘客)参数配置:配置aid或pid的方式分佣 参数说明: pid unionId subPid adzoneId extraParams (注:1、如果走adzoneId的方式分佣打点,需要在extraParams中显式传入taokeAppkey,否则打点失败; 2、如果是打开店铺页面(shop),需要在extraParams中显式传入sellerId,否则同步打点转链失败) AlibcTaokeParams taokeParams = new AlibcTaokeParams("", "", ""); taokeParams.setPid("mm_112883640_11584347_72287650277"); //taokeParams.setAdzoneid("29932014"); //adzoneid是需要taokeAppkey参数才可以转链成功&店铺页面需要卖家id(sellerId),具体设置方式如下: taokeParams.extraParams.put("taokeAppkey", "xxxxx") taokeParams.extraParams.put("sellerId", "xxxxx") //自定义参数 Map<String, String> trackParams = new HashMap<>(); AlibcTrade.openByBizCode(FeatureActivity.this, page, null, new WebViewClient(), new WebChromeClient(), "detail", showParams, taokeParams, trackParams, new AlibcTradeCallback() { @Override public void onTradeSuccess(AlibcTradeResult tradeResult) { // 交易成功回调(其他情形不回调) AlibcLogger.i(TAG, "open detail page success"); } @Override public void onFailure(int code, String msg) { // 失败回调信息 AlibcLogger.e(TAG, "code=" + code + ", msg=" + msg); if (code == -1) { Toast.makeText(FeatureActivity.this, "唤端失败,失败模式为none", Toast.LENGTH_SHORT).show(); } } }); // 以显示传入url的方式打开页面(第二个参数是套件名称) AlibcTrade.openByUrl(FeatureActivity.this, "", url, null, new WebViewClient(), new WebChromeClient(), showParams, taokeParams, trackParams, new AlibcTradeCallback() { @Override public void onTradeSuccess(AlibcTradeResult tradeResult) { AlibcLogger.i(TAG, "request success"); } @Override public void onFailure(int code, String msg) { AlibcLogger.e(TAG, "code=" + code + ", msg=" + msg); if (code == -1) { Toast.makeText(FeatureActivity.this, msg, Toast.LENGTH_SHORT).show(); } } });

API的一些说明

  • 页面类型(Page实例)
    • 相比旧版本,新版本不再支持AlibcPage,存在普通url的情况直接调用openByUrl即可;以下Page实例支持openByBizCode的方式调用。
    • 详情(商品详情页)
    • @param itemId 支持itemId和openItemId的商品,必填,不允许为null;
    • eg: 37196464781L;AAHd5d-HAAeGwJedwSnHktBI;
      public class AlibcDetailPage {
      public AlibcDetailPage(String itemId);
      }
    • 店铺(店铺页面 )

      • @param shopId 店铺id,支持明文id
        public class AlibcShopPage {
        public AlibcShopPage(String shopId);
        }
  • sdk的其他配置
    • 设置淘客SDK打点的方式(同步或异步)

    /** * 提供配置文件和全局接口两种形式,全局接口优先,没有配置时以服务端下发的配置为准 * 设置是否使用同步淘客打点。true:使用淘客同步打点;false:关闭同步打点,使用异步打点; * 注意:初始化完成后调用才能生效 * * @param isSyncForTaoke(默认为false) * @return 返回同步淘客打点策略是否设置成功 */ public static boolean setSyncForTaoke(boolean isSyncForTaoke) 调用: AlibcTradeSDk.setSyncForTaoke(boolean isSyncForTaoke)
    • 登录组件

    //登录 public void login(View view) { AlibcLogin alibcLogin = AlibcLogin.getInstance(); alibcLogin.showLogin(new AlibcLoginCallback() { @Override public void onSuccess(int loginResult, String openId, String userNick) { // 参数说明: // loginResult(0--登录初始化成功;1--登录初始化完成;2--登录成功) // openId:用户id // userNick: 用户昵称 Log.i(TAG, "获取淘宝用户信息: " + AlibcLogin.getInstance().getSession()); } @Override public void onFailure(int code, String msg) { // code:错误码 msg: 错误信息 } }); } //登出 public void logout(View view) { AlibcLogin alibcLogin = AlibcLogin.getInstance(); alibcLogin.logout(new AlibcLoginCallback() { @Override public void onSuccess(int loginResult, String openId, String userNick) { // 参数说明: // loginResult(3--登出成功) // openId:用户id // userNick: 用户昵称 } @Override public void onFailure(int code, String msg) { // code:错误码 msg: 错误信息 } }); }
  • 设置渠道

    • 设置渠道信息(如果有特殊渠道专享价,需要设置,默认不要使用)
    • 注意:初始化完成后调用才能生效
    • @param typeName : 渠道类型(默认为:0)
    • @param channelName : 渠道名称(默认为:null)

      public static void setChannel(String typeName, String channelName)
      调用:
      AlibcTradeSDk.setChannel(String typeName, String channelName)
    • 设置isv版本

      • 提供isvcode全局接口
      • 设置isv的版本 ,默认1.0.0
      • 注意:初始化完成后调用才能生效
      • @param isvVersion (默认1.0.0)
      • @return 返回是否设置成功
    public static void setISVVersion(String isvVersion)
    调用:
    AlibcTradeSDk.setISVVersion(String isvVersion)
    附:百川SDK升级FAQ

FAQ

关于此文档暂时还没有FAQ
返回
顶部