注意:以下是淘宝电商SDK3.1.1.96集成方法。(2017年5月10日)还有要打开的权限见这篇文章(登陆授权方式):http://www.jianshu.com/p/be1da2f739e8
1、淘宝电商SDK官网下载地址:
2、SDK集成方法:(cocoapods方法)
podfile文件里:
阿里百川SDK,打开淘宝跳转到商品详情,source不能删除
source 'http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecs.git'
pod 'AlibcTradeSDK'
AppDelegate里初始化
//阿里百川SDK3.1(2017年5月9日)
#import <AlibcTradeSDK/AlibcTradeSDK.h>
#pragma mark =================== 阿里百川电商SDK 开始(暂时不要删)===============
//最新修改2017年5月9日,记住一定要导入安全图片否则无法打开淘宝客户端(yw_1222.jpg)
// 外部使用只能用Release环境 线上环境AlibcEnvironmentRelease
[[AlibcTradeSDK sharedInstance] setEnv:AlibcEnvironmentRelease];
// 百川平台基础SDK初始化,加载并初始化各个业务能力插件
[[AlibcTradeSDK sharedInstance] asyncInitWithSuccess:^{
} failure:^(NSError *error) {
}];
//#warning 初始化时候, 在log中确认 AlibcTradeSDK 资源/环境检查 , 确保配置完成
// 开发阶段打开日志开关,方便排查错误信息
// [[AlibcTradeSDK sharedInstance] setDebugLogOpen:YES];
// 配置全局的淘客参数(暂时不设置了)
AlibcTradeTaokeParams *taokeParams = [[AlibcTradeTaokeParams alloc] init];
//#warning - 改成自己的淘客ID进行测试!!!
taokeParams.pid = @"换成自己的淘宝客PID";
taokeParams.unionId = nil;
taokeParams.subPid = nil;
[[AlibcTradeSDK sharedInstance] setTaokeParams:taokeParams];
// 设置全局的app标识,在电商模块里等同于isv_code
[[AlibcTradeSDK sharedInstance] setISVCode:@"your_isv_code"];
// 设置全局配置,是否强制使用h5
[[AlibcTradeSDK sharedInstance] setIsForceH5:NO];
#pragma mark =================== 阿里百川电商SDK 结束===============
#pragma mark ===================【重点】 阿里百川电商SDK处理回调必须实现===============
//三种支付方式的回调(iOS 9以上走,包含iOS10!!!!!!!!!)
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
//其他app打开嗅美时发通知,分享那边在用(iOS9)
[[NSNotificationCenter defaultCenter] postNotificationName:@"OtherOpenXiumei_iOS" object:url];
// 为了正常使用百川内置的应用跳转处理,需要调用百川SDK的方法。建议优先调用百川处理,如果百川已处理,可以直接返回YES;当然,也可以继续处理,比如记录应用跳转来源日志等。
// 以下代码不现实,会导致通过手淘授权登陆,跳回来没反应等问题
// 新接口写法
if (![[AlibcTradeSDK sharedInstance] application:app
openURL:url
options:options]) {
//处理其他app跳转到自己的app,如果百川处理过会返回YES
}
return YES;
}
//iOS 8 走这里!!!!!!!
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
//其他app打开嗅美时发通知,分享那边在用(iOS8)
[[NSNotificationCenter defaultCenter] postNotificationName:@"OtherOpenXiumei_iOS" object:url];
// 为了正常使用百川内置的应用跳转处理,需要调用百川SDK的方法。建议优先调用百川处理,如果百川已处理,可以直接返回YES;当然,也可以继续处理,比如记录应用跳转来源日志等。
// 以下代码不现实,会导致通过手淘授权登陆,跳回来没反应等问题
// 新接口写法
if (![[AlibcTradeSDK sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation]) {
// 处理其他app跳转到自己的app
}
return YES;
}
下面是封装的类:
#import <Foundation/Foundation.h>
@interface OpenTaobaoGoodes : NSObject
/**
淘宝商品SDK,打开商品详情
@param controller 控制器
@param taoBaoUrl 淘宝客商品Url
@param goodsId 淘宝客商品Id
*/
+(void)openTaoboMallDetaController:(UIViewController*)controller TaoBaoUrl:(NSString*)taoBaoUrl taoBaoGoodId:(NSString*)goodsId;
@end
#import "OpenTaobaoGoodes.h"
//阿里百川SDK3.1(2017年5月9日)
#import <AlibcTradeSDK/AlibcTradeSDK.h>
//阿里百川电商授权登陆
#import <AlibabaAuthSDK/ALBBSDK.h>
@interface OpenTaobaoGoodes()
@end
@implementation OpenTaobaoGoodes
/**
淘宝商品SDK,打开商品详情
@param controller 控制器
@param taoBaoUrl 淘宝客商品Url
@param goodsId 淘宝客商品Id
*/
+(void)openTaoboMallDetaController:(UIViewController*)controller TaoBaoUrl:(NSString*)taoBaoUrl taoBaoGoodId:(NSString*)goodsId{
/**
* 使用百川SDK的webview打开page,可以实现淘宝账号免登以及电商交易支付流程
*
* @param parentController 当前view controller. 若isNeedPush为YES, 需传入当前UINavigationController.
* @param page 想要打开的page
* @param showParams 打开方式的一些自定义参数
* @param taoKeParams 淘客参数
* @param trackParam 链路跟踪参数
* @param tradeProcessSuccessCallback 交易流程中成功回调(加购成功(使用+[AlibcTradePageFactory addCartPage:]时)/发生支付)
* @param tradeProcessFailedCallback 交易流程中退出或者调用发生错误的回调
*
* @return 0标识跳转到手淘打开了,1标识用h5打开,-1标识出错
*/
//必须判空,否则失败
if ([NSString isNULL:taoBaoUrl]) {
[DWBToast showCenterWithText:@"淘宝商品连接为空"];
return;
}
//影藏tabbar(必须放在起调SDK之前,否则无效,导航栏可以放在后面)
controller.tabBarController.tabBar.hidden = YES;
controller.hidesBottomBarWhenPushed = YES;
id<AlibcTradePage> page = [AlibcTradePageFactory page:taoBaoUrl];
id<AlibcTradeService> service = [AlibcTradeSDK sharedInstance].tradeService;
AlibcTradeShowParams *showParams = [[AlibcTradeShowParams alloc] init];
showParams.isNeedPush = YES;
//强制H5展示(效果比较好还有就是下面操作了导航栏,可以购买)
showParams.openType = AlibcOpenTypeH5;
// 以下是让电商SDK自己生成 WebView 对象进行展示的方式
[service
show:showParams.isNeedPush ? controller.navigationController : controller
page:page
showParams:showParams
taoKeParams:nil
trackParam:nil
tradeProcessSuccessCallback:^(AlibcTradeResult * _Nullable result) {
NSLog(@"成功:%@",result);
} tradeProcessFailedCallback:^(NSError * _Nullable error) {
NSLog(@"失败:%@",error);
// 701 SEC_ERROR_STA_KEY_ENC_INVALID_PARAM 参数不正确,请检查输入的参数
}];
//打开导航栏,不然跳转过去没导航栏(放在后面,必须强制H5打开购买)
[controller.navigationController setNavigationBarHidden:NO animated:NO];
}
@end
调用:
//导入头文件
#import "OpenTaobaoGoodes.h"
//利用sdk打开淘宝商品,非常好必须用(封装)
[OpenTaobaoGoodes openTaoboMallDetaController:self TaoBaoUrl:@"换成自己的淘宝商品连接" taoBaoGoodId:@"换成自己的淘宝商品ID,可不传"];
补充:退出淘宝登陆(可以放到app的退出按钮里面)
//阿里百川电商授权登陆
#import <AlibabaAuthSDK/ALBBSDK.h>
//退出阿里授权登陆(这样app内购买商品就需要再次登陆了淘宝了)
ALBBSDK *albbSDK = [ALBBSDK sharedInstance];
[albbSDK logout];