概述#
Qunar#
Qunar 插件,包括对 登录 和 收银台 逻辑的一些封装。其中登录使用用户中心提供的 API,实现 无跳转登录 和 微信关联登录,业务方可以方便使用。
适配的功能有:登录、登出、登录检测、获取用户信息、绑定微信登录 、打开收银台 等。
- hysdk.openCashier: 打开收银台
- hysdk.uelog: 统计日志
- hysdk.abTest: AB测试
- hysdk.syncLoginFromTouch: 同步 touch 页的登录状态
- hysdk.login: 登录
- hysdk.starLogin: 星图登录
- hysdk.show: 打开滑块验证弹窗
- hysdk.dismiss: 关闭滑块验证弹窗
- hysdk.checkLogin: 登录检测
- hysdk.logout: 登出
- hysdk.getCaptchaUrl: 刷新验证码图片
- hysdk.getUserInfo: 获取用户信息
Qunar API #
hysdk.openCashier( ) Method #
描述:
调用收银台
// hy
hysdk.openCashier({
"hbToken": "",
"fKey": "",
"hbExt": "",
success: function(){},
fail: function(){}
});
// touch
hysdk.openCashier({
url: 'xxxx', // 默认:https://tp.qunar.com/touch/touchCashier
token: '12333321dsd', // 获取支付收银台时返回的token
orderNo: '', // 业务的订单号
isVouch: false, // 是否担保
sign: '1111adgdsad1111', // 签名
...
});
额外说明:
hy 参数说明
参数 类型 描述 必选 注明 hbToken String 订单token值 √ 常用参数 fKey String 订单key值 √ 常用参数 hbExt String 业务扩充功能字段 X 常用参数 success Function success 回调 X 常用参数 fail Function fail 回调 X 常用参数 touch 参数说明
参数 类型 描述 必选 注明 url String touch 收银台地址 X 常用参数,默认 "https://tp.qunar.com/touch/touchCashier" token String 获取支付收银台时返回的token √ 常用参数 orderNo String 订单号 √ 常用参数 isVouch Bool 是否担保 √ 常用参数,支付收银台为false,担保收银台为true sign Function fail 回调 √ 常用参数 bd_source String 来源 X 不常用参数 touch 更多参数查看支付中心的文档
在携程客户端内使用携程支付逻辑
运行环境 是否支持 Hy √ Hy Browser (qunar) √ Hy Browser (非qunar) √ touch √ √ ctrip √
hysdk.uelog( ) Method #
描述:
向后端发送数据
对应native接口:hy.uelog
hysdk.uelog({
data: {}, // 向后端发送的数据
success: function(res) {
//
},
fail: function(res){
//
}
});
额外说明:
运行环境 是否支持 Hy √ Hy Browser (qunar) √ Hy Browser (非qunar) X touch X X ctrip X
hysdk.abTest( ) Method #
描述:
获取abTest的策略信息
对应native接口:abTest.getCase
hysdk.abTest({
abId: 160616_ho_xxx_xxx, //实验id
simpleName: hotel_xxxx//使用该策略信息的来源(e.g. : vc name or class name),用于记录Log,有利于筛选日志。
success: function(res) {
// res = {
// ab_type:ab_type , //策略类型
// ab_achieve:ab_achieve //策略信息
// }
}
});
额外说明:
运行环境 是否支持 Hy √ Hy Browser (qunar) √ Hy Browser (非qunar) X touch X X ctrip X
hysdk.syncLoginFromTouch( ) Method #
描述:
同步 touch 页的登录状态
注意:为了保证客户端体验一致性,不建议用 Touch 登录后同步,而直接使用客户端的登录
对应native接口:syncLoginFromTouch
hysdk.syncLoginFromTouch();
额外说明:
运行环境 是否支持 Hy √ Hy Browser (qunar) X Hy Browser (非qunar) X touch X X ctrip X
hysdk.login( ) Method #
描述:
唤起登录框或进行登录跳转
弹窗登录请直接使用用户中心新版的 UCAPI 组件,HySDK 大版本将下线对 UCAPI 的封装,请各业务线知悉
使用场景:登录
// hy
hysdk.login({
shouldOpenLogin: true,
extData: 'source=flight&origin=campaign20180824', // 必传,source(业务线)、origin(活动名称或业务场景标识)
success: function(res){
// res: {
// userNickname: "gxgk0001",
// userName: "aaajylz8914",
// userAvatar: "https://qcommons.qunar.com/img1/ucenter/headshot/2…d75fdc03f5a6df7c43c4d7.jpg_r_15adfdad50_9292e43f.jpg",
// userPhone: "18000010001",
// userUserID: "s_OVLCR2IIQUTODSWDZKILWLG22U",
// userQunarID: "223667711",
// userEmail: "",
// }
log("success: " + JSON.stringify(arguments));
},
fail: function(){
log("fail: " + JSON.stringify(arguments));
}
})
// 直接跳转touch登录页
hysdk.login({
useUcApi: false,
data: {
ret: 'http://ued.qunar.com/hy2/hysdk/demo/', // 登录成功后返回的地址
source: 'hotel', // 必传,来源:业务线
origin: 'hotel-festival-20160415' // 必传,活动名称或业务场景标识来源
...
}
});
// ucApi 默认模板 登录
hysdk.login({
useUcApi: true, // 是否使用用户中心的登录组件 ucapi 登录
useDefault: true, // 是否使用默认模板,默认为true
instanceConfig: {
source: 'hotel', // 必传,来源:业务线
origin: 'hotel-festival-20160415', // 必传,活动名称或业务场景标识
registerAuto: true // 自动注册
...
}
success: function() {
//
},
fail: function() {
//
}
})
// ucApi 自定义模板 登录
hysdk.login({
useUcApi: true, // 是否使用用户中心的登录组件 ucapi 登录
useDefault: false, // 是否使用默认模板,默认为true
instanceElement: {
mobileInput: document.getElementById('mobile'), //手机号输入框
codeInput: document.getElementById('code'), //动态码输入框
codeBtn: document.getElementById('code-btn'), //获取动态码按钮
captchaInput: document.getElementById('captcha'), //验证码输入框
captchaBtn: document.getElementById('captcha-btn'), //刷新验证码
loginBtn: document.getElementById('login-btn') //登录按钮
},
instanceConfig: {
...
},
instanceFunc: {
...
}
额外说明:
在携程客户端内使用携程用户登录
运行环境 是否支持 Hy √ Hy Browser (qunar) √ Hy Browser (非qunar) √ touch √ √ ctrip √ 微信客户端和浏览器环境登录支持两种登录方式:
- 1、 默认方式,跳转到 touch 端登录页面进行登录,在调用时,传入的参数,会直接拼接在路由上;
- 2、 通过配置 useUcApi 调用用户中心的登录组件ucAPI进行登录,hysdk默认提供一套模板(弹窗形式),同时支持调用方自定义模板和样式,在使用ucAPI组件登录时,仅支持qunar.com域,不支持如quhuhu.com qunar.it等域名。
hy登录配置项说明:
配置项 类型 描述 shouldOpenLogin Bool 指示是否允许弹登录界面,不允许时未登录直接返回登录失败,true=允许, false=不允许 extData string 传给 native 的数据,例如 origin(来源),数据格式 source=aaa&&origin=bbb success Function 登录成功回调 fail Function 登录失败回调 hy 环境调用时传入的任何参数都会传给 native
弹窗登录请直接使用用户中心新版的 UCAPI 组件,HySDK 大版本将下线对 UCAPI 的封装,请各业务线知悉
ucAPI登录配置项说明:
参考:ucapi 参数详细说明文档
配置项 类型 描述 备注 useUcApi Bool 是否使用ucAPI组件登录,默认true 可选项 useDefault Bool 是否使用hysdk默认模板,默认true 可选项,当为false时,下列配置项必传 instanceElement mobileInput Object(DOM节点对象) 手机号输入框 当useDefault为false时,必选配置 codeInput 动态码输入框 codeBtn 获取动态码按钮 captchaInput 验证码输入框 captchaBtn 刷新验证码 loginBtn 登录按钮 instanceConfig source String 必选,来源标识(业务线) 必选,详见 http://wiki.corp.qunar.com/confluence/pages/viewpage.action?pageId=11229192#id-用户中心限制规则一览表-3用户来源 origin String 必选,页面标识 必选,页面标识,用于统计。格式:业务线-活动名称-日期,如:hotel-festival-20160415,注意:日期写死即可,不要使用new Date之类 mobileInput Object 手机号输入框 必选,手机号对应的input元素如:doc.getElementById('mobile') syncLoginStatus Bool 登录成功后是否同步登录态到大客户端,默认为true(仅在Hy下可用) 可选 weixinAuth Bool 是否与微信绑定,默认为true,1.2.7 之前的版本传 false 时无效,需要升级到 1.2.7 及以上版本 可选 greenShield Bool 微信绑定是否展示绿盾授权中间页,默认true 可选 registerAuto Bool 自动注册,默认为false 可选 其他参数 可以传其他配置参数,hysdk 直接透传给 ucapi,具体查看 ucapi wiki 可选 instanceFunc readyFunc Function ucAPI组件ready时的回调 可选配置,默认为空函数 getCodeSuccess 获取手机动态码成功回调 getCodeFail 获取手机动态码失败回调 loginSuccess 登录成功回调 loginFail 登录回调 changeCaptcha 刷新验证码图片 showCaptcha 显示验证码,当组件需要显示验证码时,内部调用该方法 hideCaptcha 隐藏验证码,当组件需要隐藏验证码时,内部调用该方法 注意:表格中提到的配置项必选,可选是针对在使用ucAPI登录的前提下。具体使用,可以参考demo,调用 hysdk.logout 实现登出,hysdk.getCaptchaUrl 刷新验证码图片地址 touch 页登录配置说明:
参考:touch 登录页详细参数说明文档
配置项 类型 描述 备注 data ret String touch 页登录成功后返回的页面 常用参数,直接拼接到 url 上 origin String 来源 常用参数,直接拼接到 url 上 参考:用户中心 beta 环境
hysdk.starLogin( ) Method #
描述:
星图项目登录
使用场景:星图项目登录
hysdk.starLogin({
success: function(res) {
// res:
// {
// success: true,
// statusCode: 0
// }
hysdk.log('登录成功');
},
fail: function() {
hysdk.log('登录失败');
}
});
额外说明:
运行环境 是否支持 Hy √ Hy Browser (qunar) X Hy Browser (非qunar) X touch X X ctrip X
hysdk.showVerifyDialog( ) Method #
描述:
唤起滑块验证弹窗
使用场景:用户中心-用户登录
hysdk.showVerifyDialog({
orgId: "test1", // 设备指纹orgId,必选
success: function(data) { // 验证结果回调
// data: {code,message,sessionId}
// code说明:
// 0:用户验证成功
// -1:请求失败,服务不可用(请求验证接口失败)
// -2:用户验证失败超过最大重试次数
// -3:用户超过3分钟没有完成验证
successLog(data);
},
fail: function(err) {
errLog(err)
}
})
额外说明:
hy参数说明
参数 类型 描述 必选 注明 orgId String 设备指纹orgId √ isDialog Boolean 是否带弹窗 X 默认false; 如果带弹窗,打开后有”灰色蒙层”,没有完整验证之前,用户无法与页面上的元素进行交互;如果不带弹窗,打开后无”灰色蒙层“,用户可以和页面上的元素进行交互 beta Boolean 是否连接beta环境 X 默认值:false msg Object 验证提示信息 X 如果设置提示信息,以key和默认值进行合并,设置提示信息覆盖默认, key-value(默认值)说明: '-1':加载失败,点击重试(验证图片请求失败) '0_-1':请控制图块对其缺口 '0_-2':失败次数过多,需重新验证(超过3次验证失败) '0_-3':操作超时,需重新验证(超过3分钟没有完整验证)
运行环境 是否支持 Hy √ Hy Browser (qunar) X Hy Browser (非qunar) X touch X X ctrip X
hysdk.checkLogin( ) Method #
描述:
检测当前是否登录
使用场景:登录前检查
hysdk.checkLogin({
success: function(data) {
console.log(data); // data: {ret: true, login: true, state: 2}
// state: 2 为登录, 1 为登录失效, 0 为未登录
}
});
额外说明:
在携程客户端内检查携程用户登录情况
运行环境 是否支持 Hy √ Hy Browser (qunar) √ Hy Browser (非qunar) √ touch √ √ ctrip √
hysdk.logout( ) Method #
描述:
登出(在微信内会同时解绑微信关联)
使用场景:登出
hysdk.logout({
success: function () {
//TODO Something
}
});
额外说明:
在携程客户端内使用携程用户登出
运行环境 是否支持 Hy √ Hy Browser (qunar) √ Hy Browser (非qunar) √ touch √ √ ctrip √
hysdk.getCaptchaUrl( ) Method #
描述:
获取验证码(ucAPI验证码图片地址)
使用场景:刷新验证码图片
hysdk.getCaptchaUrl();
额外说明:
运行环境 是否支持 Hy x Hy Browser (qunar) X Hy Browser (非qunar) X touch √ √ ctrip X
hysdk.getUserInfo( ) Method #
描述:
获取登录用户的信息
使用场景:获取用户信息
hysdk.getUserInfo({
success: function(data) {
// data is UserInfo
data = {
"ver": 1,
"ret": true,
"errcode": 200,
"errmsg": "success",
"errkey": null,
"data": {
"uid": 181175902,
"username": "lpdyccj4946",
"encodeName": "Jy3vkTV8gGOC1Tan",
"gender": 0,
"headMsg": 0,
"securityMsg": "您的账号安全性可提高,建议立即进行安全设置,提高账号安全级别",
"securityAlert": false,
"isRandCodeLogin": false,
"mobile": "86-185****5863",
"prenum": "86",
"status": 1,
"email": "",
"nickname": "Edwonlim",
"currentNick": "Edwonlim",
"nickmsg": 0,
"haveIdentityInfo": true,
"timeOut": false,
"year": 0,
"month": 0,
"day": 0,
"verifyInfoType": 0,
"userVerifyInfoStatus": null,
"randCodeLogin": false
}
};
}
});
额外说明:
在携程客户端内获取携程用户信息
运行环境 是否支持 Hy √ Hy Browser (qunar) √ Hy Browser (非qunar) √ touch √ √ ctrip √
Fusion#
CQ 融合插件,包括 Qunar 插件的同时,对 Ctrip Hybrid 环境进行的适配,开发者可以使用统一套 API,在 Qunar 大客户端、微信、Touch 以及 Ctrip 客户端里运行。适配 API 分类如下:
Base (基础) | Device (设备) | WebView (浏览器) | WebView Event (浏览器事件) |
---|---|---|---|
Navigation (导航) | Navigation Event (导航事件) | Window (窗口) | Image (图片) |
Share (分享) | Scan (扫描) | Log (日志) | Util (工具) |
当然,适配的只是两边共同的 API,如果开发者使用的 Ctrip API 并没有被封装的话,可以使用 hysdk.bridge.invoke(service, action, param, tag_name, listener)
的方式,调用 Ctrip API;使用 hysdk.bridge.on(event_name, listener)
的方式,监听事件通知。具体参数可以相见携程 Hybrid 桥文档。
同时在 Ctrip 客户端中,对登录逻辑进行了兼容,使用 Ctrip Hybrid 的登录方案和 Ctrip 的用户系统。
Fusion:Device API #
hysdk.getLocation( ) Method #
描述: 获取地理位置接口
额外说明:
- timeout 单位为 ms,默认为 30000。
- type 只支持 gps 火星坐标, 不支持 baidu。
Fusion:Image API #
Fusion:Log API #
Fusion:Navigation API #
hysdk.setNavDisplayStatus( ) Method #
描述: 设置当前view导航状态,隐藏或者显示(仅仅在设置有导航栏的情况下有效)
额外说明:
与 Hy 环境用法、参数格式相同
补充:如果需要一进页面就隐藏 native 头,可以在 URL 上加一个参数 isHideNavBar=YES,类似 qunar 的 type=navibar-none
Fusion:Scan API #
Fusion:Share API #
Fusion:WebView API #
hysdk.openWebView( ) Method #
描述: 打开新的webView
额外说明:
- 只支持 url、name、type 参数。
- url 支持 http/https 或携程模块页面地址,例如
car/index.html
- type 支持 navibar-normal 和 navibar-none
Fusion:Window API #
Fusion:Util API #
hysdk.ajax( ) Method #
描述: Ajax
额外说明:
Ajax 工具方法,支持普通请求,以及 Ctrip Hybrid 方案下的 ajax(在 method 为 post 且 argsType 为 json 时, 自动添加 AuthHead)。
基本配置如下:
{ "charset": "UTF-8", "timeout": 30 * 1000, "argsType": "json", // 注意 "method": "post", // 注意 "isEncode": false, "responseType": "json", "withCredentials": false }
配置参数:
url
:{String}
请求地址。charset
:{String}
编码。默认UTF-8
。timeout
:{Number}
请求超时时间。默认30 * 1000
。data
:{Object}
请求参数。argsType
:{String}
请求参数类型。可选值:query
和json
。默认json
。method
:{String}
请求方式。默认post
。headers
:{Object}
请求头信息。isEncode
:{Boolean}
否是编码。默认false
。dataType
:{String}
返回数据的数据类型。默认json
。cache
:{Boolean}
是否允许缓存。默认false
。withCredentials
:{Boolean}
是否带有验证信息。默认false
。defaultProtocolInFile
:{String}
在 File 协议下,缺省协议头时默认采用的协议。默认https
。jsonp
:{String}
为 jsonp 请求重写回调函数名对应的 key。这个值用来替代在 url 中"callback=?"的"callback"部分。jsonpCallback
:{String}
为 jsonp 请求指定一个回调函数名。这个值将用来取代自动生成的随机函数名。success
:{Function}
请求成功后的函数调用。error
:{Function}
请求失败后的函数调用。onAbort
:{Function}
取消请求后的函数调用。onFail
:{Function}
请求失败后的函数调用。其他API:
hysdk.ajax.addReqFilter(filter)
说明:添加请求参数的过滤函数
hysdk.ajax.removeReqFilter(filter)
说明:移除某个请求时的过滤参数
hysdk.ajax.addRespFilter(filter)
说明:添加数据的过滤函数
hysdk.ajax.removeRespFilter(filter)
说明:移除数据的过滤函数
hysdk.getAuthHead( ) Method #
描述: 获取 Auth 信息
额外说明:
使用 Ajax Post 请求并且参数形式为 JSON 时,会将 AuthHead 加到参数中。 其他请求业务自主获取 Auth,与后端约定数据交互形式。