Appearance
按键精灵
下载示例工程、下载 SDK
按键的没写文档,示例给你,自己凑合看吧:
Import "VerifyHub.mqle"
Import "VerifyHub.mql"
Import "Cjson.lua"
//定义当前平台,有些作者可能程序跨平台的 这种场景就可以用到了
dim platform = "anjian_phone"
//服务器域名地址,如果你的是独立部署的版本,请更换为你的独立域名|IP
dim apiDomain = "https://api.kauth.cn"
//程序Id,在程序管理中查看
dim programId = "1959821336266936321"
//商户公钥,在系统设置,密钥配置中查看,注意复制HMAC_SHA256密钥
dim merchantPublicKey = "5L3qvLOOmOXOzXBcSuvyV+cpRP83GSVIzyEMopUY+sE="
//程序密钥,在程序管理中查看
dim programKey = "F77VzI7UWAElpWrz"
//按键只能支持HMAC_SHA256
dim signType = "HMAC_SHA256"
// 初始化配置
VerifyHub.initConfig(apiDomain, programId, merchantPublicKey, programKey, signType)
testKaLogin
dim userInfoResult = VerifyHub.getUserInfo()
TracePrint "【获取用户信息原始响应】: " & Cjson.Encode(userInfoResult)
dim testFuncName = "function_1"
Dim arr(5)
arr(0) = {"paramName":"param1", "paramValue":"1"}
arr (1) = {"paramName": "param2", "paramValue": "33"}
dim result = VerifyHub.callFunction(testFuncName, arr)
TracePrint "调用远程函数原始响应: " & Cjson.Encode(result)
//testLoginPwd
//testGetCaptcha
//testChangePassword
//testKaLogin
//testLoginOut
//testRecharge
//testRechargeKa
//testRegister
//testTrialLogin
//testUnbindDeviceUnlogged
//testGetServerTime
//testGetProgramDetail
//测试获取卡配置和修改配置-需卡密登录
//testKaLogin
//testUpdateKaConfig
//testGetKaConfig
//测试卡密登录 修改用户配置和查询
//testKaLogin
//testUpdateUserConfig
//testGetUserConfig
//测试账密登录 修改用户配置和查询
//testLoginPwd
//testUpdateUserConfig
//testGetUserConfig
//测试在线解绑设备 -账密登录
//testLoginPwd
//testUnBindDevice
//测试在线解绑设备 -卡密登录
//testKaLogin
//testUnBindDevice
//测试远程数据
//testKaLogin
//testAddRemoteData
//testGetRemoteData
//testUpdateRemoteData
//testGetRemoteData
//testDeleteRemoteData
//testGetRemoteData
//测试远程函数
//testKaLogin
//testCallFunction
//测试获取远程变量
//testGetRemoteVar
//测试远程脚本分发
//testKaLogin
//testGetNewestScript
//testGetScriptDownload
//测试登录后获取用户信息
//testGetUserInfo
// 一、账号与登录相关测试
// 1. 测试账号密码登录
Function testLoginPwd()
dim testLoginName = "test_user_001"
dim testPassword = "test_new_pwd_456"
dim testCaptchaUuid = "" // 需替换为真实验证码UUID 可留空
dim testCaptchaCode = "" // 需替换为真实验证码 可留空
dim result = VerifyHub.loginPwd(testLoginName, testPassword, testCaptchaCode, testCaptchaUuid)
TracePrint "账号密码登录原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "登录成功", "用户ID: " & result["userId"], "昵称: " & result["nickName"]
else
TracePrint "登录失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 2. 测试获取图形验证码
Function testGetCaptcha()
dim result = VerifyHub.getCaptcha()
TracePrint "获取验证码原始响应: " & Cjson.Encode(result)
If result["code"] = 200 Then
//captchaUuid 验证码id
//captchaBase64 验证码图片base64
//视情况而定,可能有的作者需要验证码的,有的作者不需要验证码就可以登录
dim captchaUuid = result["captchaUuid"]
dim captchaBase64 = result["captchaBase64"]
//解密后的base64 多了个\ 要给他去掉
captchaBase64 = Replace(captchaBase64, "\\/", "/")
TracePrint "captchaBase64",captchaBase64
TracePrint "获取成功", "UUID: " & captchaUuid, "Base64长度: " & Len(captchaBase64)
else
TracePrint "获取失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 3. 测试修改密码
Function testChangePassword()
dim testLoginName = "test_user_001"
dim testOldPwd = "test_pwd_123"
dim testNewPwd = "test_new_pwd_456"
dim testConfirmPwd = "test_new_pwd_456"
dim testCaptchaUuid = ""
dim testCaptchaCode = ""
dim result = VerifyHub.changePassword(testLoginName, testOldPwd, testNewPwd, testConfirmPwd, testCaptchaCode, testCaptchaUuid)
TracePrint "修改密码原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "修改成功", "账号: " & testLoginName
else
TracePrint "修改失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 4. 测试卡密登录
Function testKaLogin()
dim testKaPwd = "m6f1expf" // 需替换为真实卡密
dim testCaptchaUuid = ""
dim testCaptchaCode = ""
dim result = VerifyHub.kaLogin(testKaPwd, testCaptchaCode, testCaptchaUuid, platform)
TracePrint "卡密登录原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "登录成功", "用户ID: " & result["userId"], "昵称: " & result["nickName"]
else
TracePrint "登录失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 5. 测试退出登录
Function testLoginOut()
dim result = VerifyHub.loginOut()
TracePrint "退出登录原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "退出成功"
else
TracePrint "退出失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 6. 测试账号充值卡密
Function testRecharge()
dim testLoginName = "test_user_001"
dim testKaPwd = "c21a715686764a15af354291fffb56ea" // 需替换为真实充值卡密
dim testCaptchaUuid = ""
dim testCaptchaCode = ""
dim result = VerifyHub.recharge(testLoginName, testKaPwd, testCaptchaCode, testCaptchaUuid)
TracePrint "账号充值原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "充值成功", "账号: " & testLoginName
else
TracePrint "充值失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 7. 测试以卡充卡
Function testRechargeKa()
dim testOldKa = "ed4361ed398542cf954e086eb8808c42" // 需替换为真实卡密
dim testNewKa = "5457134643244d4f9efcefe20d0ffae7" // 需替换为真实卡密
dim result = VerifyHub.rechargeKa(testOldKa, testNewKa)
TracePrint "以卡充卡原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "充卡成功", "原卡密: " & testOldKa
else
TracePrint "充卡失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 8. 测试用户注册
Function testRegister()
dim testLoginName = "test_new_user_002" // 未注册账号
dim testPwd = "test_pwd_123"
dim testKaPwd = "2ce4dea38c0d49edbd1bb51d11b7dfab" // 注册用卡密
dim testNickName = "测试用户002"
dim testCaptchaUuid = ""
dim testCaptchaCode = ""
dim result = VerifyHub.register(testLoginName, testPwd, testKaPwd, testCaptchaCode, testCaptchaUuid, testNickName)
TracePrint "用户注册原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "注册成功", "用户ID: " & result["userId"]
else
TracePrint "注册失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 9. 测试试用登录
Function testTrialLogin()
dim result = VerifyHub.trialLogin()
TracePrint "试用登录原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "试用登录成功", "用户ID: " & result["userId"]
else
TracePrint "试用失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 10. 测试未登录解绑设备
Function testUnbindDeviceUnlogged()
dim testLoginName = "test_user_001"
dim testPwd = "test_new_pwd_456"
dim testCaptchaUuid = ""
dim testCaptchaCode = ""
dim result = VerifyHub.unbindDeviceUnlogged(testLoginName, testPwd, testCaptchaCode, testCaptchaUuid)
TracePrint "未登录解绑原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "解绑成功", "账号: " & testLoginName
else
TracePrint "解绑失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 二、系统与配置相关测试
// 11. 测试获取服务器时间
Function testGetServerTime()
dim result = VerifyHub.getServerTime()
TracePrint "服务器时间原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "获取成功", _
"时间字符串: " & result["serverTimeStr"], _
"秒级时间: " & result["serverTimeSec"], _
"毫秒级时间: " & result["serverTimeMill"]
else
TracePrint "获取失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 12. 测试获取程序详情
Function testGetProgramDetail()
dim result = VerifyHub.getProgramDetail()
TracePrint "程序详情原始响应: " & Cjson.Encode(result)
If result["code"] = 200 Then
' 提取程序基本信息
dim programId = result["programId"] //程序Id
dim programName = result["name"] //程序名称
dim forceUpdateDict = result["forceUpdateDict"] //是否强制升级
dim programStatus = result["status"] //程序状态 enable(启用) disable(禁用)
dim programEnableRegisterDict = result["enableRegisterDict"]//是否开启注册
dim notice = result["notice"]//公告
' 提取版本信息 最新版本
dim versionNo = result["versionNo"]//版本号: 21
dim versionName = result["versionName"]//版本名称: 1.0.3
dim versionDesc = result["versionDesc"] //版本描述
dim versionDownUrl = result["versionDownUrl"] //版本下载地址
TracePrint "程序名称",programName
TracePrint "强制升级",boolToString(forceUpdateDict)
TracePrint "程序状态",boolToString(programStatus)
TracePrint "程序注册",boolToString(programEnableRegisterDict)
TracePrint "程序公告",notice
TracePrint "最新版本号",versionNo
TracePrint "最新版本名称",versionName
TracePrint "最新版本描述",versionDesc
TracePrint "最新版本下载地址",versionDownUrl
else
TracePrint "获取失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 13. 测试获取卡密配置-需登录
Function testGetKaConfig()
dim result = VerifyHub.getKaConfig()
TracePrint "卡密配置原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "获取成功", "配置长度: " & Len(result["config"])
else
TracePrint "获取失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 14. 测试修改卡密配置-需卡密登录类型
Function testUpdateKaConfig()
dim testConfig = "test_ka_config_" & Now() // 示例配置
dim result = VerifyHub.updateKaConfig(testConfig)
TracePrint "修改卡密配置原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "修改成功", "配置内容: " & testConfig
else
TracePrint "修改失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 15. 测试获取用户配置-需登录
Function testGetUserConfig()
dim result = VerifyHub.getUserConfig()
TracePrint "用户配置原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "获取成功", "配置长度: " & Len(result["config"])
else
TracePrint "获取失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 16. 测试修改用户配置-需登录
Function testUpdateUserConfig()
dim testConfig = "test_user_config_" & Now() // 示例配置
dim result = VerifyHub.updateUserConfig(testConfig)
TracePrint "修改用户配置原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "修改成功", "配置内容: " & testConfig
else
TracePrint "修改失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 17. 测试在线状态解绑设备
Function testUnBindDevice()
dim result = VerifyHub.unBindDevice() // 需先登录
TracePrint "在线解绑原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "在线解绑成功"
else
TracePrint "解绑失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 三、远程数据与脚本相关测试
// 18. 测试添加远程数据 -需登录
Function testAddRemoteData()
dim testKey = "test_key_remotedata"
dim testValue = "test_value_" & Now()
dim result = VerifyHub.addRemoteData(testKey, testValue)
TracePrint "添加远程数据原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "添加成功", "键: " & testKey, "值: " & testValue
else
TracePrint "添加失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 19. 测试调用远程函数 - 需登录
Function testCallFunction()
dim testFuncName = "function_1"
Dim arr(5)
arr(0) = {"paramName":"param1", "paramValue":"1"}
arr (1) = {"paramName": "param2", "paramValue": "33"}
dim result = VerifyHub.callFunction(testFuncName, arr)
TracePrint "调用远程函数原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "调用成功", "函数名: " & testFuncName, "结果: " & result["result"]
else
TracePrint "调用失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 20. 测试删除远程数据
Function testDeleteRemoteData()
dim testKey = "test_key_remotedata" // 需替换为已存在的key
dim result = VerifyHub.deleteRemoteData(testKey)
TracePrint "删除远程数据原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "删除成功", "键: " & testKey
else
TracePrint "删除失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 21. 测试获取最新脚本数据
Function testGetNewestScript()
dim testScriptName = "test_script" // 需替换为真实脚本名
dim result = VerifyHub.getNewestScript(testScriptName)
TracePrint "最新脚本数据原始响应: " & Cjson.Encode(result)
dim scriptName = result["scriptName"]
dim versionNumber = result["versionNumber"]
dim scriptReleaseTime = result["scriptReleaseTime"]
dim scriptType = result["scriptType"] //TEXT (文本类型) BINARY(二进制类型)
if result["code"] = 200 then
TracePrint "获取成功", _
"脚本名: " & scriptName, _
"版本号: " & versionNumber, _
"发布时间: " & scriptReleaseTime,_
"脚本类型: " & scriptType
else
TracePrint "获取失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 22. 测试获取远程数据
Function testGetRemoteData()
dim testKey = "test_key_remotedata" // 需替换为已存在的key
dim result = VerifyHub.getRemoteData(testKey)
TracePrint "获取远程数据原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "获取成功", "键: " & testKey, "值: " & result["value"]
else
TracePrint "获取失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 23. 测试获取远程变量
Function testGetRemoteVar()
dim testKey = "test_var_to_get" // 需替换为已存在的变量key
dim result = VerifyHub.getRemoteVar(testKey)
TracePrint "获取远程变量原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "获取成功", "键: " & testKey, "值: " & result["value"]
else
TracePrint "获取失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 24. 测试获取脚本临时下载地址
Function testGetScriptDownload()
dim testScriptName = "test_script" // 需替换为真实脚本名
dim testVersion = "1.0.1" // 需替换为真实版本号
dim result = VerifyHub.getScriptDownload(testScriptName, testVersion)
TracePrint "脚本下载地址原始响应: " & Cjson.Encode(result)
If result["code"] = 200 Then
dim downloadUrl = apiDomain & result["downloadUrl"]
TracePrint "获取成功", "下载地址: " & downloadUrl
else
TracePrint "获取失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 25. 测试更新远程数据
Function testUpdateRemoteData()
dim testKey = "test_key_remotedata" // 需替换为已存在的key
dim testNewValue = "updated_value_" & Now()
dim result = VerifyHub.updateRemoteData(testKey, testNewValue)
TracePrint "更新远程数据原始响应: " & Cjson.Encode(result)
if result["code"] = 200 then
TracePrint "更新成功", "键: " & testKey, "新值: " & testNewValue
else
TracePrint "更新失败", "错误码: " & result["code"], "信息: " & result["msg"]
end if
End Function
// 将boolean类型转换为字符串"true"或"false"
Function boolToString(boolValue)
If boolValue Then
boolToString = "true" // 如果是true,返回字符串"true"
Else
boolToString = "false" // 如果是false,返回字符串"false"
End If
End Function
//测试获取用户信息(需先登录,确保全局accesstoken有效) -建议定时获取用户信息,相当于是一个心跳的接口
Function testGetUserInfo()
' 1. 前置:先执行登录(支持替换为卡密/试用登录,此处以账号密码登录为例)
dim testLoginName = "test_user_001" ' 替换为实际测试账号
dim testPassword = "test_new_pwd_456" ' 替换为实际测试密码
dim testCaptchaCode = "" ' 替换为真实验证码
dim testCaptchaUuid = "" ' 替换为getCaptcha返回的UUID
dim loginResult = VerifyHub.loginPwd(testLoginName, testPassword, testCaptchaCode, testCaptchaUuid)
' 登录失败直接终止,避免无效调用
If loginResult["code"] <> 200 Then
TracePrint "【前置登录失败】获取用户信息测试终止,错误:" & loginResult["msg"]
Exit Function
End If
' 2. 调用获取用户信息接口(无入参,依赖登录态)
dim userInfoResult = VerifyHub.getUserInfo()
' 3. 输出原始响应,便于调试定位问题
TracePrint "【获取用户信息原始响应】: " & Cjson.Encode(userInfoResult)
' 4. 提取关键返回字段,按结果分支处理
dim responseCode = userInfoResult["code"]
If responseCode = 200 Then
' 成功时提取用户核心信息并打印
dim userId = userInfoResult["userId"]
dim serverType = userInfoResult["serverType"]
dim remainNum = userInfoResult["serverRemainNum"]
dim expireTime = userInfoResult["serverExpireTime"]
' 用if判断替换三目运算符,处理布尔值转文字
dim isTrial
If userInfoResult["trial"] Then
isTrial = "是"
Else
isTrial = "否"
End If
TracePrint "【获取成功】"
TracePrint "用户ID: " , userId
TracePrint "服务类型: " , serverType
TracePrint "服务剩余次数: " , remainNum //次卡登录 也就是服务类型为ci 的时候才有值
TracePrint "服务到期时间: " , expireTime //时卡登录 或者账号登录 也就是服务类型为time 的时候才有值
TracePrint "是否试用用户: " , isTrial
Else
' 失败时打印错误详情
TracePrint "【获取失败】"
TracePrint "错误码: " & responseCode
TracePrint "错误信息: " & userInfoResult["msg"]
End If
End Function