AutoX.js 快速接入
华网网络验证提供了官方的 AutoXjs 封装库,方便 AutoXjs 开发者接入。
接入须知
获取方式
下载地址:https://wwds.lanzouq.com/b058ut5qj 密码:ez0s 或者加群 839808671 在群文件下载 SDK,有问题也可在此群交流。
使用方式
先将下载到的 HWSDK.js 文件用编辑器打开,选中所有内容复制粘贴到你自己的 main.js 代码文件中。
一个完整的示例:
/* 将 HWSDK.js 文件中的代码复制粘贴到上面 */
// AppKey 和 AppSecret 在华网开发者后台获取
let hw = new HWSDK("AppKey", "AppSecret");
hw.debug = true;
// 监听心跳失败事件
hw.event.on("heartbeat_failed", function (ret) {
toastLog("验证异常信息:" + ret.message);
if (ret.code === 10207) {
sleep(200);
exit(); // 退出脚本
return;
}
log("心跳失败,尝试重登...");
sleep(2000);
let loginRet = hw.cardLogin();
if (loginRet.code === 0) {
log("重登成功");
} else {
toastLog(loginRet.message);
sleep(200);
exit();
}
});
// 当脚本正常或者异常退出时会触发 exit 事件
events.on("exit", function () {
hw.cardLogout(); // 调用退出登录
log("结束运行");
});
// 设置卡密
hw.设置卡密("卡密");
if (!hw.卡密登录()) {
let err = hw.获取错误信息();
toastLog(err.message);
sleep(200);
exit();
}
// 登录成功,后面写你的业务代码
toastLog("卡密类型:" + hw.loginRet.cardType);
toastLog("卡密到期时间:" + hw.loginRet.expires);
// hold 主线程不要退出,记得删除,后面是你的代码
while (true) {
let ret = hw.getHeartbeatResult();
toastLog("心跳结果:" + ret.code);
sleep(2000);
}
可更改变量
| 变量 | 类型 | 默认值 | 说明 |
|---|---|---|---|
hw.debug | boolean | true | 开启后会在控制台输出每次请求的详细信息,方便调试 |
hw._device_id | string | 自动获取 | 设备号,默认自动获取。如有更好的一机一码方案可在初始化后修改 |
hw._auto_heartbeat | boolean | true | 是否在登录成功后自动启动心跳线程 |
hw._heartbeat_gap | number | 120000(120秒) | 心跳周期(毫秒),请勿低于 60 秒 |
hw._protocol | string | "http" | 请求协议,可改为 "https" |
可获取变量
注意: 以下变量在登录成功后才有值。
| 变量 | 类型 | 说明 |
|---|---|---|
hw.loginRet.cardType | string | 卡密类型,例如:"月卡" |
hw.loginRet.expires | string | 过期时间,例如:"2024-02-14 19:44:20" |
hw.loginRet.expiresTs | number | 过期时间戳,例如:1702780478 |
hw.loginRet.config | string | 卡密或用户配置,开发者可通过接口自定义 |
hw.is_trial | boolean | 是否是试用登录 |
hw._errRet | object | 错误信息对象,如 {"code": 0, "message": "无报错信息"} |
初始化
构造函数
let hw = new HWSDK(appKey, appSecret)
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| appKey | 是 | string | 华网开发者后台获取的 AppKey |
| appSecret | 是 | string | 华网开发者后台获取的 AppSecret |
初始化卡密
hw.setCard(card)
// 或
hw.设置卡密(card)
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| card | 是 | string | 用户填写的卡密(长度不超过 45 位) |
初始化用户账号
hw.setUser(username, password)
// 或
hw.设置用户(username, password)
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| username | 是 | string | 用户名(长度 1-20 位) |
| password | 是 | string | 用户密码(长度 6-30 位) |
通用接口
获取时间戳(网络时间)
let timestamp = hw.getTimestamp()
- 参数: 无
- 返回值:
number— Unix 时间戳(秒),例:1703870486
内部依次尝试小米、拼多多的时间接口,均失败则回退到本地时间。
获取心跳结果
let ret = hw.getHeartbeatResult()
- 参数: 无
- 返回值:
object— 例:{"code": 0, "message": "", "data": null}
获取剩余时长
let ret = hw.getTimeRemaining()
// 或
let ret = hw.获取剩余时间()
- 参数: 无
- 返回值:
number— 剩余秒数,例:9000(已过期返回0)
获取设备码
let id = hw.getDeviceID()
// 或
let id = hw.获取设备码()
- 参数: 无
- 返回值:
string— 设备唯一标识(依次尝试 serial → AndroidId → IMEI)
获取错误信息
let ret = hw.getError()
// 或
let ret = hw.获取错误信息()
- 参数: 无
- 返回值:
object— 例:{"code": 0, "message": "无报错信息"}
获取模块版本
let ret = hw.getSdkVersion()
// 或
let ret = hw.获取模块版本()
- 参数: 无
- 返回值:
string— 例:"v1.0.1"
卡密登录
注意: 调用此接口前需调用
hw.setCard(card)初始化卡密。 登录成功后 SDK 将自动启动心跳线程,开发者无需关注心跳细节,只需通过hw.getHeartbeatResult()获取当前心跳结果。
语法
let ret = hw.cardLogin() // 英文版:返回完整的响应对象
let ret = hw.卡密登录() // 中文版:返回 boolean(true/false)
参数
无
返回值
- 英文版:
object— 完整响应数据(含token、cardType、expires等字段) - 中文版:
boolean—true表示登录成功,false表示失败
卡密退出登录
语法
let ret = hw.cardLogout() // 英文版:返回完整响应对象
let ret = hw.卡密退出登录() // 中文版:返回 boolean
参数
无
返回值
- 英文版:
object— 例:{"code": 0, "message": "OK"} - 中文版:
boolean—true表示成功
卡密解绑设备
注意: 需先在开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。此接口需在卡密登录后调用。
语法
let ret = hw.cardUnbindDevice() // 英文版
let ret = hw.卡密解绑() // 中文版:返回 boolean
参数
无
返回值
- 英文版:
object— 例:{"code": 0, "message": "OK"} - 中文版:
boolean
卡密设置解绑密码
说明: 此接口需在卡密登录后调用。该密码用于设备丢失时在新设备上解绑。
语法
let ret = hw.setCardUnbindPassword(password) // 英文版
let ret = hw.卡密设置解绑密码(password) // 中文版:返回 boolean
参数
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| password | 是 | string | 解绑密码(6-10 位数字和字母组合) |
返回值
- 英文版:
object— 例:{"code": 0, "message": "OK"} - 中文版:
boolean
卡密通过密码解绑设备
说明: 用于设备丢失无法在老设备登录时,通过解绑密码解绑设备。此接口无需登录即可调用(仅需提前
setCard设置卡密)。
语法
let ret = hw.cardUnbindDeviceByPassword(password) // 英文版
let ret = hw.卡密解绑通过解绑密码(password) // 中文版:返回 boolean
参数
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| password | 是 | string | 解绑密码(6-10 位数字和字母组合) |
返回值
- 英文版:
object— 例:{"code": 0, "message": "OK"} - 中文版:
boolean
卡密充值(以卡密充卡密)
语法
let ret = hw.cardRecharge(card, useCard) // 英文版
let ret = hw.卡密充值(被充值的卡密, 充值的卡密) // 中文版:返回 boolean
参数
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| card | 是 | string | 被充值的卡密(长度不超过 45 位) |
| useCard | 是 | string | 充值使用的卡密(长度不超过 45 位) |
返回值
- 英文版:
object - 中文版:
boolean
用户注册(通过卡密)
语法
let ret = hw.userRegister(username, password, card) // 英文版
let ret = hw.用户注册(账号, 密码, 卡密) // 中文版:返回 boolean
参数
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| username | 是 | string | 用户名(长度不超过 20 位) |
| password | 是 | string | 用户密码(长度 6-30 位) |
| card | 是 | string | 注册使用的卡密(长度不超过 45 位) |
返回值
- 英文版:
object— 例:{"code": 0, "message": "ok"} - 中文版:
boolean
用户登录
注意: 调用此接口前需调用
hw.setUser(username, password)初始化用户账号密码。 登录成功后 SDK 将自动启动心跳线程。
语法
let ret = hw.userLogin() // 英文版:返回完整响应对象
let ret = hw.用户登录() // 中文版:返回 boolean
参数
无
返回值
- 英文版:
object— 完整响应数据 - 中文版:
boolean—true表示成功
用户退出登录
语法
let ret = hw.userLogout() // 英文版
let ret = hw.用户退出登录() // 中文版:返回 boolean
参数
无
返回值
- 英文版:
object— 例:{"code": 0, "message": "OK"} - 中文版:
boolean
用户修改密码
语法
let ret = hw.userChangePassword(username, password, newPassword) // 英文版
let ret = hw.用户修改密码(账号, 密码, 新密码) // 中文版:返回 boolean
参数
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| username | 是 | string | 用户名(长度不超过 20 位) |
| password | 是 | string | 当前密码(长度 6-30 位) |
| newPassword | 是 | string | 新密码(长度 6-30 位) |
返回值
- 英文版:
object - 中文版:
boolean
用户充值(通过卡密)
语法
let ret = hw.userRecharge(username, card) // 英文版
let ret = hw.用户充值(账号, 卡密) // 中文版:返回 boolean
参数
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| username | 是 | string | 用户名(长度不超过 20 位) |
| card | 是 | string | 充值使用的卡密(长度不超过 45 位) |
返回值
- 英文版:
object - 中文版:
boolean
试用登录
注意: 登录成功后将自动启动心跳线程。试用无需设置卡密或用户,直接调用即可。
语法
let ret = hw.trialLogin() // 英文版:返回完整响应对象
let ret = hw.试用登录() // 中文版:返回 boolean
参数
无
返回值
- 英文版:
object— 完整响应数据 - 中文版:
boolean—true表示成功
试用退出登录
注意: 试用退出登录不会发送 HTTP 请求,仅清理本地心跳任务和登录状态。
语法
let ret = hw.trialLogout() // 英文版
let ret = hw.试用退出登录() // 中文版:返回 boolean
参数
无
返回值
- 均返回
{"code": 0, "message": "OK"}
获取卡密配置
注意: 调用此接口前需调用
hw.setCard(card)初始化卡密。
语法
let ret = hw.getCardConfig() // 英文版:返回完整响应对象
let ret = hw.卡密获取配置() // 中文版:返回配置字符串,失败返回 undefined
参数
无
返回值
- 英文版:
object - 中文版:
string— 卡密配置内容
更改卡密配置
注意: 调用此接口前需调用
hw.setCard(card)初始化卡密。
语法
let ret = hw.updateCardConfig(config) // 英文版
let ret = hw.卡密更新配置(config) // 中文版:返回 boolean
参数
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| config | 是 | string | 自定义配置(长度不超过 512 位) |
返回值
- 英文版:
object - 中文版:
boolean
获取用户配置
注意: 调用此接口前需调用
hw.setUser(username, password)初始化用户账号密码。
语法
let ret = hw.getUserConfig() // 英文版:返回完整响应对象
let ret = hw.用户获取配置() // 中文版:返回配置字符串,失败返回 undefined
参数
无
返回值
- 英文版:
object - 中文版:
string— 用户配置内容
更改用户配置
注意: 调用此接口前需调用
hw.setUser(username, password)初始化用户账号密码。
语法
let ret = hw.updateUserConfig(config) // 英文版
let ret = hw.用户更新配置(config) // 中文版:返回 boolean
参数
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| config | 是 | string | 自定义配置(长度不超过 512 位) |
返回值
- 英文版:
object - 中文版:
boolean
获取软件配置
语法
let ret = hw.getSoftwareConfig() // 英文版:返回完整响应对象
let ret = hw.软件获取配置() // 中文版:返回配置字符串,失败返回 undefined
参数
无
返回值
- 英文版:
object - 中文版:
string— 软件配置内容
获取软件公告
语法
let ret = hw.getSoftwareNotice() // 英文版:返回完整响应对象
let ret = hw.软件获取公告() // 中文版:返回公告字符串,失败返回 undefined
参数
无
返回值
- 英文版:
object - 中文版:
string— 公告内容
获取软件最新版本
语法
let ret = hw.getSoftwareLatestVersion(current_ver) // 英文版
let ret = hw.软件获取最新版本(当前版本号) // 中文版:返回完整响应对象
参数
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| current_ver | 否 | string | 当前本地版本号(长度不超过 30 位),为空默认返回发布版本 |
返回值
- 中英文版均返回
object— 完整响应数据
远程变量
获取远程变量
let ret = hw.getRemoteVar(key) // 英文版:返回完整响应对象
let ret = hw.远程变量获取(变量名) // 中文版:返回变量值字符串,失败返回 undefined
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| key | 是 | string | 远程变量名(长度不超过 64 位) |
创建远程变量
let ret = hw.createRemoteVar(key, value) // 英文版
let ret = hw.远程变量创建(变量名, 变量值) // 中文版:返回 boolean
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| key | 是 | string | 远程变量名(长度不超过 64 位) |
| value | 是 | string | 远程变量值(长度不超过 60000 位) |
更新远程变量
let ret = hw.updateRemoteVar(key, value) // 英文版
let ret = hw.远程变量更新(变量名, 变量值) // 中文版:返回 boolean
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| key | 是 | string | 远程变量名(长度不超过 64 位) |
| value | 是 | string | 远程变量值(长度不超过 60000 位) |
删除远程变量
let ret = hw.deleteRemoteVar(key) // 英文版
let ret = hw.远程变量删除(变量名) // 中文版:返回 boolean
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| key | 是 | string | 远程变量名(长度不超过 64 位) |
执行远程函数
语法
let ret = hw.callRemoteFunc(funName, params) // 英文版:返回完整响应对象
let ret = hw.执行远程函数(函数名, 参数) // 中文版:返回函数执行结果,失败返回 undefined
示例
远程函数为:
function add(a, b) {
return a + b;
}
脚本中调用:
// 英文版
let ret = hw.callRemoteFunc("add", [1, 2]);
if (ret.code == 0) {
log(ret.data.result); // 输出: 3
} else {
log(ret.message);
}
// 中文版简写
let result = hw.执行远程函数("add", [1, 2]);
log(result); // 输出: 3
参数
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| funName | 是 | string | 远程函数名(长度不超过 64 位) |
| params | 是 | array | 参数列表,例:[1, 2] |
返回值
- 英文版:
object— 例:{"code": 0, "message": "OK", "data": {"result": 3}} - 中文版: 成功返回
ret.data.result,失败返回undefined
高级功能
手动心跳
一般情况下无需手动调用,SDK 在登录成功后会自动启动心跳线程。以下接口供特殊场景使用。
// 卡密手动心跳
let ret = hw.cardHeartbeat() // 英文版:返回完整响应对象
let ret = hw.卡密心跳() // 中文版:返回 boolean
// 用户手动心跳
let ret = hw.userHeartbeat() // 英文版
let ret = hw.用户心跳() // 中文版:返回 boolean
// 试用期手动心跳
let ret = hw.trialHeartbeat() // 英文版
let ret = hw.试用心跳() // 中文版:返回 boolean
心跳失败回调
hw.onHeartbeatFailed(function (ret) {
log("心跳失败 -> code: " + ret.code + " message: " + ret.message);
});
修改心跳周期
hw._heartbeat_gap = 120 * 1000; // 默认 120 秒,请勿低于 60 秒
关闭自动心跳
hw._auto_heartbeat = false;
使用 HTTPS
hw._protocol = "https";
中英文 API 速查表
| 功能 | 英文 API | 中文 API | 中文返回值 |
|---|---|---|---|
| 设置卡密 | hw.setCard(card) | hw.设置卡密(card) | — |
| 设置用户 | hw.setUser(u, p) | hw.设置用户(u, p) | — |
| 卡密登录 | hw.cardLogin() | hw.卡密登录() | boolean |
| 卡密退出 | hw.cardLogout() | hw.卡密退出登录() | boolean |
| 卡密解绑设备 | hw.cardUnbindDevice() | hw.卡密解绑() | boolean |
| 设置解绑密码 | hw.setCardUnbindPassword(pwd) | hw.卡密设置解绑密码(pwd) | boolean |
| 密码解绑设备 | hw.cardUnbindDeviceByPassword(pwd) | hw.卡密解绑通过解绑密码(pwd) | boolean |
| 卡密充值 | hw.cardRecharge(card, useCard) | hw.卡密充值(被充值的卡密, 充值的卡密) | boolean |
| 用户注册 | hw.userRegister(u, p, c) | hw.用户注册(账号, 密码, 卡密) | boolean |
| 用户登录 | hw.userLogin() | hw.用户登录() | boolean |
| 用户退出 | hw.userLogout() | hw.用户退出登录() | boolean |
| 修改密码 | hw.userChangePassword(u, p, np) | hw.用户修改密码(账号, 密码, 新密码) | boolean |
| 用户充值 | hw.userRecharge(u, card) | hw.用户充值(账号, 卡密) | boolean |
| 试用登录 | hw.trialLogin() | hw.试用登录() | boolean |
| 试用退出 | hw.trialLogout() | hw.试用退出登录() | boolean |
| 获取卡密配置 | hw.getCardConfig() | hw.卡密获取配置() | string |
| 更新卡密配置 | hw.updateCardConfig(c) | hw.卡密更新配置(c) | boolean |
| 获取用户配置 | hw.getUserConfig() | hw.用户获取配置() | string |
| 更新用户配置 | hw.updateUserConfig(c) | hw.用户更新配置(c) | boolean |
| 获取软件配置 | hw.getSoftwareConfig() | hw.软件获取配置() | string |
| 获取软件公告 | hw.getSoftwareNotice() | hw.软件获取公告() | string |
| 获取最新版本 | hw.getSoftwareLatestVersion(v) | hw.软件获取最新版本(v) | object |
| 获取远程变量 | hw.getRemoteVar(key) | hw.远程变量获取(key) | string |
| 创建远程变量 | hw.createRemoteVar(k, v) | hw.远程变量创建(k, v) | boolean |
| 更新远程变量 | hw.updateRemoteVar(k, v) | hw.远程变量更新(k, v) | boolean |
| 删除远程变量 | hw.deleteRemoteVar(key) | hw.远程变量删除(key) | boolean |
| 执行远程函数 | hw.callRemoteFunc(f, p) | hw.执行远程函数(f, p) | 函数返回值 |
| 获取心跳结果 | hw.getHeartbeatResult() | — | object |
| 获取剩余时间 | hw.getTimeRemaining() | hw.获取剩余时间() | number |
| 获取时间戳 | hw.getTimestamp() | — | number |
| 获取设备码 | hw.getDeviceID() | hw.获取设备码() | string |
| 获取错误信息 | hw.getError() | hw.获取错误信息() | object |
| 获取模块版本 | hw.getSdkVersion() | hw.获取模块版本() | string (v1.0.1) |
| 卡密心跳 | hw.cardHeartbeat() | hw.卡密心跳() | boolean |
| 用户心跳 | hw.userHeartbeat() | hw.用户心跳() | boolean |
| 试用心跳 | hw.trialHeartbeat() | hw.试用心跳() | boolean |
