根据业务需求,提供了 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

描述: 唤起登录框或进行登录跳转
使用场景:登录

示例
// hy
hysdk.login({
    shouldOpenLogin: true,
    extData: 'source=aaa&origin=bbb',
    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/', // 登录成功后返回的地址
        origin: 'hotel-festival-20160415' // 来源
        ...
    }
});

// ucApi 默认模板 登录
hysdk.login({
    useUcApi: true, // 是否使用用户中心的登录组件 ucapi 登录
    useDefault: true, // 是否使用默认模板,默认为true
    instanceConfig: {
        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登录配置项说明:

配置项 类型 描述 备注
useUcApi Bool 是否使用ucAPI组件登录,默认true 可选项
useDefault Bool 是否使用hysdk默认模板,默认true 可选项,当为false时,下列配置项必传
instanceElement mobileInput Object(DOM节点对象) 手机号输入框 当useDefault为false时,必选配置
codeInput 动态码输入框
codeBtn 获取动态码按钮
captchaInput 验证码输入框
captchaBtn 刷新验证码
loginBtn 登录按钮
instanceConfig origin String 页面标识 必选,页面标识,用于统计。格式:业务线-活动名称-日期,如:hotel-festival-20160415,注意:日期写死即可,不要使用new Date之类
mobileInput Object 手机号输入框 必选,手机号对应的input元素如:doc.getElementById('mobile')
syncLoginStatus Bool 登录成功后是否同步登录态到大客户端,默认为true(仅在Hy下可用) 可选
weixinAuth Bool 是否与微信绑定,默认为true 可选
greenShield Bool 微信绑定是否展示绿盾授权中间页,默认true 可选
registerAuto Bool 自动注册,默认为false 可选
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:
        // {
        //     "ret": true,
        //     "data": {
        //         "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.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 后可用