# Xscript 快速接入

泡椒云网络验证提供了官方的 Xscript 模块,方便 xs 开发者接入。

# 接入须知

# 获取方式

下载地址:https://paojiaoyun.lanzoui.com/b015bkd8j
或者加群1018871394在群文件下载模块,有问题也可在此群交流。

# 使用方式

com.paojiaoyun.api-1.0x.xmm文件解压放入到你的xs项目的lib目录下。
然后在脚本中通过 pjysdk = require("com.paojiaoyun.api") 引入。
压缩包中的main.lua是一个示例。

一个示例:

pjysdk = require("com.paojiaoyun.api")

-- 初始化sdk 参数为 app_key 和 app_secret
pjysdk.init("bnsekoso6itblafodqe6", "m3p0lkODcCUpyf3o6DkktAQSJqqLygeV")
pjysdk.debug = true -- 开发过程中建议开启debug模式,会打印每次请求的详细信息

-- 心跳失败回调
pjysdk.onHeartbeatFailed(function(ret)
   toast(ret.message)
   logcat(ret.message)
   xscript.stop()
end)

ui.newLayout("maindialog")
ui.newRow("row0")
ui.addEditText("card", "请输入卡密", ui.MATCH_PARENT, ui.WRAP_CONTENT)

-- 加载上次的配置文件
ui.loadProfile()

ui.setTitleText("maindialog", "泡椒云网络验证Demo")
ui.show("maindialog")

-- ui内容刷新
ui.updateResult()
-- 保存配置文件
ui.saveProfile()
-- 获取用户输入的卡密
local card = ui.getResult("card")

-- 设置卡密
pjysdk.setCard(string.trim(card))
-- 卡密登录
local ret = pjysdk.CardLogin()
if ret.code ~= 0 then -- 如果登录失败
   toast(ret.message)
   xscript.stop()  
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(2000)
   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
49
50

# 可更改变量

  • pjysdk.debug : bool型,默认为true,开启后会在控制台输出每次请求的详细信息,方便调试
  • pjysdk._device_id : string型,设备号默认会自动获取,不建议修改。如果你有更好的一机一码的生成方案,可在初始化后修改该值

# 可获取变量

注意

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

  • 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}}