首页 > 编程知识 正文

android 阿里云镜像,android studio阿里云

时间:2023-05-06 19:30:07 阅读:252111 作者:2373

Android阿里百川返佣功能集成

百川官方的接入文档

这个是官方文档, 即使严格按照官方文档集成, 可能还是会有各种各样莫名其妙的问题

公司负责人的接入博客 (很详细)

附上他的开源项目githug

第三方教程文档

这个是我找到的另一个第三方文档, 不过少了一点后续过程

因为我们有几个兄弟公司, 都做了淘宝返佣这个功能, 我们是最后做这个功能的, 说实话, 刚接到任务我是有点无从下手的, 百川的sdk也没有讲的那么详细, 在开发的过程中才慢慢摸出一点门道, 也希望对后来的集成者能有一些力所能及的帮助. 1. 去创建你的应用 2. 下载对应的安全图片

3.申请开通你的电商功能,马上就能通过

4.gradle配置 repositories { maven { url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/" }} dependencies { // 授权登陆 (MemberSDK) compile 'com.ali.auth.sdk:alibabauth_core:1.2.4@jar' compile 'com.ali.auth.sdk:alibabauth_ui:1.2.4@aar' compile 'com.ali.auth.sdk:alibabauth_ext:1.2.4@jar' // fastjson compile 'com.alibaba:fastjson:1.2.9' // 基础电商组件(AlibcTradeSDK, AlibcTrade, AlibcLogin) // 包含打开detail,淘客分润,jsbridge注入等功能 compile 'com.alibaba.sdk.android:alibc_trade_sdk:3.1.1.11@aar' // 集成支付宝(可选) compile 'com.alibaba.alipay:alipaySingle:20160825@jar' // 组件可用性统计 compile 'com.alibaba.mtl:app-monitor-sdk:2.5.1_for_bc' // 基础安全组件 compile 'com.taobao.android:securityguardaar3:5.1.96@aar' // 网关 compile 'com.taobao.android:mtopsdk_allinone_open:1.3.0@jar' // 手机淘宝与三方app之间的往返跳转 compile 'com.taobao.android:alibc_applink:2.0.0.9@jar' // deviceID,主要用于计算设备的uttid, 设备唯一标识 compile 'com.taobao.android:utdid4all:1.1.5'}复制代码 5.初始化, 最好是在Application里 AlibcTradeSDK.asyncInit(this, new AlibcTradeInitCallback() { @Override public void onSuccess() { // 初始化成功,设置相关的全局配置参数 // 是否使用支付宝 AlibcTradeSDK.setShouldUseAlipay(true); // 设置是否使用同步淘客打点 AlibcTradeSDK.setSyncForTaoke(true); // 是否走强制H5的逻辑,为true时全部页面均为H5打开 AlibcTradeSDK.setForceH5(true); // 设置全局淘客参数,方便开发者用同一个淘客参数,不需要在show接口重复传入 AlibcTradeSDK.setTaokeParams(taokeParams) // 设置渠道信息(如果有渠道专享价,需要设置) AlibcTradeSDK.setChannel(typeName, channelName) // ... } @Override public void onFailure(int code, String msg) { //初始化失败,可以根据code和msg判断失败原因,详情参见错误说明 }});复制代码

在合适的地方销毁

AlibcTradeSDK.destroy();复制代码 业务中需要了解的细节

无论是H5还是吊起淘宝打开相关页面,都需要使用AlibcTrade.show()方法, 这个方法里面配置了很多参数, 基本决定了你的业务逻辑是否正常, 你可以像上面一样初始化的时候就配置好, 不过因为我们不止一个电商模块, 所以是单独设置的.

百川sdk具体的跳转AlibcTrade.show()方法 AlibcTrade.show(context, detailPage, showParams, alibcTaokeParams, exParams, new AlibcTradeCallback() { @Override public void onTradeSuccess(AlibcTradeResult tradeResult) { } @Override public void onFailure(int i, String s) { }});复制代码 第二个参数就是具体要跳转的页面, 我们的需求几乎都是碰到商品详情才跳转, 所以只用了两种方式AlibcDetailPage和AlibcPage, 前者只能使用ID跳转具体页面,后者只能通过url跳转具体页面 AlibcDetailPage detailPage = new AlibcDetailPage(id);AlibcPage detailPage = new AlibcPage(url);复制代码 第三个参数就是跳转方式,可以H5,可以拉手淘,也可以自动 AlibcShowParams showParams = new AlibcShowParams(OpenType.Native, false);复制代码 第四个重要的参数是AlibcTaokeParams, 淘宝联盟后台的订单匹配就是通过PID来识别的

上图是pid的具体位置

上图是pid的具体含义, 这个解释能让你更好的理解为什么pid这么重要

AlibcTaokeParams alibcTaokeParams = new AlibcTaokeParams();alibcTaokeParams.adzoneid = ConstBc.MALL_AD_ZONE_ID; //pub平台获取alibcTaokeParams.pid = ConstBc.MALL_PID;alibcTaokeParams.subPid = ConstBc.MALL_SUB_PID;alibcTaokeParams.extraParams = new HashMap<>();alibcTaokeParams.extraParams.put("taokeAppkey", ConstBc.APP_TAOKE_KEY); //pub平台获取Appkey复制代码

adzoneid就是pid的最后一段,taokeappkey在阿里百川app控制台就能获取

第五个参数我不知道具体用处, 不过基本都是这么填的 Map<String, String> exParams = new HashMap<>();exParams.put(AlibcConstants.ISV_CODE, "appisvcode");复制代码 上面是如何跳转,让用户购物后能够返佣 下面说一下细节需求

比如为了提升体验, 我们只在用户点击详情时才跳转手淘,并将刚才的参数传过去, 之前的所有淘宝相关的页面都用的webview, 所以我们需要重载webview.setWebViewClient(mWebviewclient)的mwebviewclient;

mWebview = new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { //当检测到详情页的url时跳转手淘,并返回true终止webview的跳转 if(){ AlibcTrade.show() return true } return super.shouldOverrideUrlLoading(view, url); }};复制代码

刚开始我是通过AlibcPage跳转的, 但是我们app首页有一个足迹导航栏,在淘宝授权后可以直接跳转到自己的足迹Web页面, 但是从足迹跳转web的时候并没有传pid, 明明设置了参数的, 后来改成提取详情页url里面的id, 然后通过AlibcDetailPage来跳转就可以了, 我也不明白原因

这是我们首页的导航按钮, 下面一排需要淘宝授权才能跳转,

if (!AlibcLogin.getInstance().isLogin()) { AlibcLogin.getInstance().showLogin(new AlibcLoginCallback() { @Override public void onSuccess(int i) { callBack.success(); } @Override public void onFailure(int i, String s) { callBack.fail(); } }); } else { callBack.success(); } }复制代码

通过AlibcTrade.show()方法吊起手淘,参数也传输正确, 用户购买成功之后, 需要及时去拉取用户的购物订单传给我们自己的后台, 然后我们自己的后台去淘宝联盟拉取属于我们平台推广的订单, 然后再匹配到某个用户, 在用户的订单列表页显示出来

int mPage = 1; //说明回来前已经跳到淘宝,就要拉去pc的订单页; try { String url = "https://buyertrade.taobao.com/trade/itemlist/asyncBought.htm?action=itemlist/BoughtQueryAction"; byte[] bytes = ("pageNum=" + mPage + "&pageSize=15&prePageNo=" + (mPage - 1)).getBytes(); connection = (HttpsURLConnection) new URL(url + "&event_submit_do_query=1&_input_charset=utf8").openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setInstanceFollowRedirects(false); connection.setUseCaches(false); connection.addRequestProperty("x-requested-with", "XMLHttpRequest"); connection.addRequestProperty("Accept", "text/html,application/json, text/javascript, */*; q=0.01"); connection.addRequestProperty("Accept-Encoding", "gzip, deflate"); connection.addRequestProperty("Accept-Language", "zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4,ms;q=0.2"); connection.addRequestProperty("Referer", "https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm"); connection.addRequestProperty("Cookie", CookieManager.getInstance().getCookie(url)); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); connection.setRequestProperty("Content-Length", Integer.toString(bytes.length)); connection.getOutputStream().write(bytes); connection.connect(); String content = read(connection);} catch (Exception e) { }复制代码

上面是去淘宝的后台拉取用户的订单, 这段代码是copy的兄弟公司, 是否只能这样传, 是否每一个参数都得这样, 我都不知道, 我们两个人完成整个返佣功能工期只有一周, 很多东西都来不及验证, 这篇文章几乎也是记录一下

这里还有一个细节问题

后台是从淘宝联盟报表这里频繁的下载数据,然后匹配用户的返佣订单, 这里下载下来的是一个excel表格, 里面包含了各种信息, 其中有一个来源id, 后台通过excel的这一项来判断是否是我们上传的, 防止其他人恶意刷接口, 但是我们下载的报表一直没有来源id, 说实话, 这种问题真的莫名其妙, 各种分析查找, 最后换一个pid就好了[捂脸], 我也不知道为什么

转载于:https://juejin.im/post/5bcde822f265da0ae8015056

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。