# 按键精灵 快速接入

泡椒云网络验证提供了官方的按键精灵手机助手按键精灵PC两版的命令库,方便按键作者接入。

# 接入须知

# 获取方式

下载地址:https://paojiaoyun.lanzoui.com/b015bkcyj
或者加群1018871394在群文件下载网络验证命令库,有问题也可在此群交流。

# 使用方式

# 手机版

先将下载到的压缩包中的PJYSDK.mqlePJYSDK.html文件解压放入按键精灵手机助手安装路径的CommandLib目录下。 其中PJYSDK.mqle为泡椒云网络验证命令库,PJYSDK.html为泡椒云网络验证命令库离线帮助文档。
然后在脚本中用Import "PJYSDK.mqle"引入。

# PC版

先将下载到的压缩包中的PJYSDK.QMLPJYSDK.html文件解压放入按键精灵PC安装路径的lib目录下。 其中PJYSDK.QML为泡椒云网络验证命令库,PJYSDK.html为泡椒云网络验证命令库离线帮助文档。

# 手机版一个看效果的示例:

Import "PJYSDK.mqle"

TracePrint "PJYSDK版本:" & PJYSDK.LibVersion()
// 初始化
PJYSDK.app_key = "bnsekoso6itblafodqe6"  // 软件的AppKey
PJYSDK.app_secret = "m3p0lkODcCUpyf3o6DkktAQSJqqLygeV"  // 软件的AppSecret
PJYSDK.card = "IWPSJKeEeMaHb7dXZVVSb42SLUUWIPAMBHaAWKLO"

// 卡密登录
// 登录成功后将自动启动一个线程发送心跳包,细节无需关心
// 开发者只需在自己的脚本中调用 PJYSDK.GetHeartbeatResult() 获取心跳结果
Dim login_ret = PJYSDK.CardLogin()

If login_ret["code"] = 0 Then
    TracePrint "卡密登录成功"

    While True
        // 获取心跳结果
        Dim ret = PJYSDK.GetHeartbeatResult()
        // 建议在关键的功能入口判断 ret["code"] 是否等于 0
        TracePrint ret["code"], ret["message"]
        
        If ret["code"] <> 0 Then
            Exit While
        End If
        
        // 获取剩余时长(秒)建议在关键的功能入口判断是否大于0
        TracePrint PJYSDK.GetTimeRemaining()
        Delay 1000
    Wend
Else
    TracePrint "CardLogin", login_ret["code"], login_ret["message"]
End If

// 脚本停止事件
Function OnScriptExit()
    // 自动调用退出登录
    PJYSDK.CardLogout()
End Function
1
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

# 手机版一个稍微实用的示例:

Import "PJYSDK.mqle"

TracePrint "PJYSDK版本:" & PJYSDK.LibVersion()
// 初始化
PJYSDK.app_key = "bnsekoso6itblafodqe6"  // 软件的AppKey
PJYSDK.app_secret = "m3p0lkODcCUpyf3o6DkktAQSJqqLygeV"  // 软件的AppSecret
PJYSDK.card = "IWPSJKeEeMaHb7dXZVVSb42SLUUWIPAMBHaAWKLO"  // 卡密,应该让用户输入

// 登录前取到本地存的token 设置后调用退出登录 
Dim local_token = File.Read("/sdcard/temp_token")
TracePrint "本地token:"& local_token
Thread.SetShareVar("_token", local_token)
PJYSDK.CardLogout()

// 卡密登录
// 登录成功后将自动启动一个线程发送心跳包,细节无需关心
Dim login_ret = PJYSDK.CardLogin()

If login_ret["code"] = 0 Then
    ShowMessage "登录成功" 
    // 登录成功后拿到token 存到本地
    Dim token = Thread.GetShareVar("_token")
    TracePrint "新token:"&  token
    File.Write("/sdcard/temp_token", token)

    Thread.Start CheckStatus // 开新线程校验心跳,或者不开线程在你的代码里调用CheckStatus
Else 
    TracePrint login_ret["message"]
    ShowMessage login_ret["message"]
    ExitScript
End If

Sub CheckStatus()
    While True
        Dim ret = PJYSDK.GetHeartbeatResult()
  
        If ret["code"] = 10214 Then
            TracePrint ret["message"]
            ExitScript // 按键精灵打包后可能调用不成功,可以换成死循环弹窗解决
        End If

        If ret["code"] <> 0 Then // 检测到心跳失败
            TracePrint ret["message"]
            TracePrint "尝试重登" // 重登逻辑必须大于v1.13的插件才支持
            Delay 2000
            Dim login_ret = PJYSDK.CardLogin()
            TracePrint login_ret["code"], login_ret["message"]
            ShowMessage login_ret["message"]
            If login_ret["code"] <> 0 Then 
                // 重登失败结束运行
                Delay 2000
                ExitScript // 按键精灵打包后可能调用不成功,可以换成死循环弹窗解决
            End If
        End If
      
        If PJYSDK.GetTimeRemaining() <= 0 Then 
            TracePrint "卡密已过期"
            ShowMessage "卡密已过期"
            ExitScript // 按键精灵打包后可能调用不成功,可以换成死循环弹窗解决
        End If
      
        Delay 1000
    Wend
End Sub

// 脚本停止事件
Function OnScriptExit()
    // 自动调用退出登录
    PJYSDK.CardLogout()
End Function

// 后面就是你自己的脚本


1
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

# PC版示例:

将命令库解压放好后,打开按键精灵编辑器,在左侧点全部命令,点开我的命令库,就可以看到PJYSDK。
然后点击 CardLogin 查看帮助文档(有示例)。
1
2

注意

以下均为手机版命令库在线文档,PC版请参考离线帮助文档。

# 变量说明

# 初始化变量

  • PJYSDK.app_key : 软件的AppKey,开发者端软件管理页获取
  • PJYSDK.app_secret : 软件的AppSecret,开发者端软件管理页获取
  • PJYSDK.card : 卡密,只用账号密码登录的就不用初始化card
  • PJYSDK.username : 用户账号,只用卡密登录的就不用初始化username
  • PJYSDK.password : 用户密码,只用卡密登录的就不用初始化password
  • PJYSDK.device_id : 设备号,默认会自动获取,不建议修改。如果你有更好的一机一码的生成方案,可在初始化时修改该值
  • PJYSDK.retry_count : int型,请求失败重试次数,默认9次。调大重试次数和软件配置里的token有效期,有助于改善软件运行稳定性

# 可获取变量

注意

以下变量都为登录成功后才能取到值的。

  • PJYSDK.card_type : 卡密类型,例如:年卡
  • PJYSDK.expires : 过期时间,例如:2020-10-16 00:47:58
  • PJYSDK.expires_ts : 过期时间戳,例如:1602780478
  • PJYSDK.config : 卡密或用户配置,开发者可通过接口自定义的
  • PJYSDK.is_trial : 是否是试用登录

# 获取时间戳

# 语法

ret = PJYSDK.Timestamp2()
1

# 参数

# 返回值

数值型,例:1602780478

# 获取心跳结果

# 语法

ret = PJYSDK.GetHeartbeatResult()
1

# 参数

# 返回值

Table类型,例:{"code": 0, "message": "ok"}

# 获取剩余时长

# 语法

ret = PJYSDK.GetTimeRemaining()
1

# 参数

# 返回值

数值类型,剩余多少秒,例:1024

# 卡密登录

注意

调用此接口前需初始化 PJYSDK.card
登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
开发者只需在自己的脚本中通过调用 PJYSDK.GetHeartbeatResult() 获取心跳结果。

# 语法

ret = PJYSDK.CardLogin()
1

# 参数

# 返回值

Table类型,例:参考接口返回

# 卡密退出登录

# 语法

ret = PJYSDK.CardLogout()
1

# 参数

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 卡密解绑设备

说明

请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。
该接口只能在卡密登录后调用。更多说明

# 语法

ret = PJYSDK.CardUnbindDevice()
1

# 参数

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 卡密设置解绑密码

说明

请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。
该密码用于绑定设备丢失或者其它原因导致无法在老设备登录时解绑设备。

# 语法

ret = PJYSDK.SetCardUnbindPassword(password)
1

# 参数

参数名 必传 类型 参数说明
password string 解绑密码,6-10位

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 卡密通过密码解绑设备

说明

请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。
该接口用于绑定设备丢失或者其它原因导致无法在老设备登录时,通过解绑密码解绑设备。

# 语法

ret = PJYSDK.CardUnbindDeviceByPassword(password)
1

# 参数

参数名 必传 类型 参数说明
password string 解绑密码,6-10位

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 卡密充值(以卡充卡)

# 语法

ret = PJYSDK.CardRecharge(card, use_card)
1

# 参数

参数名 必传 类型 参数说明
card string 被充值的卡密(长度不超过45位)
use_card string 充值使用的卡密(长度不超过45位)

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 用户注册(通过卡密)

# 语法

ret = PJYSDK.UserRegister(username, password, card)
1

# 参数

参数名 必传 类型 参数说明
username string 用户名(长度不能超过20位)
password string 用户密码(长度6-30位)
card string 注册使用的卡密(长度不超过45位)

# 返回值

Table类型,例:{"code": 0, "message": "ok"}

# 用户登录

注意

调用此接口前需初始化 PJYSDK.username 和 PJYSDK.password
登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
开发者只需在自己的脚本中通过调用 PJYSDK.GetHeartbeatResult() 获取心跳结果。

# 语法

ret = PJYSDK.UserLogin()
1

# 参数

# 返回值

Table类型,例:参考接口返回

# 用户退出登录

# 语法

ret = PJYSDK.UserLogout()
1

# 参数

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 用户修改密码

# 语法

ret = PJYSDK.UserChangePassword(username, password, new_password)
1

# 参数

参数名 必传 类型 参数说明
username string 用户名(长度不能超过20位)
password string 当前密码(长度6-30位)
new_password string 新密码(长度6-30位)

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 用户充值(通过卡密)

# 语法

ret = PJYSDK.UserRecharge(username, card)
1

# 参数

参数名 必传 类型 参数说明
username string 用户名(长度不能超过20位)
card string 充值使用的卡密(长度不超过45位)

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 用户解绑设备

注意

只能在用户登录后调用。更多说明

# 语法

ret = PJYSDK.UserUnbindDevice()
1

# 参数

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 试用登录

注意

登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
开发者只需在自己的脚本中通过调用 PJYSDK.GetHeartbeatResult() 获取心跳结果。

# 语法

ret = PJYSDK.TrialLogin()
1

# 参数

# 返回值

Table类型,例:参考接口返回

# 试用退出登录

# 语法

ret = PJYSDK.TrialLogout()
1

# 参数

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 获取卡密配置

# 语法

ret = PJYSDK.GetCardConfig()
1

# 参数

# 返回值

Table类型,例:参考接口返回

# 更改卡密配置

# 语法

ret = PJYSDK.UpdateCardConfig(config)
1

# 参数

参数名 必传 类型 参数说明
config string 自定义配置(长度不能超过512位)

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 获取用户配置

# 语法

ret = PJYSDK.GetUserConfig()
1

# 参数

# 返回值

Table类型,例:参考接口返回

# 更改用户配置

# 语法

ret = PJYSDK.UpdateUserConfig(config)
1

# 参数

参数名 必传 类型 参数说明
config string 自定义配置(长度不能超过512位)

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 获取软件配置

# 语法

ret = PJYSDK.GetSoftwareConfig()
1

# 参数

# 返回值

Table类型,例:参考接口返回

# 获取软件公告

# 语法

ret = PJYSDK.GetSoftwareNotice()
1

# 参数

# 返回值

Table类型,例:参考接口返回

# 获取软件最新版本

# 语法

ret = PJYSDK.GetSoftwareLatestVersion(current_ver)
1

# 参数

参数名 必传 类型 参数说明
current_ver string 当前本地的版本(长度不能超过30位)

# 返回值

Table类型,例:参考接口返回

# 获取远程变量

# 语法

ret = PJYSDK.GetRemoteVar(key)
1

# 参数

参数名 必传 类型 参数说明
key string 远程变量名(长度不能超过64位)

# 返回值

Table类型,例:参考接口返回

# 获取远程数据

# 语法

ret = PJYSDK.GetRemoteData(key)
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据key(长度不能超过64位)

# 返回值

Table类型,例:参考接口返回

# 操作远程数据

# 新增远程数据

# 语法

ret = PJYSDK.CreateRemoteData(key, value)
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据key(长度不能超过64位)
value string 远程数据值(长度不能超过256位)

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 修改远程数据

# 语法

ret = PJYSDK.UpdateRemoteData(key, value)
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据key(长度不能超过64位)
value string 远程数据值(长度不能超过256位)

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 删除远程数据

# 语法

ret = PJYSDK.DeleteRemoteData(key)
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据key(长度不能超过64位)

# 返回值

Table类型,例:{"code": 0, "message": "OK"}

# 调用远程函数

# 语法

ret = PJYSDK.CallRemoteFunc(func_name, params)
1

# 示例

远程函数为

function add(a, b) {
  return a + b;
}
1
2
3

脚本中调用

Dim ret = PJYSDK.CallRemoteFunc("add", Array(1, 2))
If ret["code"] = 0 Then
    TracePrint ret["result"]["return"]
Else
    TracePrint ret["code"], ret["message"]
End If
1
2
3
4
5
6

# 参数

参数名 必传 类型 参数说明
func_name string 远程函数名(长度不能超过64位)
params array 参数列表,例:Array(1, 2)

# 返回值

Table类型,例:{"code": 0, "message": "OK", "result": {"return": 3}}