iOS-App内打开淘宝商品实现购买(封装)

注意:以下是淘宝电商SDK3.1.1.96集成方法。(2017年5月10日)还有要打开的权限见这篇文章(登陆授权方式):http://www.jianshu.com/p/be1da2f739e8

1、淘宝电商SDK官网下载地址:

http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7662649.0.0.Enkuzs&treeId=129&articleId=106383&docType=1

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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容