# 懒人精灵 快速接入

泡椒云网络验证官方提供的懒人精灵插件,方便懒人精灵开发者接入。

# 接入须知

# 获取方式

下载地址:https://paojiaoyun.lanzouq.com/b0178i95e 密码:awep
或者加群1018871394在群文件下载插件,有问题也可在此群交流。

# 使用方式

PJYSDK.luae文件解压出来,然后右键点击你的懒人精灵项目的插件目录》添加已有项》找到解压目录选择PJYSDK.luae
然后在脚本中通过 pjysdk = require("PJYSDK") 引入。
压缩包中的main.lua是一个示例。

一个示例:

pjysdk = require("PJYSDK")

-- 初始化sdk AppKey 和 AppSecret 在泡椒云开发者后台获取
pjysdk.init("AppKey", "AppSecret")
pjysdk.debug = true -- 开发过程中建议开启debug模式,会打印每次请求的详细信息

-- 注意安卓8以上可能获取不到设备ID
-- 如果你需要绑定设备,建议通过 pjysdk.randomString(20) 生成一个存本地文件
-- 然后每次从文件读取你生成的 设备ID 来初始化 pjysdk._device_id
-- pjysdk._device_id = "你生成的设备ID"

-- 心跳失败回调
pjysdk.onHeartbeatFailed(function(ret)
    if ret.code ~= 10214 then
        local login_ret = pjysdk.CardLogin()
        if login_ret.code ~= 0 then -- 如果重登失败
            toast(ret.message)
            setTimer(exitScript,10) -- 退出脚本
        else
            toast("重登成功")
        end
    else
        toast(ret.message)
        print(ret.message)
        setTimer(exitScript,10) -- 退出脚本
    end
end)

-- 设置卡密
pjysdk.setCard("卡密")
-- 卡密登录
local ret = pjysdk.CardLogin()
if ret.code ~= 0 then -- 如果登录失败
    toast(ret.message)
    setTimer(exitScript,10) -- 退出脚本
end

toast("登录成功")
local lret = pjysdk.login_result  -- 登录成功后获取登录结果
toast(string.format("卡类:%s\n过期时间:%s\n过期时间戳:%d\n卡密配置:%s\n是否是试用:%s", 
 lret.card_type, lret.expires, lret.expires_ts, lret.config, pjysdk.is_trial)
)

-- 测试用,hold住主线程不要退出,记得删除,后面应该是你的代码了
while true do
    sleep(1000)
    toast("剩余时间:"..tostring(pjysdk.GetTimeRemaining()).."秒")
end
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

# 可更改变量

  • pjysdk.debug : bool型,默认为true,开启后会在控制台输出每次请求的详细信息,方便调试
  • pjysdk._device_id : string型,设备号默认会自动获取,不建议修改。如果你有更好的一机一码的生成方案,可在初始化后修改该值
  • pjysdk._auto_heartbeat : bool型,是否自动开启心跳,默认true,不建议修改。
  • pjysdk._token : string型,登录成功返回的token。对于退出软件未调用退出登录,返回多开上限的情况,可以在登录成功后本地存下来,下次登录前先设置token调用退出登录
  • pjysdk._retry_count : int型,请求失败重试次数,默认10次。调大重试次数和软件配置里的token有效期,有助于改善软件运行稳定性

# 可获取变量

注意

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

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

# 初始化

# 初始化SDK

# 语法

pjysdk.init(app_key, app_secret)
1

# 参数

参数名 必传 类型 参数说明
app_key string 软件的app_key,开发者后台获取
app_secret string 软件的app_secret,开发者后台获取

# 初始化卡密

# 语法

pjysdk.setCard(card)
1

# 参数

参数名 必传 类型 参数说明
card string 用户填写的卡密(长度不超过45位)

# 初始化用户账号

# 语法

pjysdk.setUser(username, password)
1

# 参数

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

# 获取时间戳(网络时间)

# 语法

local ts = pjysdk.getTimestamp()
1

# 参数

# 返回值

数字类型,例:1602780478

# 获取心跳结果

# 语法

local ret = pjysdk.GetHeartbeatResult()
1

# 参数

# 返回值

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

# 获取剩余时长

# 语法

local ret = pjysdk.GetTimeRemaining()
1

# 参数

# 返回值

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

# 卡密登录

注意

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

# 语法

local ret = pjysdk.CardLogin()
1

# 参数

# 返回值

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

# 卡密退出登录

# 语法

local ret = pjysdk.CardLogout()
1

# 参数

# 返回值

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

# 卡密解绑设备

说明

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

# 语法

local ret = pjysdk.CardUnbindDevice()
1

# 参数

# 返回值

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

# 卡密设置解绑密码

说明

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

# 语法

local ret = pjysdk.setCardUnbindPassword(password)
1

# 参数

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

# 返回值

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

# 卡密通过密码解绑设备

说明

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

# 语法

local ret = pjysdk.CardUnbindDeviceByPassword(password)
1

# 参数

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

# 返回值

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

# 卡密充值(以卡充卡)

# 语法

local ret = pjysdk.CardRecharge(card, use_card)
1

# 参数

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

# 返回值

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

# 用户注册(通过卡密)

# 语法

local ret = pjysdk.UserRegister(username, password, card)
1

# 参数

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

# 返回值

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

# 用户登录

注意

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

# 语法

local ret = pjysdk.UserLogin()
1

# 参数

# 返回值

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

# 用户退出登录

# 语法

local ret = pjysdk.UserLogout()
1

# 参数

# 返回值

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

# 用户修改密码

# 语法

local 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"}

# 用户充值(通过卡密)

# 语法

local ret = pjysdk.UserRecharge(username, card)
1

# 参数

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

# 返回值

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

# 用户解绑设备

注意

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

# 语法

local ret = pjysdk.UserUnbindDevice()
1

# 参数

# 返回值

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

# 试用登录

注意

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

# 语法

local ret = pjysdk.TrialLogin()
1

# 参数

# 返回值

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

# 试用退出登录

# 语法

local ret = pjysdk.TrialLogout()
1

# 参数

# 返回值

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

# 获取卡密配置

# 语法

local ret = pjysdk.GetCardConfig()
1

# 参数

# 返回值

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

# 更改卡密配置

# 语法

local ret = pjysdk.UpdateCardConfig(config)
1

# 参数

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

# 返回值

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

# 获取用户配置

# 语法

local ret = pjysdk.GetUserConfig()
1

# 参数

# 返回值

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

# 更改用户配置

# 语法

local ret = pjysdk.UpdateUserConfig(config)
1

# 参数

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

# 返回值

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

# 获取软件配置

# 语法

local ret = pjysdk.GetSoftwareConfig()
1

# 参数

# 返回值

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

# 获取软件公告

# 语法

local ret = pjysdk.GetSoftwareNotice()
1

# 参数

# 返回值

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

# 获取软件最新版本

# 语法

local ret = pjysdk.GetSoftwareLatestVersion(current_ver)
1

# 参数

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

# 返回值

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

# 获取远程变量

# 语法

local ret = pjysdk.GetRemoteVar(key)
1

# 参数

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

# 返回值

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

# 获取远程数据

# 语法

local ret = pjysdk.GetRemoteData(key)
1

# 参数

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

# 返回值

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

# 操作远程数据

# 新增远程数据

# 语法

local ret = pjysdk.CreateRemoteData(key, value)
1

# 参数

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

# 返回值

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

# 修改远程数据

# 语法

local ret = pjysdk.UpdateRemoteData(key, value)
1

# 参数

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

# 返回值

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

# 删除远程数据

# 语法

local ret = pjysdk.DeleteRemoteData(key)
1

# 参数

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

# 返回值

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

# 调用远程函数

# 语法

local ret = pjysdk.CallRemoteFunc(func_name, params)
1

# 示例

远程函数为

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

脚本中调用

local ret = pjysdk.CallRemoteFunc("add", {1, 2})
if (ret.code == 0) then
  logcat(ret.result["return"])
else
  logcat(ret.message)
end
1
2
3
4
5
6

# 参数

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

# 返回值

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