baichuan

来自于:开发者立即使用

概述

百川模块接入了阿里百川的基础功能:手淘授权登陆、打开购物车、打开我的订单、打开宝贝详情,和通过网址打开内部优惠券,唤醒手淘,高佣转链,跨店结算等功能。支持最新(唤醒手淘/高佣转链/跨店结算)功能,可以直接进行动态高佣转链,无须服务端的转链. 具体查看http://club.alimama.com/read-htm-tid-6904724.html

当前模块1.1.x为低版本百川 1.0.x是最新版百川 1.1.x是降低百川 版本的模块.因新版百川会将优惠券进行二次转链,会将优惠券链接转没了(原因是查不到隐藏券) 1.1.x 版本适合自己有高佣API的用户(提前转换好的链接给APP用百川打开) 如果自己没有高佣API,或是没有转换优惠券链接,可以用1.0.x 版本

使用此模块之前建议先配置 config.xml 文件,配置完毕,需通过云端编译生效,配置方法如下:

  • 名称:baichuan
  • 参数:urlScheme
  • 配置示例:
   <feature name="baichuan">
        <param name="urlScheme" value="tbopen12345678" />
   </feature>
  • 字段描述:

    urlScheme:(必须配置) 用于实现应用间跳转及数据交换,本应用可以启动手淘客户端,也可以从手淘客户端跳回本应用。urlScheme 的 value 值的后面12345678是从百川开放平台获取的 appkey(申请或获取教程查看底部的 百川申请教程),需要将12345678替换成你自己的appkey。

还需要在config.xml中加上以下的代码,它决定是否能检测或拉起手淘

    <preference name="querySchemes" value="tmall,tbopen" />

接口描述

init

初始化百川,所有的接口,必须在这个正常初始化完成才能使用.只有初始化成功.其它接口才能正常工作.这个init一般会放在主页中,打开APP就执行一次,这个成功了后面的接口才能正常工作,整款APP只需执行一次即可.

init({params},callback(ret, err))

params

pid:

  • 类型:字符串
  • 描述:联盟的PID,走高佣需要用到这个
  • 例 : mm_111222_333333_44444

openType:

  • 类型:整数
  • 描述:打开方式
  • 取值模式: 0=自动 1=百川h5 2= 手淘
  • 取值范围:
    • 0=自动
    • 1=百川h5 (注意在新版本中,走优惠券如果是H5方式,会被强制唤醒手淘,测试发现IOS会强拉手淘,安卓有些不会强拉)
    • 2= 手淘

taokeyAppkey:

  • 类型:字符串
  • 描述:联盟的的appkey,不能填写百川的appkey,必须是和pid对应一个网址下的.(在阿里妈妈申请一个网址备案,会得到一个appkey,具体查看页面底部的 高佣申请教程处理有获取说明 )

webview:

  • 类型:boolean
  • 描述:是否使用当前页面的webView打开(将手淘URL嵌入进APP)?如果为true,则一般是先打开一个openwin页面,再执行打开商品
  • 默认值: false

schemes:

  • 类型:array
  • 描述:屏蔽的url,可以阻止浏览器唤醒手淘或其它APP
  • 例: ['tbopen://','tmall://']

callback(ret, err)

ret:

  • 类型:JSON对象
  • 说明:如果code 为-1 则说明初始化失败了 ,0为成功
  • 内部字段:
{
    msg:'百川初始化成功',
    code:0
}
//注意这里回调,只回调一次,整个应用初始化一次后,无法再次重复初始化.除非退出.

err:

  • 类型:JSON对象
  • 内部字段:
{
    msg:错误信息,
    code:-1
}

示例代码

var params = {pid:'mm_111111_222222_3333',openType:2,taokeyAppkey:'123456'}
api.require('baichuan').init(params,function(ret){
        alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

set_config

设置全局参数(init初始化时的参数)

set_config ({params},callback(ret, err))

params

{
    openType:1
    webview:false,
    schemes:['tbopen://','tmall://'],
}
//参数可具体参考init中的各字段说明

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    msg:'设置成功',
    code:0
}
//如果code 为-1 则说明设置失败了 ,0为成功

err:

  • 类型:JSON对象
  • 内部字段:
{
    msg:'错误提示',
    code:-1
}

示例代码

var params = {pid:'mm_111111_222222_3333',openType:2,taokeyAppkey:'123456'}
api.require('baichuan').set_config(params,function(ret){
        alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

showUrlPage

通过url打开商品详情页 showUrlPage({params}, callback(ret, err))

params

url:

openType:

  • 类型:整数
  • 描述:打开方式
  • 取值模式: 0=自动 1=百川h5 2= 手淘
  • 取值范围:
    • 0=自动
    • 1=百川h5 (注意走优惠券如果是H5方式,会被强制唤醒手淘,测试发现IOS会强拉手淘,安卓有些不会强拉)
    • 2= 手淘

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
    {
     type:"pay_success",           //购物成功是pay_success ,加入购物车成功是add2car
     orders:"5570976264118545541", //orders是个字符串,多个订单号是用豆号格开的
     code:0,                       //为0就代表操作成功
     "msg":"购物成功5570976264118545541"  //成功或失败消息
    }
    //如果是用手淘方式打开(openType=2或0) 则淘宝不会有回调,这里的callback也不会执行
    //用户取消交易,或是退出交易,或是在淘宝详情页返回到APP,只有IOS下有取消的回调,安卓没有取消的回调.
    

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: -1                 //数字类型
    msg: "商品url不能为空"     //错误描述
}

示例代码

var baichuan= api.require('baichuan');
baichuan.showUrlPage({url:"https://s.click.taobao.com/MSdFZbw",openType:1},function(ret){
   alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

showItemDetailPage

通过商品id打开淘宝详情页

showItemDetailPage({params}, callback(ret, err))

params

itemid:

  • 类型:数字
  • 描述:淘宝的商品itemid

openType:

  • 类型:整数
  • 描述:打开方式
  • 取值模式: 0=自动 1=百川h5 2= 手淘
  • 取值范围:
    • 0=自动
    • 1=百川h5
    • 2= 手淘

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
   type:"pay_success",           //购物成功是pay_success ,加入购物车成功是add2car
   orders:"5570976264118545541", //orders是个字符串,多个订单号是用豆号格开的
   code:0,                       //为0就代表操作成功
   "msg":"购物成功5570976264118545541"  //成功或失败消息
}
//注意这里的回调,在打开二合一优惠券,或是唤醒手淘模式打开时,都没有回调了(淘宝限制的)
//用户取消交易,或是退出交易,或是在淘宝详情页返回到APP,只有IOS下有取消的回调,安卓没有取消的回调.

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 0            //数字类型
    msg: "打开失败"     //错误描述
}

示例代码


var baichuan= api.require('baichuan');
baichuan.showItemDetailPage({itemid:"557642364230",openType:1},function(ret){
   alert(JSON.stringify(ret));
});
//如果是用手淘方式打开(openType=2或0) 则淘宝不会有回调,这里的callback也不会执行
//用户取消交易,或是退出交易,或是在淘宝详情页返回到APP,只有IOS下有取消的回调,安卓没有取消的回调.

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

showLogin

显示百川授权登录页面,成功后回调用户信息

showLogin({params},callback(ret, err))

params

openType:

  • 类型:整数
  • 描述:打开方式 ,推荐选2(安卓选1结果也是为手淘,这个是百川的bug)
  • 取值模式: 0=自动 1=百川h5 2= 手淘
  • 取值范围:
    • 0=自动
    • 1=百川h5
    • 2= 手淘

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
   nick:"张三",                 //用户的淘宝昵称
   openid:"AAGLZP1a58d4a6A",   //用户的唯一openid
   avatarUrl:https://gw.alicdn.com/tps/i3/123456.jpg    //用户的头像地址
   code:0,                     //成功为0,失败为百川原始code
   msg:"登录成功"               //登录成功提示
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 112     //数字类型,
    msg:"登录失败"  
}

示例代码

var baichuan= api.require('baichuan');
baichuan.showLogin({
    openType: 2,
}, function(ret, err){
     alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

getUserInfo

获取用户信息

getUserInfo(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
   nick:"张三",                 //用户的淘宝昵称
   openid:"AAGLZP1a58d4a6A",   //用户的唯一openid
   avatarUrl:https://gw.alicdn.com/tps/i3/123456.jpg    //用户的头像地址
   code:0,                     //成功为0,失败为百川原始code
   msg:"获取成功"               //登录成功或失败的提示
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 112     //数字类型,
    msg:"获取用户信息失败"  
}

示例代码

var baichuan= api.require('baichuan');
baichuan.getUserInfo(function(ret, err){
     alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

logout

退出登录

logout(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
   code:0,                     //成功为0,失败为百川原始code
   msg:"退出成功"               //退出提示
}

err:

  • 类型:JSON对象
  • 内部字段:
{
   code:0,                     //成功为0,失败为百川原始code
    msg:"退出成功"               //退出提示
}

示例代码

var baichuan= api.require('baichuan');
baichuan.logout(function(ret, err){ 
    alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

add2car

添加商品到购物车

add2car({params}, callback(ret, err))

params

itemid:

  • 类型:数字
  • 描述:淘宝的商品itemid

openType:

  • 类型:整数
  • 描述:打开方式
  • 取值模式: 0=自动 1=百川h5 2= 手淘
  • 取值范围:
    • 0=自动
    • 1=百川h5
    • 2= 手淘

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
   type:"add2car",           //购物成功是pay_success ,加入购物车成功是add2car
   code:0,                   //为0就代表操作成功
   "msg":"加入购物车成功"      //成功或失败消息
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code:123                //数字类型;
    msg: "加入购物车失败"     //错误描述
}

示例代码


var baichuan= api.require('baichuan');
baichuan.add2car({itemid:"557642364230",openType:1},function(ret){
   alert(JSON.stringify(ret));
});
//如果是用手淘方式打开(openType=2或0) 则淘宝不会有回调,这里的callback也不会执行

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

showShopPage

打开店铺

showShopPage({params}, callback(ret, err))

params

shopid:

  • 类型:数字
  • 描述:淘宝店铺的ID 如162511891

openType:

  • 类型:整数
  • 描述:打开方式
  • 取值模式: 0=自动 1=百川h5 2= 手淘
  • 取值范围:
    • 0=自动
    • 1=百川h5
    • 2= 手淘

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
   type:"pay_success",            //购物成功是pay_success ,加入购物车成功是add2car
   orders:"5570976264118545541",  //orders是个字符串,多个订单号是用豆号格开的
   code:0,                        //为0就代表操作成功
   "msg":"购物成功"                //成功或失败消息
}
//如果是用手淘方式打开(openType=2或0) 则淘宝不会有回调,这里的callback也不会执行
//用户取消交易,或是退出交易,或是在淘宝详情页返回到APP,只有IOS下有取消的回调,安卓没有取消的回调.

err:

  • 类型:JSON对象
  • 内部字段:
{
    code:123     //数字类型;
    msg: "店铺不存在"     //错误描述;
}

示例代码

var baichuan= api.require('baichuan');
baichuan.showShopPage({shopid:"1333311",openType:1},function(ret){
   alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

showMyOrders

打开我的订单页面

showMyOrders({params}, callback(ret, err))

params

type:

  • 类型:int
  • 描述:显示订单的类型
  • 可选项 : 0:全部;1:待付款;2:待发货;3:待收货;4:待评价

all:

  • 类型:boolean
  • 描述: 是否显示全部订单 (注意在新版本中这里被百川废掉了,设置无效)

openType:

  • 类型:整数
  • 描述:打开方式 推荐为1
  • 取值模式: 0=自动 1=百川h5 2= 手淘
  • 取值范围:
    • 0=自动
    • 1=百川h5
    • 2= 手淘

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
   type:"pay_success",             //购物成功是pay_success ,加入购物车成功是add2car
   orders:"5570976264118545541",  //orders是个字符串,多个订单号是用豆号格开的
   code:0,                        //为0就代表操作成功
   "msg":"打开成功"                //成功或失败消息
}
//如果是用手淘方式打开(openType=2或0) 则淘宝不会有回调,这里的callback也不会执行
//用户取消交易,或是退出交易,或是在淘宝详情页返回到APP,只有IOS下有取消的回调,安卓没有取消的回调.

err:

  • 类型:JSON对象
  • 内部字段:
{
    code:123     //数字类型;
    msg: "打开失败"     //错误描述;
}

示例代码

var baichuan= api.require('baichuan');
baichuan.showMyOrders({type:0,all:true,openType:1},function(ret, err){
     alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

showMyCar

显示我的购物车

showMyCar({params}, callback(ret, err))

params

openType:

  • 类型:整数
  • 描述:打开方式 推荐为1
  • 取值模式: 0=自动 1=百川h5 2= 手淘
  • 取值范围:
    • 0=自动
    • 1=百川h5
    • 2= 手淘

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
   type:"pay_success",             //购物成功是pay_success ,加入购物车成功是add2car
   orders:"5570976264118545541",  //orders是个字符串,多个订单号是用豆号格开的
   code:0,                        //为0就代表操作成功
   "msg":"加入购物车成功"           //成功或失败消息
}
//如果是用手淘方式打开(openType=2或0) 则淘宝不会有回调,这里的callback也不会执行
//用户取消交易,或是退出交易,或是在淘宝详情页返回到APP,只有IOS下有取消的回调,安卓没有取消的回调.

err:

  • 类型:JSON对象
  • 内部字段:
{
    code:123     //数字类型;
    msg: "失败"     //错误描述;
}

示例代码

var baichuan= api.require('baichuan');
baichuan.showMyCar(function(ret, err){
     alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

百川申请教程

1.打开 百川官网 http://baichuan.taobao.com/ 2.点击 立即使用 会来到百川控制台 http://console.baichuan.taobao.com/applications.htm

如果您未注册百川开发者账号,请按提示注册就行,一般用注册个人开发者就行.

3.点击 创建应用 填写自己的APP信息

注意: Android端Package Name 和 IOS端Bundle ID 只能选一个(新版规定) 不过安卓和IOS的可以共用一个appkey 这里需要填写正式版的包名,不然后面要重新生成一次yw122.jpg 安卓申请正式版的证书,苹果最好也先申请好APP的证书. Alt text

  1. 创建好应用后,在 应用管理 处找到刚刚申请的应用,点后面的 应用证书
  2. 复制应用的appkey,填写在 config.xml 中如下(替换掉123456)

     <param name="urlScheme" value="tbopen123456" />
    

    Alt text

  1. 再在 应用管理 处 点击应用名称, 即进入了 应用概览 ,然后点击左侧的 API申请

    申请以下几个API权限 初级电商能力 百川基础能力 无线开放百川淘客包 openim 高级电商能力 这个一般申请不到,需要PV > 10万以上 ,可以不用理会 Alt text

这里申请完了,再需要进入 我的产品后台 申请 百川电商SDK权限 Alt text

  1. 上面的步骤都完成后,需要生成 yw122.jpg 安全图片

    yw122.jpg是百川加密的一个图片,用于验证APP和接口的安全性 百川平台将从上传的包内提取签名,包名等信息,并加密存储到下载 SDK 中的安全图片。 SDK 启动时会校验当前 apk 和图片中的签名信息,以避免发布的安装包被恶意篡改。 安卓包在生成前必须上传正式版的apk(有正式签名的) IOS是必须有确定了Package Name(更改后要重生成)

  2. 下载百川模块包 并解压

    链接:http://pan.baidu.com/s/1kUNRUuj 密码:nnwl

  3. 点击百川控制台左侧的 安全图片获取

    选择IOS,填写上您IOS的package name 然后点击下载,下载完成后,按Ctrl+C复制这个图片 然后进入刚下载的百川模块包/ios/目录下,双击打开baichuan_doudoujuan.zip这个文件 进入/target/目录下,会看到有一个存在的yw122.jpg,直接按粘贴 ,将刚刚复制的图片替换掉这个压缩包中的yw122.jpg 这样IOS的模块包制作完成

    再在百川那边,选择 使用V4版安全图片 再选择 Android ,然后将您的正式安卓包(正式签名的apk) 选择并上传到百川 百川处理完后会生成一个yw122.jpg,点击下载,下载完后,复制它,复制到Android目录下baichuan_doudoujuan.zip中的\baichuan_doudoujuan\res_baichuan_doudoujuan\res\drawable\ 目录下面,替换掉原yw122.jpg 这样android的模块包制作完成 Alt text

  1. 添加百川模块

    在apiColud控制台->模块->模块库中添加百川模块,然后选择自定义模块 点击 上传自定义模块 模块名称填写 baichuan_doudoujuan 模块概要 和 版本设置 随意填写 选择文件 安卓选择 模块yw122包\Android\下面的baichuan_doudoujuan.zip 这个压缩 文件 苹果选择 模块yw122包\iOS\下面的baichuan_doudoujuan.zip 这个压缩 文件 上传完成后, 保存 自定义模块就完成了. 这样可以重新编译个自定义loader来进行引用和测试了.

Alt text Alt text

跨店高佣教程

  1. 打开阿里妈妈官网 https://www.alimama.com 然后登录
  2. 进入 淘宝联盟(站长)页面 https://pub.alimama.com/myunion.htm
  3. 点击推广管理->网站管理->新增网站推广(填写自己的信息,然后等审核,审核需要1-3天左右),如果有申请过这一步可以不用管
  4. 申请通过后,需要点击这个网站后面的 查看权限 这样就会有一个 联盟合作网站API的权限,后面有一个APPKEY, 复制这串数字,填写在百川模块初始化处(init方法的参数taobaoAppkey) Alt text

  5. 再点击联盟后台->推广管理->推广位管理->如果没有创建过推广位,去创建一个就是(打开http://pub.alimama.com/promo/search/index.htm 随便选一个商品,立即推广,选择网站推广,刚刚的网站名称,推广位写个app 然后确定就行,然后刷新推广位的页面,就有了推广位) 复制这个pid(mm_123123123_123123_33333333)这样一串字符,复制到初始化APP处(init方法中的参数pid),这样就行了. 确定appkey和pid都属于同一个账号,同一个站点下,就能自动走高佣

Alt text

  注意: 自动申请高佣,有个条件,是必须在 openType时使用2  (就是 唤醒手淘方式打开商品 ,且 只能用showItemDetailPage  接口,填写商品itemid打开才能自动跨店和高佣)  自动高佣会自己走商品的优惠券(手淘自动检查,如果这个商品有优惠券会进二合一优惠券页面,如果没有查到优惠券,是会直接打开商品详情页)这个是淘宝规定的.

  淘宝规定,百川已不再支持直接打开H5的二合一优惠券页面,如需要打开二合一优惠券页面,必须在openType时使用手淘打开,如果openType不走手淘,也会在优惠券页面强制唤醒手淘打开. 针对这处限制,当前模块已提供,拦截掉强制唤醒手淘的功能(在初始化百川时init参数可以将webview设为true,具体可自行测试.)

反馈和建议

开发此模块是因为同类的模块更新慢,有问题修复慢,新功能也得不到满足,不得己而开发,6年的淘客开发经验,熟悉各种淘宝接口和问题.可接受淘客APP定制开发. 当前模块主要目的是自用(所以会追求细节),所以会紧跟淘宝官方的升级,如有bug或是各种建议,可联系QQ 85914984 (注明 百川模块问题 ) 闲聊勿扰.