【XScript】百宝云注册码系统接入教程
下载附件,复制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.91shenfan.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
复制代码
调用封装好的方法:获取注册码的剩余时间()
这个方法是用来获取注册码的剩余时间的,只要注册码在正常使用中,就能获取到正确的剩余时间,如果注册码到期、冻结等等,那么都会返回对应的错误信息,可以参数具体代码。
- -- 获取到注册码的剩余使用时间。
- 获取注册码的剩余时间()
复制代码
OK。 通过这4步,就可以把Web注册码系统接入到自己的项目里了。 是不是超简单方便??(真方便)
特色功能介绍
调用封装好的方法:获取自定义键值数据()
这个是用来获取作者在后台设置的自定义数据,后台采用的是key-value模式的,同时注意:一个项目里,相同的key只能有一个,不存在多个!
这个自定义键值内容可以是:字库信息、某个特殊任务的色偏或者某个数据的内存基址等等,而且这个内容只有在注册码登录成功的情况下才能获取,非登录状态获取不到正确的内容,这样以来,我们就可以用这个接口来做防Po Jie的功能。 因此,在实际的项目里,大力推荐作者使用此接口。
- local data = 获取自定义键值数据("key1")
- logcat(data)
复制代码
通过调用接口:发送监控消息() ,我们可以通过客户端向服务器发送一条指定规则的监控内容。 比如:软件出现异常,需要使用者重开软件,我们就发送一条规则为:手机短信,内容为:请重开软件的消息。 又比如:作者在开发过程中,有一些未知错误信息需要收集的,也可以通过这个接口,把错误信息发送到服务器。
通过调用接口:设置注册码备注() ,我们可以通过客户端设置注册码的备注内容。 通过调用接口:获取注册码备注() ,我们可以通过客户端获取注册码的备注内容。 这2个接口只有在注册码登录成功的情况下,才能正常的使用,其他非登录成功的情况下调用此接口,都会调用失败。
特殊功能更多的介绍,请参考视频教程。
百宝云注册码系统 - 特色功能介绍: http://bbs.91shenfan.com/thread-287-1-1.html
Xscript示例代码下载
XScript接入注册码系统示例.zip
(3.37 KB, 下载次数: 787)
|