# 按键精灵 接入
# 接入须知
# 对接视频
按键pc对接视频 (opens new window) 按键安卓对接视频 (opens new window)
# 获取方式
加群675107742
在群文件下载网络验证插件和命令库,有问题也可在此群交流。
# 使用方式
# 手机版
先将下载到的压缩包中的QCYSDK.luae
和QCYSDK.html
文件解压放入按键精灵手机助手安装路径的Plugin
目录下。 其中QCYSDK.luae
为7c云网络验证插件,QCYSDK.html
为7c云网络验证插件离线帮助文档。
然后在脚本中用Import "QCYSDK.luae"
引入
# PC版本
先将下载到的压缩包中的QCYSDK.QML
和QCYSDK.html
文件解压放入按键精灵PC安装路径的lib目录下。 其中QCYSDK.QML
为7c云网络验证命令库,QCYSDK.html
为7c云网络验证命令库离线帮助文档。
# 手机版卡密登录例子
//此例子有界面,请加群675107742下载此例子源码
Import "QCYSDK.luae"
Dim appKey = "" // 软件的AppKey
Dim appSecret = "" // 软件的AppSecret
// 开启掉线重连
Dim isLoginAgain = "True" //"True" 开启掉线重连, "False" 关闭掉线重连
Dim card = ReadUIConfig("卡密") // 卡密,应该让用户输入
Dim tokenPath = "/sdcard/token.txt"//安卓保存token的路径,可以自己更改路径
//苹果保存token的路径 /private/var/mobile/Media/DCIM/token.txt
Thread.SetShareVar "tokenPath", tokenPath
Dim token = ""
If appKey <> "" And appSecret <> "" Then
//如果是苹果ios系统,请将下面两行注释取消
// QCYSDK.init(appKey, appSecret, "ios")
// QCYSDK.GetIOSDeviceId(GetDeviceID())
//如果是安卓android系统,请将下面一行注释取消
QCYSDK.init(appKey, appSecret, "android")
Else
TracePrint "请填写appKey和appSecret"
EndScript
End If
//设置卡密
If card <> "" Then
QCYSDK.SetCard(card)
Else
TracePrint "请填写card"
EndScript
End If
//如果开启 控制在线数量 每次卡密登录前需要调用退出登录, 没有开启 限制登录次数 这里不用管
//从tokenPath路径 读取token
token = File.Read(tokenPath)
If token <> "" Then
QCYSDK.CardLogout(token)
End If
// 卡密登录
dim ret = QCYSDK.CardLogin()
TracePrint "ret:"&ret
dim data = Encode.JsonToTable(ret)
If data["code"] = 0 Then
TracePrint "卡密登录成功"
TracePrint "卡类:"&data["result"]["cardType"]
TracePrint "到期时间:" & data["result"]["expires"]
TracePrint "到期时间戳:" & data["result"]["expires_ts"]
TracePrint "卡密配置:" & data["result"]["config"]
TracePrint "token:" & data["result"]["token"]
token = data["result"]["token"]
Thread.SetShareVar "token", token
//token写入文本
Call File.Write(tokenPath, token)
ShowMessage "登录成功-到期时间:" & data["result"]["expires"]
Delay 2000
Dim cardHeart = Thread.Start(cardHeartbeat, isLoginAgain)
Else
TracePrint "登录失败:", data["code"], Encode.TableToJson(data["message"])
ShowMessage Encode.TableToJson(data["message"])
Delay 2000
EndScript
End If
/*卡密心跳*/
Sub cardHeartbeat(isLoginAgain)
dim data, ret, heartbeatFail
Dim count = 0
Do
ret = QCYSDK.StartCardHeartbeat()
TracePrint "心跳:"&ret
If ret <> "" Then
count = 0
data = Encode.JsonToTable(ret)
If data["code"] <> 0 and data["message"] = "登录状态已失效" Then
If isLoginAgain = "True" Then
heartbeatFail = 0
For 3
heartbeatFail = heartbeatFail + 1
TracePrint "第" & heartbeatFail & "次重新登录!!!"
ret = QCYSDK.reCardLogin()
If ret <> "" Then
data = Encode.JsonToTable(ret)
If data["code"] = 0 Then
token = data["result"]["token"]
Thread.SetShareVar "token", token
//token写入文本
Call File.Write(Thread.GetShareVar("tokenPath"), token)
heartbeatFail = 0
Exit For
Else
TracePrint Encode.TableToJson(data["message"])
End If
End If
Delay 60 * 1000
Next
If heartbeatFail >= 3 Then
ShowMessage "网络异常!请检查网络"
Delay 2000
exitscript
End If
Else
TracePrint data["message"]
ShowMessage Encode.TableToJson(data["message"])
Delay 2000
exitscript
End If
ElseIf data["code"] <> 0 Then
TracePrint data["message"]
ShowMessage Encode.TableToJson(data["message"])
Delay 2000
exitscript
End If
Delay 600 * 1000
Else
count = count + 1
Delay 60 * 1000
End If
If count >= 3 Then
ShowMessage "网络异常!请检查网络"
Delay 2000
exitscript
End If
Loop
End Sub
// 脚本停止事件
Function OnScriptExit()
// 自动调用退出登录
Delay 2500
QCYSDK.CardLogout(Thread.GetShareVar("token"))
End Function
//*****************************下面开始写你的代码**************************************
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# 手机版用户登录例子
//此例子有界面,请加群675107742下载此例子源码
Import "QCYSDK.luae"
Dim appKey = "" // 软件的AppKey
Dim appSecret = "" // 软件的AppSecret
Dim username = ReadUIConfig("用户名")//用户名
Dim password = ReadUIConfig("密码")//密码
// 开启掉线重连
Dim isLoginAgain = "True" //"True" 开启掉线重连, "False" 关闭掉线重连
Dim tokenPath = "/sdcard/token.txt"//保存token的路径,可以自己改
//苹果保存token的路径 /private/var/mobile/Media/DCIM/token.txt
Thread.SetShareVar "tokenPath", tokenPath
Dim token = ""
If appKey <> "" And appSecret <> "" Then
//如果是苹果ios系统,请将下面两行注释取消
//QCYSDK.init(appKey, appSecret, "ios")
//QCYSDK.GetIOSDeviceId(GetDeviceID())
//如果是安卓android系统,请将下面一行注释取消
QCYSDK.init(appKey, appSecret, "android")
Else
TracePrint "请填写appKey和appSecret"
EndScript
End If
//设置用户
If username <> "" And password <> "" Then
QCYSDK.SetUser(username, password) //填写用户名,和用户密码
Else
TracePrint "请设置用户名和密码"
EndScript
End If
//如果开启 控制在线数量 每次卡密登录前需要调用退出登录, 没有开启 限制登录次数 这里不用管
//从tokenPath路径 读取token
token = File.Read(tokenPath)
If token <> "" Then
QCYSDK.UserLogout(token)
End If
//用户登录
dim ret = QCYSDK.UserLogin()
TracePrint "ret:"&ret
dim data = Encode.JsonToTable(ret)
If data["code"] = 0 Then
TracePrint "用户登录成功"
TracePrint "卡类:"&data["result"]["cardType"]
TracePrint "到期时间:" & data["result"]["expires"]
TracePrint "到期时间戳:" & data["result"]["expires_ts"]
TracePrint "卡密配置:" & data["result"]["config"]
TracePrint "token:" & data["result"]["token"]
token = data["result"]["token"]
Thread.SetShareVar "token", token
//token写入文本
Call File.Write(tokenPath, token)
ShowMessage "登录成功-到期时间:" & data["result"]["expires"]
Delay 2000
dim userHeart = Thread.Start(userHeartbeat, isLoginAgain)
Else
TracePrint "用户登录失败:", data["code"], Encode.TableToJson(data["message"])
ShowMessage Encode.TableToJson(data["message"])
Delay 2000
EndScript
End If
/*用户心跳*/
Sub userHeartbeat(isLoginAgain)
dim data, ret, heartbeatFail
Dim count = 0
Do
ret = QCYSDK.StartUserHeartbeat()
TracePrint "心跳:"&ret
If ret <> "" Then
count = 0
data = Encode.JsonToTable(ret)
If data["code"] <> 0 and data["message"] = "登录状态已失效" Then
If isLoginAgain = "True" Then
heartbeatFail = 0
For 3
heartbeatFail = heartbeatFail + 1
TracePrint "第" & heartbeatFail & "次重新登录!!!"
ret = QCYSDK.reUserLogin()
If ret <>"" Then
data = Encode.JsonToTable(ret)
If data["code"] = 0 Then
token = data["result"]["token"]
Thread.SetShareVar "token", token
//token写入文本
Call File.Write(Thread.GetShareVar("tokenPath"), token)
heartbeatFail = 0
Exit For
Else
TracePrint Encode.TableToJson(data["message"])
End If
End If
Delay 60 * 1000
Next
If heartbeatFail >= 3 Then
TracePrint "网络异常!请检查网络"
ShowMessage "网络异常!请检查网络"
Delay 2000
exitscript
End If
Else
TracePrint data["message"]
ShowMessage Encode.TableToJson(data["message"])
Delay 2000
exitscript
End If
ElseIf data["code"] <> 0 Then
TracePrint data["message"]
ShowMessage Encode.TableToJson(data["message"])
Delay 2000
exitscript
End If
Delay 600 * 1000
Else
count = count + 1
TracePrint "第"&count&"次-重新心跳"
Delay 60 * 1000
End If
If count >= 3 Then
TracePrint "网络异常!请检查网络"
ShowMessage "网络异常!请检查网络"
Delay 2000
exitscript
End If
Loop
End Sub
// 脚本停止事件
Function OnScriptExit()
// 自动调用退出登录
Delay 2500
QCYSDK.UserLogout(Thread.GetShareVar("token"))
End Function
//*****************************这里填写你的代码**************************************
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# 手机版试用登录例子
//此例子有界面,请加群675107742下载此例子源码
Import "QCYSDK.luae"
// 初始化
Dim appKey = "" // 软件的AppKey
Dim appSecret = "" // 软件的AppSecret
If appKey <> "" And appSecret <> "" Then
//如果是苹果ios系统,请将下面两行注释取消
//QCYSDK.init(appKey, appSecret, "ios")
//QCYSDK.GetIOSDeviceId(GetDeviceID())
//如果是安卓android系统,请将下面一行注释取消
QCYSDK.init(appKey, appSecret, "android")
Else
TracePrint "请填写appKey和appSecret"
EndScript
End If
// 试用登录
dim ret = QCYSDK.TrialLogin()
TracePrint "ret:"&ret
dim data = Encode.JsonToTable(ret)
If data["code"] = 0 Then
TracePrint "试用登录成功"
TracePrint "试用过期时间:" & data["result"]["expires"]
TracePrint "试用过期时间戳:" & data["result"]["expires_ts"]
ShowMessage "试用登录成功-到期时间:" & data["result"]["expires"]
Delay 2000
Dim cardHeart = Thread.Start(trialHeartbeat)
Else
TracePrint "试用登录失败:", data["code"], Encode.TableToJson(data["message"])
ShowMessage Encode.TableToJson(data["message"])
Delay 2000
EndScript
End If
/*试用心跳*/
Sub trialHeartbeat()
dim data, ret
Do
ret = QCYSDK.StartTrialHeartbeat()
data = Encode.JsonToTable(ret)
If data["code"] <> 0 Then
TracePrint data["message"]
ShowMessage data["message"]
ret = QCYSDK.TrialLogout()
Delay 2000
exitscript
End If
Delay 600 * 1000
Loop
End Sub
// 脚本停止事件
Function OnScriptExit()
// 自动调用退出登录
Delay 2500
QCYSDK.TrialLogout()
End Function
//*****************************这里填写你的代码**************************************
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# PC版卡密登录例子
将命令库解压放好后,打开按键精灵编辑器,在左侧点全部命令,点开我的命令库,就可以看到QCYSDK。
然后点击 CardLogin 查看帮助文档(有示例)。
//此例子有界面,请加群675107742下载此例子源码
appKey = ""// 填软件的AppKey
appSecret = "" // 填软件的AppSecret
Global token
Global tokenPath
isLoginAgain = true//如果后台启用了【顶号登录】,这里请设为False
tokenPath = "C:\token.txt"//token写入的路径,可以自己指定路径
卡密 = Form1.InputBox1.Text
If 卡密 = "" Then
MessageBox "请输入卡密"
EndScript
End If
// 初始化
Call Lib.QCYSDK.init(appKey, appSecret, isLoginAgain)
Call Lib.QCYSDK.SetCard(卡密)
//卡密解绑
Event Form1.Button1.Click
appKey = ""// 填软件的AppKey
appSecret = "" // 填软件的AppSecret
卡密 = Form1.InputBox1.Text
TracePrint "111"
If 卡密 <> "" Then
Call Lib.QCYSDK.init(appKey, appSecret, isLoginAgain)
Call Lib.QCYSDK.SetCard(卡密)
ret = Lib.QCYSDK.CardUnbindDevice()
TracePrint ret
If instr(ret, "message"":""ok") > 0 Then
MessageBox "解绑设备成功"
Else
MessageBox "解绑设备失败"
End If
Else
MessageBox "请输入卡密"
End If
End Event
//绑定的设备上解绑
Event Form1.Button3.Click
appKey = ""// 填软件的AppKey
appSecret = "" // 填软件的AppSecret
卡密 = Form1.InputBox1.Text
If 卡密 <> "" Then
Call Lib.QCYSDK.init(appKey, appSecret, isLoginAgain)
Call Lib.QCYSDK.SetCard(卡密)
ret = Lib.QCYSDK.CardUnbindDeviceBybindDevice()
If ret(0) = 0 And ret(0) <> "" Then
TracePrint "解绑成功:" & ret(1)
MessageBox "解绑成功:" & ret(1)
Else
TracePrint "解绑失败:" & ret(1)
MessageBox "解绑失败:" & ret(1)
End If
Else
MessageBox "请输入卡密"
End If
End Event
//以卡充卡
Event Form1.Button2.Click
appKey = "" // 填软件的AppKey
appSecret = ""// 填软件的AppSecret
卡密 = Form1.InputBox1.Text
useCard = Form1.InputBox2.Text
If 卡密 = "" Then
MessageBox "请输入被充值卡密"
End If
If useCard = "" Then
MessageBox "请输入充值卡"
End If
If 卡密 <> "" And useCard <> "" Then
Call Lib.QCYSDK.init(appKey, appSecret, isLoginAgain)
ret = Lib.QCYSDK.CardRecharge(卡密, useCard)
TracePrint ret
If instr(ret, "message"":""ok") > 0 Then
MessageBox "充值成功"
Else
MessageBox "充值失败:"&Lib.QCYSDK.JsonDecode(ret, "message")
End If
End If
End Event
// 脚本停止事件
Function OnScriptExit()
// 自动调用退出登录
Call Lib.QCYSDK.CardLogout(token)
TracePrint "自动调用退出登录"
End Function
//如果开启 控制在线数量 每次卡密登录前需要调用退出登录, 没有开启 这里不用管
//从tokenPath路径 读取token
token = Lib.QCYSDK.ReadLineTextFile(tokenPath)
If token <> "" Then
Call Lib.QCYSDK.CardLogout(token)
End If
//卡密登录
TracePrint "登录"
login = Lib.QCYSDK.CardLogin()
TracePrint "login(0):"&login(0)
If login(0) = 0 And login(0) <> "" Then
login_ret = Lib.QCYSDK.GetLoginResult()
TracePrint "卡类:" & login_ret(0)
TracePrint "过期时间:" & login_ret(1)
TracePrint "过期时间戳:" & login_ret(2)
TracePrint "卡密配置:" & login_ret(3)
TracePrint "是否是试用:" & login_ret(4)
TracePrint "token:" & login_ret(5)
MessageBox "过期时间:" &login_ret(1)
Delay 2000
BeginThread GetHeartbeatResult
Delay 2000
Else
TracePrint "登录失败:" & login(1)
MessageBox "登录失败:" & login(1)
ExitScript
End If
//获取心跳结果
Sub GetHeartbeatResult()
Do
Delay 60000
hret = Lib.QCYSDK.GetHeartbeatResult()
If hret(0) <> 0 Then
TracePrint "心跳失败:" & hret(1)
MsgBox "心跳失败:" & hret(1)
ExitScript
End If
Loop
End Sub
//****************************************下面开始写你的代码****************************************************
//这里只是一个循环,为了让线程不停止。填写你的代码前请删除这个do循环
iii = 0
Do
iii = iii + 1
TracePrint "iii="&iii
Delay 10000
Loop
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
注意
以下均为手机版命令库在线文档,PC版请参考离线帮助文档。
# PC版用户登录例子
//此例子有界面,请加群675107742下载此例子源码
appKey = "" // 填软件的AppKey
appSecret = "" // 填软件的AppSecret
isLoginAgain = true//如果后台启用了【顶号登录】,这里请设为False
Global token
Global tokenPath
tokenPath = "C:\token.txt"//token写入的路径,可以自己指定路径
username = Form1.InputBox1.Text //用户名
password = Form1.InputBox2.Text//用户密码
If username = "" Then
MessageBox "请输入用户名"
EndScript
End If
If password = "" Then
MessageBox "请输入密码"
EndScript
End If
// 初始化
Call Lib.QCYSDK.init(appKey, appSecret, isLoginAgain)
//用户解绑设备
Event Form1.Button1.Click
appKey = "" // 填软件的AppKey
appSecret = "" // 填软件的AppSecret
username = Form1.InputBox1.Text //用户名
If username <> "" Then
Call Lib.QCYSDK.init(appKey, appSecret, isLoginAgain)
ret = Lib.QCYSDK.UserUnbindDevice(username)
TracePrint ret
If instr(ret, "message"":""ok") > 0 Then
MessageBox "解绑设备成功"
Else
MessageBox "解绑设备失败"
End If
Else
MessageBox "请输入用户名"
End If
End Event
//卡密充值用户
Event Form1.Button2.Click
appKey = "" // 填软件的AppKey
appSecret = "" // 填软件的AppSecret
username = Form1.InputBox1.Text//用户名
useCard = Form1.InputBox3.Text//充值用的卡密
If username = "" Then
MessageBox "请输入用户名"
End If
If useCard = "" Then
MessageBox "请输入用来充值的卡密"
End If
If username <> "" And useCard <> "" Then
Call Lib.QCYSDK.init(appKey, appSecret, isLoginAgain)
ret = Lib.QCYSDK.UserRecharge(username, useCard)
TracePrint ret
If instr(ret, "message"":""ok") > 0 Then
MessageBox "充值成功"
Else
MessageBox "充值失败:"&Lib.QCYSDK.JsonDecode(ret, "message")
End If
End If
End Event
//注册用户
Event Form1.Button3.Click
appKey = "" // 填软件的AppKey
appSecret = "" // 填软件的AppSecret
username = Form1.InputBox1.Text //用户名
password = Form1.InputBox2.Text//用户密码
useCard = Form1.InputBox3.Text//充值卡
If username = "" Then
MessageBox "请输入用户名"
End If
If password = "" Then
MessageBox "请输入密码"
End If
If useCard = "" Then
MessageBox "请输入用来注册的卡密"
End If
If username <> "" And password <> "" And useCard <> "" Then
Call Lib.QCYSDK.init(appKey, appSecret, isLoginAgain)
ret = Lib.QCYSDK.UserRegister(username, password, useCard)
If instr(ret, "message"":""ok") > 0 Then
TracePrint "注册成功"
MessageBox "注册成功"
Else
TracePrint "注册失败:" & Lib.QCYSDK.JsonDecode(ret, "message")
MessageBox "注册失败:" & Lib.QCYSDK.JsonDecode(ret, "message")
End If
Else
MessageBox "请输入用户名,密码,注册使用的卡密"
End If
End Event
//修改密码
Event Form1.Button4.Click
appKey = "" // 填软件的AppKey
appSecret = "" // 填软件的AppSecret
Call Lib.QCYSDK.init(appKey, appSecret, isLoginAgain)
username = Form1.InputBox1.Text //用户名
password = Form1.InputBox2.Text//用户密码
newpassword = Form1.InputBox4.Text//新密码
If username = "" Then
MessageBox "请输入用户名"
End If
If password = "" Then
MessageBox "请输入密码"
End If
If newpassword = "" Then
MessageBox "请输入新密码"
End If
If username <> "" And password <> "" And newpassword <> "" Then
ret = Lib.QCYSDK.UserChangePassword(username, password, newpassword)
TracePrint "ret:"&ret
If instr(ret, "message"":""ok") > 0 Then
TracePrint "修改密码成功"
MessageBox "修改密码成功"
Else
TracePrint "修改密码失败"
MessageBox "修改密码失败"
End If
Else
MessageBox "请输入用户名,密码,新密码"
End If
End Event
// 脚本停止事件
Function OnScriptExit()
// 自动调用退出登录
Call Lib.QCYSDK.UserLogout(token, username)
TracePrint "自动调用退出登录"
End Function
//如果开启 控制在线数量 每次用户登录前需要调用退出登录, 没有开启 这里不用管
////从tokenPath路径 读取token
token = Lib.QCYSDK.ReadLineTextFile(tokenPath)
If token <> "" Then
Call Lib.QCYSDK.UserLogout(token, username)
End If
//用户登录
login = Lib.QCYSDK.UserLogin(username,password)
If login(0) = 0 Then
login_ret = Lib.QCYSDK.GetLoginResult()
TracePrint "卡类:" & login_ret(0)
TracePrint "过期时间:" & login_ret(1)
TracePrint "过期时间戳:" & login_ret(2)
TracePrint "卡密配置:" & login_ret(3)
TracePrint "是否是试用:" & login_ret(4)
TracePrint "token:" & login_ret(5)
MessageBox "过期时间:" &login_ret(1)
Delay 2000
BeginThread GetHeartbeatResult
Delay 2000
Else
TracePrint "登录失败:" & login(1)
MessageBox "登录失败:" & login(1)
ExitScript
End If
//获取心跳结果
Sub GetHeartbeatResult()
Do
Delay 60000
hret = Lib.QCYSDK.GetHeartbeatResult()
If hret(0) <> 0 Then
TracePrint "心跳失败:"&hret(1)
ExitScript
End If
Loop
End Sub
//****************************************下面开始写你的代码****************************************************
//这里只是一个循环,为了让线程不停止。填写你的代码前请删除这个do循环
iii = 0
Do
iii = iii + 1
TracePrint "iii="&iii
Delay 10000
Loop
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# PC版试用登录例子
//此例子有界面,请加群675107742下载此例子源码
appKey = "" // 填软件的AppKey
appSecret = ""// 填软件的AppSecret
isLoginAgain = true//如果后台启用了【顶号登录】,这里请设为False
// 初始化
Call Lib.QCYSDK.init(appKey, appSecret, isLoginAgain)
// 登录成功后将自动启动一个线程发送心跳包,开发者只需调用 Lib.QCYSDK.GetHeartbeatResult() 获取当前心跳结果
login = Lib.QCYSDK.TrialLogin()
If login(0) = 0 Then
login_ret = Lib.QCYSDK.GetLoginResult()
TracePrint "卡类:" & login_ret(0)
TracePrint "过期时间:" & login_ret(1)
TracePrint "过期时间戳:" & login_ret(2)
TracePrint "卡密配置:" & login_ret(3)
TracePrint "是否是试用:" & login_ret(4)
MessageBox "过期时间:" &login_ret(1)
Delay 2000
BeginThread GetHeartbeatResult
Else
TracePrint "登录失败:" & login(1)
MessageBox "登录失败:" & login(1)
ExitScript
End If
// 脚本停止事件
Function OnScriptExit()
// 自动调用退出登录
Call Lib.QCYSDK.TrialLogout()
TracePrint "自动调用退出登录"
End Function
//获取心跳结果
Sub GetHeartbeatResult()
Do
Delay 60000
hret = Lib.QCYSDK.GetHeartbeatResult()
If hret(0) <> 0 Then
TracePrint "心跳失败:"&hret(1)
ExitScript
End If
Loop
End Sub
//****************************************下面开始写你的代码****************************************************
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 变量说明
# 初始化变量
appKey
: 软件的AppKey,开发者端软件管理页获取appSecret
: 软件的AppSecret,开发者端软件管理页获取card
: 卡密,只用账号密码登录的就不用初始化cardusername
: 用户账号,只用卡密登录的就不用初始化usernamepassword
: 用户密码,只用卡密登录的就不用初始化passworddevice_id
: 设备号,默认会自动获取,不建议修改。如果你有更好的一机一码的生成方案,可在初始化时修改该值
# 可获取变量
注意
以下变量都为登录成功后才能取到值的。
cardType
: 卡密类型,例如:年卡expires
: 过期时间,例如:2020-10-16 00:47:58expires_ts
: 过期时间戳,例如:1602780478config
: 卡密或用户配置,开发者可通过接口自定义的is_trial
: 是否是试用登录
# 返回值说明
按键的返回值是json数据类型,需要解析json获取数据
获取软件版本和下载链接例子:
Json类型,例:{ result: { server_time: 1624121862, version: '1.0.1', url:'www.baidu.com' }, message: 'ok', code: 0 }
ret = QCYSDK.GetSoftwareVersion()
If ret Then
data = Encode.JsonToTable(ret)
If data["code"] = 0 Then
TracePrint "软件版本:", data["result"]["version"]
TracePrint "下载链接:", data["result"]["url"]
End If
End If
2
3
4
5
6
7
8
# 获取时间戳
# 语法
ret = QCYSDK.Timestamp()
# 参数
无
# 返回值
数值型,例:1624183153
# 获取心跳结果
# 语法
ret = QCYSDK.GetHeartbeatResult()
# 参数
无
# 返回值
Json类型,例:{"code": 0, "message": "ok"}
# 获取剩余时长
# 语法
ret = QCYSDK.GetTimeRemaining()
# 参数
无
# 返回值
数值类型,剩余多少秒,例:1024
# 卡密登录
注意
调用此接口前需初始化 QCYSDK.SetCard(card)
登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
开发者只需在自己的脚本中通过调用 QCYSDK.GetHeartbeatResult()
获取心跳结果。
# 语法
QCYSDK.SetCard(card)
ret = QCYSDK.CardLogin()
2
# 参数
无
# 返回值
Json类型,{"result":{"cardType":"月卡","token":"5tPUfvXyrW2zGkLgfqEBPwkM4vfilMZZ","expires":"2021-09-17 01:49:38","expires_ts":"1631814578","config":"迪迦","server_time":1624185571},"message":"ok","code":0}
# 卡密退出登录
# 语法
ret = QCYSDK.CardLogout(token)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
token | 是 | string | 登录成功时获取的 登录令牌token |
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 卡密解绑设备
注意
请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。 该接口只能在卡密登录后调用
# 语法
ret = QCYSDK.CardUnbindDevice()
# 参数
无
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 卡密绑定设备上解绑
注意
请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。 该接口只能在卡密登录后调用
# 语法
ret = QCYSDK.CardUnbindDeviceBybindDevice()
# 参数
无
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 卡密设置解绑密码
说明
请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。 该密码用于绑定设备丢失或者其它原因导致无法在老设备登录时解绑设备。
# 语法
ret = QCYSDK.SetCardUnbindPassword(password)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
password | 是 | string | 解绑密码,6-10位 |
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 卡密通过密码解绑设备
说明
请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。 该接口用于绑定设备丢失或者其它原因导致无法在老设备登录时,通过解绑密码解绑设备
# 语法
ret = QCYSDK.CardUnbindDeviceByPassword(password)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
password | 是 | string | 解绑密码,6-10位 |
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 卡密充值(以卡充卡)
# 语法
ret = QCYSDK.CardRecharge(card, useCard)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
card | 是 | string | 被充值的卡密(长度不超过45位) |
useCard | 是 | string | 充值使用的卡密(长度不超过45位) |
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 用户注册(通过卡密)
# 语法
ret = QCYSDK.UserRegister(username, password, card)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
username | 是 | string | 用户名(长度不能超过20位) |
password | 是 | string | 用户密码(长度6-30位) |
card | 是 | string | 注册使用的卡密(长度不超过45位) |
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 用户登录
注意
调用此接口前需初始化 QCYSDK.SetUser(username, password)
登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
开发者只需在自己的脚本中通过调用 QCYSDK.GetHeartbeatResult()
获取心跳结果
# 语法
QCYSDK.SetUser(username, password) //填写用户名,和用户密码
ret = QCYSDK.UserLogin()
2
# 参数
无
# 返回值
Json类型,例:{"result":{"cardType":"月卡","token":"5tPUfvXyrW2zGkLgfqEBPwkM4vfilMZZ","expires":"2021-09-17 01:49:38","expires_ts":"1631814578","config":"迪迦","server_time":1624185571},"message":"ok","code":0}
# 用户退出登录
# 语法
ret = QCYSDK.UserLogout(token)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
token | 是 | string | 登录成功获取的登录令牌 |
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 用户修改密码
# 语法
ret = QCYSDK.UserChangePassword(username, password, newPassword)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
username | 是 | string | 用户名(长度不能超过20位) |
password | 是 | string | 用户密码(长度6-30位) |
newPassword | 是 | string | 新密码(长度6-30位) |
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 用户充值(通过卡密)
# 语法
ret = QCYSDK.UserRecharge(username, card)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
username | 是 | string | 用户名(长度不能超过20位) |
card | 是 | string | 充值使用的卡密(长度不超过45位) |
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 用户解绑设备
# 语法
ret = QCYSDK.UserUnbindDevice()
# 参数
无
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 试用登录
注意
登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
只需在自己的脚本中通过调用 qcysdk.GetHeartbeatResult()
获取当前心跳结果。
# 语法
ret = QCYSDK.TrialLogin()
# 参数
无
# 返回值
Json类型
# 试用退出登录
# 语法
ret = QCYSDK.TrialLogout()
# 参数
无
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 获取卡密配置
# 语法
ret = QCYSDK.GetCardConfig()
# 参数
无
# 返回值
Json类型,例:{ result: { config: '', server_time: 1624120946 }, message: 'ok', code: 0 }
# 更改卡密配置
# 语法
ret = QCYSDK.UpdateCardConfig(config)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
config | 是 | string | 自定义配置(长度不能超过512位) |
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 获取用户配置
# 语法
ret = QCYSDK.GetUserConfig()
# 参数
无
# 返回值
Json类型,例:{ result: { config: '迪迦', server_time: 1624121563 }, message: 'ok', code: 0 }
# 更改用户配置
# 语法
ret = QCYSDK.UpdateUserConfig(config)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
config | 是 | string | 自定义配置(长度不能超过512位) |
# 返回值
Json类型,例:{"code": 0, "message": "OK"}
# 获取软件配置
# 语法
ret = QCYSDK.GetSoftwareConfig()
# 参数
无
# 返回值
Json类型,例:{ result: { config: '迪迦', server_time: 1624121758 }, message: 'ok', code: 0 }
# 获取软件公告
# 语法
ret = QCYSDK.GetSoftwareNotice()
# 参数
无
# 返回值
Json类型,例:{ result: { server_time: 1624121862, notice: '泰罗' }, message: 'ok', code: 0 }
# 获取软件版本和下载链接
# 语法
ret = QCYSDK.GetSoftwareVersion()
If ret Then
data = Encode.JsonToTable(ret)
If data["code"] = 0 Then
TracePrint "软件版本:", data["result"]["version"]
TracePrint "下载链接:", data["result"]["url"]
End If
End If
2
3
4
5
6
7
8
# 参数
无
# 返回值
Json类型,例:{ result: { server_time: 1624121862, version: '1.0.1', url:'www.baidu.com' }, message: 'ok', code: 0 }
# 获取远程变量
注意
调用此接口前 需要登录成功后才能调用。
# 语法
ret = QCYSDK.GetRemoteVar(key)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程变量名(长度不能超过64位) |
# 返回值
Json类型,例:{ result: { server_time: 1624122124, varValue: '斯奥特曼' }, message: 'ok', code: 0 }
# 获取远程数据
注意
调用此接口前 需要登录成功后才能调用。
# 语法
ret = QCYSDK.GetRemoteData(key)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程数据key(长度不能超过64位) |
# 返回值
Json类型,例:{ result: { server_time: 1624122295, value: '奥特曼' }, message: 'ok', code: 0 }
# 操作远程数据
# 新增远程数据
注意
调用此接口前 需要登录成功后才能调用。
# 语法
ret = QCYSDK.CreateRemoteData(key, value)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程数据key(长度不能超过64位) |
value | 是 | string | 远程数据值(长度不能超过256位) |
# 返回值
Json类型,例:{ result: { server_time: 1624122453 }, message: 'ok', code: 0 }
# 修改远程数据
注意
调用此接口前 需要登录成功后才能调用。
# 语法
ret = QCYSDK.UpdateRemoteData(key, value)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程数据key(长度不能超过64位) |
value | 是 | string | 远程数据值(长度不能超过256位) |
# 返回值
Json类型,例:{ result: { server_time: 1624122453 }, message: 'ok', code: 0 }
# 删除远程数据
注意
调用此接口前 需要登录成功后才能调用。
# 语法
ret = QCYSDK.DeleteRemoteData(key)
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程数据key(长度不能超过64位) |
# 返回值
Json类型,例:{ result: { server_time: 1624122453 }, message: 'ok', code: 0 }
# 云函数
注意
调用此接口前 需要登录成功后才能调用。
# 语法
ret = qcysdk.CallRemoteFn(fnName, params);
# 参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
fnName | 是 | string | 云函数名(长度不能超过64位) |
params | 是 | string | 调用云函数时传入的参数 |
# 返回值
Object类型,例:{"result":{"return":"55","server_time":1689788200},"message":"ok","sign":"236cd75d551fb991ac88684761778a17","nonce":"vwWSKfwOgbLocFzg15OX","code":0}
# 按键pc 云函数传入变量的例子:
Dim a, b
Randomize
a = Int((10 * Rnd) + 1) ' 产生 1 到 10 之间的随机数。
TracePrint "a="&a
b = Int((10 * Rnd) + 1) ' 产生 1 到 10 之间的随机数。
TracePrint "b=" & b
ret = Lib.QCYSDK.CallRemoteFn("add", ""&a&","&b&"")
TracePrint "ret:" & ret
2
3
4
5
6
7
8
# 按键安卓 云函数传入变量的例子:
Dim p1 = 1
Dim p2 = 2
Dim p3 = 3
TracePrint ""&p1&","&p2&""
ret = QCYSDK.CallRemoteFn("fun1", ""&p1&","&p2&","&p3&"")
If ret(0) = 0 Then
TracePrint "云函数结果为:" & ret(1)
Else
TracePrint "云函数错误:" & ret(1)
End If
2
3
4
5
6
7
8
9
10