全代码解析怎么吧XScript项目接入到百宝云注册码系统中。
百宝云注册码系统提供了服务器和自动发卡,所以我们只需要介绍如何接入,服务器不需要作者操心
一、先安装百宝云注册码系统
http://www.baibaoyun.com/index.php?index/info&id=15
二、下载附件,复制main方法之前的代码,或者是直接复制下面的代码到项目里。代码如下:
--------------------------------------------------
-- 脚本名称: 我的软件Xs
-- 脚本描述: Xs版本的注册码系统V2接入示例
--------------------------------------------------
全局_注册码数据 = "" -- 记录注册码的数据
全局_访问令牌="" -- 记录软件的访问令牌,此数据由服务器返回
全局_项目名称 = "" -- 记录项目的名称
全局_云应用Token = "" -- 记录访问云应用的token数据
全局_验证次数 = 1
全局_错误信息 = "" -- 记录错误信息
全局_机器编码 = string.sub(string.gsub(security.md5(systeminfo.udid()),"%D",""),3,3)..string.sub(string.gsub(security.md5(systeminfo.udid()),"%D",""),10,10)..string.sub(string.gsub(security.md5(systeminfo.udid()),"%D",""),-1,-1)..string.sub(string.gsub(security.md5(systeminfo.udid()),"%D",""),-5,-5)..string.sub(string.gsub(security.md5(systeminfo.udid()),"%D",""),-9,-9)..string.sub(string.gsub(security.md5(systeminfo.udid()),"%D",""),-14,-14)
全局_上次验证时间 = 0
全局_注册码剩余时间 = -1 -- 记录注册码的剩余时间
全局_软件版本号 = "" -- 记录软件的版本号,用于自动更新
-----------------------------------------------
function decodeURI(s)
s = string.gsub(s, '%%(%x%x)', function(h) return string.char(tonumber(h, 16)) end)
return s
end
function encodeURI(s)
s = string.gsub(s, "([^%w%.%- ])", function(c) return string.format("%%%02X", string.byte(c)) end)
return string.gsub(s, " ", "+")
end
function 数据初始化(name, token, regcode, ver)
if 全局_项目名称 == "" then
全局_项目名称 = name
end
if 全局_云应用Token == "" then
全局_云应用Token = token
end
if 全局_注册码数据 == "" then
全局_注册码数据 = regcode
end
if 全局_软件版本号 == "" then
全局_软件版本号 = ver
end
end
-- 通信接口
function connectBBY(arg)
Json字符串 = json.encode(arg)
logcat ("Json字符串:" .. Json字符串)
Json字符串 = encodeURI(Json字符串)
params = "token=" .. 全局_云应用Token .. "&funparams=" .. Json字符串
strUrl = "http://get.baibaoyun.com/cloudapi/cloudappapi"
strGet= strUrl .. "?" .. params
返回值, state = net.get(strGet)
logcat(返回值)
if state == 200 then
全局_错误信息 = ""
return 返回值
end
for i = 1 , 5 do
返回值, state = net.get(strGet)
logcat(返回值)
if state == 200 then
全局_错误信息 = ""
return 返回值
end
sleep(1000)
end
全局_错误信息 = 返回值
return 返回值
end
-- 获取注册码的剩余时间
function 获取注册码的剩余时间()
if 全局_上次验证时间 == 0 then
全局_上次验证时间 = os.time()
end
local 间隔s = os.difftime(os.time(), 全局_上次验证时间)
if 全局_注册码剩余时间 <=0 and 间隔s > 180 then
local command2 = {flag="查询注册码时间",机器码=全局_机器编码,注册码=全局_注册码数据,访问令牌=全局_访问令牌, 项目名称 = 全局_项目名称}</span>
复制好代码之后,我们继续来学习接口的使用。
首先,我们来看看示例里的代码接入步骤,之后来讲解示例里的代码步骤
-- 脚本入口
function main()
-- 软件执行的第一时间调用这个方法,用来初始化重要数据
数据初始化("test","728879a0c89c6b7b96f5609e0c19e603","28FE5FF74E97EC05BA5F223720551EEF","2.0.0.0")
toast("current ver:".. 全局_软件版本号)
-- 检查软件是否需要更新
检查更新()
-- 进行注册码的登录验证
if 验证注册码() == false then
toast("注册码登录失败,原因:"..全局_错误信息)
xscript.stop()
else
-- 开启定时器进行注册码的时间验证操作。
--setTrigger.timeLoop("180000", "获取注册码的剩余时间")
setTrigger.timeLoop(1000, "获取注册码的剩余时间()")
end
local data = 获取自定义键值数据("key1")
logcat(data)
获取注册码的剩余时间()
设置注册码备注("偶也~~~~")
local bz = 获取注册码备注()
logcat("注册码备注:"..bz)
local gg = 获取项目公告()
logcat("项目公告:"..gg)
for i = 1 , 100 do
sleep(500)
end
end
第一步:初始化数据
调用封装好的方法:数据初始化()
调用这个方法的时候,需要传入项目名称、云应用token、注册码、版本号4个数据,机器码在初始化方法内部已经处理。推荐大家这样使用!
-- 软件执行的第一时间调用这个方法,用来初始化重要数据
数据初始化("test","728879a0c89c6b7b96f5609e0c19e603","28FE5FF74E97EC05BA5F223720551EEF","2.0.0.0")
第二步:检查软件是否需要更新
调用封装好的方法:检查更新()
通过初始化传入的版本号与服务器最新的版本号进行对比,如果服务器上的软件版本号比本地的版本号大,那么会执行更新操作。如果相等或者是小于本地版本号,那么不执行更新操作。
toast("current ver:".. 全局_软件版本号)
-- 检查软件是否需要更新
检查更新()
第三步:使用注册码登录软件
调用封装好的方法:验证注册码()
调用这个方法,将执行注册码的登录操作,登录成功,会返回正确的数据,数据格式为:成功标记|注册码剩余时间|访问令牌; 如果登录失败,会返回错误信息。
在这个示例代码里,登录失败,软件会停止执行。
登录成功,会开启一个定时器来检测注册码的剩余时间。
-- 进行注册码的登录验证
if 验证注册码() == false then
toast("注册码登录失败,原因:"..全局_错误信息)
xscript.stop()
else
-- 开启定时器进行注册码的时间验证操作。
--setTrigger.timeLoop("180000", "获取注册码的剩余时间")
setTrigger.timeLoop(1000, "获取注册码的剩余时间()")
end
第四步:检测注册码的剩余时间或者是状态
调用封装好的方法:获取注册码的剩余时间()
这个方法是用来获取注册码的剩余时间的,只要注册码在正常使用中,就能获取到正确的剩余时间,如果注册码到期、冻结等等,那么都会返回对应的错误信息,可以参数具体代码。
-- 获取到注册码的剩余使用时间。
获取注册码的剩余时间()