Python 快速接入
华网网络验证提供了官方的 Python 封装库,方便 Python 开发者接入。
接入须知
获取方式
下载地址:https://wwds.lanzouq.com/b058v0xdg 密码:elpz
或者加群839808671在群文件下载SDK,有问题也可在此群交流。
使用方式
将HWSDK
文件夹解压放入你的项目中即可,然后在脚本中通过 from HWSDK import * 引入。
压缩包中的main.py
是一个示例。
一个示例:
from HWSDK import *
import os
import time
# 文档:https://www.hwwlyz.com/docs/api/python_sdk.html
# 初始化 app_key 和 app_secret 在开发者后台新建软件获取
hw = HWSDK(appKey='', appSecret='')
hw.debug = True
# 心跳失败回调
def onHeartbeatFailed(hret):
print(hret.message)
if hret.code == 10207:
os._exit(1) # 退出脚本
print("心跳失败,尝试重登...")
loginRet = hw.cardLogin()
if loginRet.code == 0:
print("重登成功")
else:
print(loginRet.message) # 重登失败
os._exit(1) # 退出脚本
if __name__ == '__main__':
hw.on_heartbeat_failed = onHeartbeatFailed
hw.setDeviceId('123') # 设置设备唯一ID
hw.setCard('') # 设置卡密
ret = hw.cardLogin() # 卡密登录
if ret.code != 0: # 登录失败
print(ret.message)
os._exit(1) # 退出脚本
print("卡密卡类:"+hw.loginRet.cardType)
print("卡密到期时间:"+hw.loginRet.expires)
time.sleep(1)
# 登录成功,后面写你的业务代码
while 1: # 测试用,hold住主线程不要退出,记得删除,后面应该是你的代码了
print(hw.getHeartbeatResult())
time.sleep(5)
可更改变量
- hw.debug : bool型,默认为true,开启后会在控制台输出每次请求的详细信息,方便调试
- hw._device_id: string型,可在初始化后修改该值
可获取变量
TIP
注意
以下变量都为登录成功后才能取到值的。
- hw.loginRet.cardType : 卡密类型,例如:月卡
- hw.loginRet.expires : 过期时间,例如:2024-02-14 19:44:20
- hw.loginRet.expiresTs : 过期时间戳,例如:1702780478
- hw.loginRet.config : 卡密或用户配置,开发者可通过接口自定义的
- hw.is_trial : 是否是试用登录
初始化
init
hw = HWSDK(appKey='', appSecret='')
初始化卡密
语法
hw.setCard(card)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
card | 是 | string | 用户填写的卡密(长度不超过45位) |
初始化用户账号
语法
hw.setUser(username, password)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
username | 是 | string | 用户名(长度1-20位) |
password | 是 | string | 用户密码(长度6-30位) |
获取时间戳(网络时间)
语法
timestamp = hw.getTimestamp()
参数
无
返回值
数字类型,例:1703870486
获取心跳结果
语法
ret = hw.getHeartbeatResult()
参数
无
返回值
字典类型,例:{"code": 0, "message": "","data":null}
获取剩余时长
语法
ret = hw.getTimeRemaining()
参数
无
返回值
数字类型,剩余多少秒,例:9000
卡密登录
:::tip
注意
调用此接口前需调用 hw.setCard(card) 初始化卡密
登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
开发者只需在自己的脚本中通过调用 hw.getHeartbeatResult() 获取当前心跳结果。
:::
语法
ret = hw.CardLogin() //返回登录后详情数据
参数
无
返回值
字典类型,例:参考接口返回
卡密退出登录
语法
ret = hw.cardLogout() //返回服务器数据
参数
无
返回值
字典类型,例:{"code": 0, "message": "OK"}
卡密解绑设备
:::tip
注意
请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。
该接口只能在卡密登录后调用。更多说明
:::
语法
ret = hw.cardUnbindDevice()
参数
无
返回值
字典类型,例:{"code": 0, "message": "OK"}
卡密设置解绑密码
:::tip
说明
请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。
该密码用于绑定设备丢失或者其它原因导致无法在老设备登录时解绑设备。
:::
语法
ret = hw.setCardUnbindPassword(password)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
password | 是 | string | 解绑密码(6-10位数字和字母组合的字符串) |
返回值
字典类型,例:{"code": 0, "message": "OK"}
中文:bool类型 返回 treu 或 fasle
卡密通过密码解绑设备
:::tip
说明
请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。
该接口用于绑定设备丢失或者其它原因导致无法在老设备登录时,通过解绑密码解绑设备。
:::
语法
ret = hw.cardUnbindDeviceByPassword(password)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
password | 是 | string | 解绑密码(6-10位数字和字母组合的字符串) |
返回值
字典类型,例:{"code": 0, "message": "OK"}
卡密充值(以卡密充卡密)
语法
ret = hw.cardRecharge(card, useCard)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
card | 是 | string | 被充值的卡密(长度不超过45位) |
useCard | 是 | string | 充值使用的卡密(长度不超过45位) |
返回值
字典类型,例:{"code": 0, "message": "OK"}
用户注册(通过卡密)
语法
ret = hw.userRegister(username, password, card)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
username | 是 | string | 用户名(长度不能超过20位) |
password | 是 | string | 用户密码(长度6-30位) |
card | 是 | string | 注册使用的卡密(长度不超过45位) |
返回值
字典类型,例:{"code": 0, "message": "ok"}
用户登录
:::tip
注意
调用此接口前需调用 hw.setUser(username, password) 初始化用户账号密码
登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
开发者只需在自己的脚本中通过调用 hw.getHeartbeatResult() 获取当前心跳结果。
:::
语法
ret = hw.userLogin()
参数
无
返回值
字典类型,例:参考接口返回
用户退出登录
语法
ret = hw.userLogout()
参数
无
返回值
字典类型,例:{"code": 0, "message": "OK"}
用户修改密码
语法
ret = hw.userChangePassword(username, password, newPassword)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
username | 是 | string | 用户名(长度不能超过20位) |
password | 是 | string | 当前密码(长度6-30位) |
newPassword | 是 | string | 新密码(长度6-30位) |
返回值
字典类型,例:{"code": 0, "message": "OK"}
用户充值(通过卡密)
语法
ret = hw.userRecharge(username, card)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
username | 是 | string | 用户名(长度不能超过20位) |
card | 是 | string | 充值使用的卡密(长度不超过45位) |
返回值
字典类型,例:{"code": 0, "message": "OK"}
试用登录
:::tip
注意
登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
只需在自己的脚本中通过调用 hw.getHeartbeatResult() 获取当前心跳结果。
:::
语法
ret = hw.trialLogin()
参数
无
返回值
字典类型,例:参考接口返回
试用退出登录
语法
ret = hw.trialLogout()
参数
无
返回值
字典类型,例:{"code": 0, "message": "OK"}
获取卡密配置
:::tip
注意
调用此接口前需调用 hw.setCard(card) 初始化卡密
:::
语法
ret = hw.getCardConfig()
参数
无
返回值
字典类型,例:参考接口返回
更改卡密配置
:::tip
注意
调用此接口前需调用 hw.setCard(card) 初始化卡密
:::
语法
ret = hw.updateCardConfig(config)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
config | 是 | string | 自定义配置(长度不能超过512位) |
返回值
字典类型,例:{"code": 0, "message": "OK"}
获取用户配置
:::tip
注意
调用此接口前需调用 hw.setUser(username, password) 初始化用户账号密码
:::
语法
ret = hw.getUserConfig()
参数
无
返回值
字典类型,例:参考接口返回
更改用户配置
注意
调用此接口前需调用 hw.setUser(username, password) 初始化用户账号密码
语法
ret = hw.updateUserConfig(config)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
config | 是 | string | 自定义配置(长度不能超过512位) |
返回值
字典类型,例:{"code": 0, "message": "OK"}
获取软件配置
语法
ret = hw.getSoftwareConfig()
参数
无
返回值
字典类型,例:参考接口返回
获取软件公告
语法
ret = hw.getSoftwareNotice()
参数
无
返回值
字典类型,例:参考接口返回
获取软件最新版本
语法
ret = hw.getSoftwareLatestVersion(current_ver)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
current_ver | 否 | string | 当前本地的版本(长度不能超过30位)空默认返回 发布版本 |
返回值
字典类型,例:参考接口返回
远程变量
获取远程变量
语法
ret = hw.getRemoteVar(key)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程变量名(长度不能超过64位) |
返回值
字典类型,例:参考接口返回
设置远程变量
语法
ret = hw.updateRemoteVar(key, value)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程变量名key(长度不能超过64位) |
value | 是 | string | 远程变量值value(长度不能超过60000位) |
返回值
字典类型,例:{"code": 0, "message": "OK"}
创建远程变量
语法
ret = hw.createRemoteVar(key,value)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程变量名key(长度不能超过64位) |
value | 是 | string | 远程变量值value(长度不能超过60000位) |
返回值
字典类型,例:参考接口返回
删除远程变量
语法
ret = hw.deleteRemoteVar(key)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程变量名key(长度不能超过64位) |
返回值
字典类型,例:{"code": 0, "message": "OK"}
调用远程函数
语法
ret = hw.callRemoteFunc(funName, params)
示例
远程函数为:
function add(a, b) {
return a + b;
}
脚本中调用:
ret = hw.callRemoteFunc("add", [1, 2])
if (ret.code == 0) {
print(ret.data["result"]);
} else {
print(ret.message);
}
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
funName | 是 | string | 远程函数名(长度不能超过64位) |
params | 是 | array | 参数列表,例:Array(1, 2) |
返回值
字典类型,例:{"code": 0, "message": "OK", "data": {"result": 3}}
其他功能
获取模块版本
语法
ret = hw.getSdkVersion()
返回值
字符串 例:v1.0.0
关闭自动心跳
语法
hw._auto_heartbeat = False
设置心跳周期
语法
hw._heartbeat_gap=120 //默认 120秒 请勿低于60s一次!