SDK从2.0.0版本以后,通过百川电商组件可以方便的打开,交易环节中的各个页面,统一使用TradeService
的show
方法来实现。show
方法的参数为:
参数名 | 说明 |
---|---|
page | 页面类型,必填,不可为null |
taokeParams | 淘客参数,如果不是淘客的商品,则该参数传null,传入pid即可 |
activity | 必填 , UI上下文 |
tradeProcessCallback | 交易流程的回调。必填,不允许为null; |
uiSettings | 预留界面扩展,可以为null |
其中page
参数用于指定需要打开的页面,可以使用的页面类型如下表:
类名 | 页面名称 | 调用参数 |
ItemDetailPage | 商品详情页 | ItemDetailPage itemDetailPage = new ItemDetailPage(itemId, exParams); - itemId: 商品id,必填,不允许为null;支持标准的商品id,eg.37196464781;同时支持openItemId,eg.AAHd5d-HAAeGwJedwSnHktBI; - exParams 特殊业务扩展字段;选填,允许为null;目前支持3个参数: 1、TradeConstants.ITEM_DETAIL_VIEW_TYPE:启动页面类型,分为TAOBAO_H5_VIEW(以淘宝H5方式打开详情页)、TAOBAO_NATIVE_VIEW(唤起手机淘宝客户端打开详情页)。 2、TradeConstants.ISV_CODE(ISV_CODE用法可参看:http://baichuan.taobao.com/doc2/detail.htm?spm=a3c0d.7629140.0.0.0AjjmE&treeId=129&articleId=104377&docType=1) 3、TradeConstants. TAOBAO_BACK_URL:设置启动手淘native页面后的返回页面 |
MyCartsPage | 购物车 | MyCartsPage myCartsPage = new MyCartsPage(); |
MyOrdersPage | 我的订单页 | MyOrdersPage myOrdersPage = new MyOrdersPage(status, allOrder); - status 默认跳转页面;填写:0:全部;1:待付款;2:待发货;3:待收货;4:待评价。若传入的不是这几个数字,则跳转到“全部”页面且“allOrder”失效 - allOrder true:显示全部订单。 |
MyCardCouponsPage | 我的卡券包页 | MyCardCouponsPage myCardCouponsPage = new MyCardCouponsPage(); |
PromotionsPage | 优惠券页 | PromotionsPage promotionsPage = new PromotionsPage(type, param); - type 优惠券类型。值为“shop”和“auction”两种 - param shop时,param传递为卖家nick type:auction时,param传递为商品的混淆id |
public void showItemDetailPage(View view){ TradeService tradeService = AlibabaSDK.getService(TradeService.class); Map<String, String> exParams = new HashMap<String, String>(); exParams.put(TradeConstants.ISV_CODE, isvCode); exParams.put(TradeConstants.ITEM_DETAIL_VIEW_TYPE,TradeConstants.TAOBAO_NATIVE_VIEW); ItemDetailPage itemDetailPage = new ItemDetailPage(itemId, exParams); TaokeParams taokeParams = new TaokeParams(); taokeParams.pid = "xxx_xxxXXX"; tradeService.show(itemDetailPage, taokeParams, MainActivity.this, null, new TradeProcessCallback(){ @Override public void onFailure(int code, String msg) { Toast.makeText(MainActivity.this, "失败 "+code+msg, Toast.LENGTH_SHORT).show(); } @Override public void onPaySuccess(TradeResult tradeResult) { Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT) .show(); }}); }
public void showMyCartsPage(View view){ TradeService tradeService = AlibabaSDK.getService(TradeService.class); MyCartsPage myCartsPage = new MyCartsPage(); TradeConfigs.defaultISVCode = "kdkdkdkd" //传入isv_code tradeService.show(myCartsPage, null, MainActivity.this, null, new TradeProcessCallback(){ @Override public void onFailure(int code, String msg) { Toast.makeText(MainActivity.this, "失败 "+code+msg, Toast.LENGTH_SHORT).show(); } @Override public void onPaySuccess(TradeResult tradeResult) { Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT) .show(); }}); }
打开的购物车,我们提供两种购物车展现方式供开发者。
使用 [淘宝购物车] 购物车页面将与淘宝购物车完全互通。用户在您应用中加入购物车的商品将在淘宝的购物车中展示,同样的用户在淘宝中加入的商品也将在会您的应用中出现。
使用 [隔离购物车] 您将拥有自己独立的购物车页面。用户在您的应用中加入购物车的商品可以再淘宝中看到并下单,但在淘宝中加入的商品将在您的应用中不可见
可以百川控制台进行选择配置:
public void showMyOrdersPage(View view){ TradeService tradeService = AlibabaSDK.getService(TradeService.class); MyOrdersPage myOrdersPage = new MyOrdersPage(0, false); tradeService.show(myOrdersPage, null, MainActivity.this, null, new TradeProcessCallback(){ @Override public void onFailure(int code, String msg) { Toast.makeText(MainActivity.this, "失败 "+code+msg, Toast.LENGTH_SHORT).show(); } @Override public void onPaySuccess(TradeResult tradeResult) { Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT) .show(); }}); }
public void showMyCardCouponsPage(View view){ TradeService tradeService = AlibabaSDK.getService(TradeService.class); MyCardCouponsPage myCardCouponsPage = new MyCardCouponsPage(); tradeService.show(myCardCouponsPage, null, MainActivity.this, null, new TradeProcessCallback(){ @Override public void onFailure(int code, String msg) { Toast.makeText(MainActivity.this, "失败 "+code+msg, Toast.LENGTH_SHORT).show(); } @Override public void onPaySuccess(TradeResult tradeResult) { Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT) .show(); }}); }
public void showPromotionsPage(View view){ TradeService tradeService = AlibabaSDK.getService(TradeService.class); PromotionsPage promotionsPage = new PromotionsPage("shop", "商家测试帐号17"); tradeService.show(promotionsPage, null, MainActivity.this, null, new TradeProcessCallback(){ @Override public void onFailure(int code, String msg) { Toast.makeText(MainActivity.this, "失败 "+code+msg, Toast.LENGTH_SHORT).show(); } @Override public void onPaySuccess(TradeResult tradeResult) { Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT) .show(); }}); }
public void showPage(View view) { Map<String, String> exParams = new HashMap<String, String>(); exParams.put(TradeConstants.ISV_CODE, isvCode); Page page = new Page(url, exParams); AlibabaSDK.getService(TradeService.class).show(page, null, this, null, new TradeProcessCallback(){ @Override public void onPaySuccess(TradeResult tradeResult) { } @Override public void onFailure(int code, String msg) { } }); }
注意:目前根据商品链接打开页面不支持传入参数taokeParams来实现淘客分佣,只支持传入s.click链接的方式来实现淘客分佣。
从2.0.0开始,淘宝授权SDK支持在开发者的WebView里进行淘宝免登。
WebViewService支持的是系统WebView。
WebViewService获取方式:WebViewService webViewService = AlibabaSDK.getService(WebViewService.class);
提供以下接口:
bindWebView(WebView webView,WebViewClient webViewClient)
WebViewService webViewService = AlibabaSDK.getService(WebViewService.class); webViewService.bindWebView(webView,webViewClient);
releaseWebView(WebView webView)
webViewService.releaseWebView(webView);
还需要在开发者代码里的 Activity 重写方法,代码如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data) { CallbackContext.onActivityResult(requestCode, resultCode, data,webView); }
class CustomWebView implements WebViewProxy{ public CustomWebView(Context context) { super(context); } //加载URL @Override public void loadUrl(String url) { } //重新加载上次请求 @Override public void reload() { } //执行JS方法,返回执行结果,没有结果返回null @Override public String execJS(String jsStr) { } //执行JS方法,返回执行结果,没有结果返回null @Override public void setCookie(String key,String value) { } @Override public void getCookie(String key) { } @Override public void setUserAgent(String ua) { } @Override public String getUserAgent() { } @Override public String getUrl() { } }
WebViewProxyService获取方式:WebViewProxyService webViewProxyService = AlibabaSDK.getService(WebViewProxyService.class);
注意:
用户必须在页面加载前调用WebViewProxyService提供的shouldOverrideUrlLoading(WebViewProxy customWebView, String url)方法。类似于WebViewClient里的shouldOverrideUrlLoading方法。
还需要在开发者代码里的 Activity 重写方法,代码如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data) { //百川RequestCode为为59995和59996,可以在com.alibaba.sdk.android.system.RequestCode中获取(OPEN_TAOBAO、OPEN_H5_LOGIN) CallbackContext.onActivityResult(this,requestCode, resultCode, data, customWebView); }