根据业务需求,提供了 Qunar 插件(对 Qunar 业务逻辑进行适配)Fusion 插件(包含 Qunar 插件,同时支持 Ctrip Hybrid 方案)

Qunar 插件,包括对 登录收银台 逻辑的一些封装。其中登录使用用户中心提供的 API,实现 无跳转登录微信关联登录,业务方可以方便使用。

适配的功能有:登录登出登录检测获取用户信息绑定微信登录打开收银台 等。

描述: 调用收银台

示例
// 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
wechat
ctrip

参考:Touch收银台获取token接口hybrid收银台

描述: 向后端发送数据
对应native接口:hy.uelog

示例
hysdk.uelog({
    data: {}, // 向后端发送的数据
    success: function(res) {
        //
    },
    fail: function(res){
        //
    }
});

额外说明:

运行环境 是否支持
Hy
Hy Browser (qunar)
Hy Browser (非qunar) X
touch X
wechat X
ctrip X

描述: 获取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
wechat X
ctrip X

描述: 同步 touch 页的登录状态
注意:为了保证客户端体验一致性,不建议用 Touch 登录后同步,而直接使用客户端的登录
对应native接口:syncLoginFromTouch

示例
hysdk.syncLoginFromTouch();

额外说明:

运行环境 是否支持
Hy
Hy Browser (qunar) X
Hy Browser (非qunar) X
touch X
wechat X
ctrip X

描述: 唤起登录框或进行登录跳转
弹窗登录请直接使用用户中心新版的 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
wechat
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

参考:login.start 桥文档

弹窗登录请直接使用用户中心新版的 UCAPI 组件,HySDK 大版本将下线对 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 刷新验证码图片地址
参考:ucapi 参数详细说明文档

touch 页登录配置说明:

配置项 类型 描述 备注
data ret String touch 页登录成功后返回的页面 常用参数,直接拼接到 url 上
origin String 来源 常用参数,直接拼接到 url 上
参考:touch 登录页详细参数说明文档

参考:用户中心 beta 环境

描述: 星图项目登录
使用场景:星图项目登录

示例
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
wechat X
ctrip X

描述: 唤起滑块验证弹窗
使用场景:用户中心-用户登录

示例
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
wechat X
ctrip X

描述: 检测当前是否登录
使用场景:登录前检查

示例
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
wechat
ctrip

描述: 登出(在微信内会同时解绑微信关联)
使用场景:登出

示例
hysdk.logout({
    success: function () {
        //TODO Something
    }
});

额外说明:

在携程客户端内使用携程用户登出

运行环境 是否支持
Hy
Hy Browser (qunar)
Hy Browser (非qunar)
touch
wechat
ctrip

描述: 获取验证码(ucAPI验证码图片地址)
使用场景:刷新验证码图片

示例

hysdk.getCaptchaUrl();

额外说明:

运行环境 是否支持
Hy x
Hy Browser (qunar) X
Hy Browser (非qunar) X
touch
wechat
ctrip X

描述: 获取登录用户的信息
使用场景:获取用户信息

示例
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
wechat
ctrip

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 的用户系统。

描述: 获取地理位置接口

额外说明:

  • timeout 单位为 ms,默认为 30000。
  • type 只支持 gps 火星坐标, 不支持 baidu。

描述: 使用经纬度打开本地地图

额外说明:

支持 latitude 和 longitude 参数,其他参数平台各异。

描述: 获取设备信息

额外说明:

信息内容平台各异

描述: 获取网络状态

额外说明:

与 Hy 环境用法、参数格式相同

描述: 拍照或从手机相册中选图接口

额外说明:

支持 count 参数,其他参数各方定制。

描述: 打印log日志

额外说明:

与 Hy 环境用法、参数格式相同

描述: 改变当前view导航样式

额外说明:

只支持设置 title 和 right,并只支持 style 为 text。

描述: 获取当前view导航状态,隐藏还是显示

额外说明:

与 Hy 环境用法、参数格式相同

描述: 设置当前view导航状态,隐藏或者显示(仅仅在设置有导航栏的情况下有效)

额外说明:

与 Hy 环境用法、参数格式相同
补充:如果需要一进页面就隐藏 native 头,可以在 URL 上加一个参数 isHideNavBar=YES,类似 qunar 的 type=navibar-none

描述: 扫描二维码并返回结果

额外说明:

与 Hy 环境用法、参数格式相同

描述: 主动调起“分享到朋友圈”分享内容接口

额外说明:

与 Hy 环境用法、参数格式相同

描述: 主动调起“分享给朋友”分享内容接口

额外说明:

与 Hy 环境用法、参数格式相同

描述: 主动调起“新浪微博”分享内容接口

额外说明:

与 Hy 环境用法、参数格式相同

描述: 主动调起“短信”分享内容接口

额外说明:

与 Hy 环境用法、参数格式相同

描述: 主动调起“邮件”分享内容接口

额外说明:

与 Hy 环境用法、参数格式相同

描述: 打开新的webView

额外说明:

  • 只支持 url、name、type 参数。
  • url 支持 http/https 或携程模块页面地址,例如 car/index.html
  • type 支持 navibar-normal 和 navibar-none

描述: 关闭当前view

额外说明:

与 Hy 环境用法、参数格式相同

描述: 设置当前view的属性

额外说明:

只支持配置 name 属性

描述: 设置状态栏颜色

额外说明:

与 Hy 环境用法、参数格式相同

描述: 设置webview是否支持ios的后退手势

额外说明:

与 Hy 环境用法、参数格式相同

描述: 隐藏load页面

额外说明:

与 Hy 环境用法、参数格式相同

描述: 关闭当前网页窗口接口

额外说明:

与 Hy 环境用法、参数格式相同

描述: 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} 请求参数类型。可选值:queryjson。默认 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)

说明:移除数据的过滤函数

描述: 获取 Auth 信息

额外说明:

使用 Ajax Post 请求并且参数形式为 JSON 时,会将 AuthHead 加到参数中。 其他请求业务自主获取 Auth,与后端约定数据交互形式。

描述: 获取 Auth 信息

额外说明:

将 url 转换为本地路径,适用于 Ctrip App Hybrid 方案。

描述: 判断当前环境是否支持指定JS接口

额外说明:

与 Hy 环境用法、参数格式相同

描述: 打开View时,触发

额外说明:

与 Hy 环境用法、参数格式相同

描述: 数据回溯时,触发

额外说明:

与 Hy 环境用法、参数格式相同

描述: 监听导航条的点击事件

额外说明:

支持 title 和 right,并且在调用了 navRefresh 后可用