百宝云论坛

 找回密码
 立即注册
查看: 4784|回复: 1

【XScript】百宝云注册码系统接入教程

[复制链接]

96

主题

220

帖子

1379

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1379
发表于 2016-9-8 19:07:22 | 显示全部楼层 |阅读模式
【XScript】百宝云注册码系统接入教程



准备工作

下载附件,复制main方法之前的代码,或者是直接复制下面的代码到项目里。代码如下:
  1. --------------------------------------------------
  2. -- 脚本名称: 我的软件Xs
  3. -- 脚本描述: Xs版本的注册码系统V2接入示例
  4. --------------------------------------------------

  5. 全局_注册码数据 = ""   -- 记录注册码的数据
  6. 全局_访问令牌=""       -- 记录软件的访问令牌,此数据由服务器返回
  7. 全局_项目名称 = ""     -- 记录项目的名称
  8. 全局_云应用Token = ""  -- 记录访问云应用的token数据
  9. 全局_验证次数 = 1
  10. 全局_错误信息 = ""     -- 记录错误信息
  11. 全局_机器编码 = 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)
  12. 全局_上次验证时间 = 0
  13. 全局_注册码剩余时间 = -1   -- 记录注册码的剩余时间
  14. 全局_软件版本号 = ""  -- 记录软件的版本号,用于自动更新
  15. -----------------------------------------------
  16. function decodeURI(s)
  17.         s = string.gsub(s, '%%(%x%x)', function(h) return string.char(tonumber(h, 16)) end)
  18.         return s
  19. end
  20. function encodeURI(s)
  21.         s = string.gsub(s, "([^%w%.%- ])", function(c) return string.format("%%%02X", string.byte(c)) end)
  22.         return string.gsub(s, " ", "+")
  23. end

  24. function 数据初始化(name, token, regcode, ver)
  25.         if 全局_项目名称 == "" then
  26.                 全局_项目名称 = name
  27.         end
  28.         
  29.         if 全局_云应用Token == "" then
  30.                 全局_云应用Token = token
  31.         end
  32.         
  33.         if 全局_注册码数据 == "" then
  34.                 全局_注册码数据 = regcode
  35.         end
  36.         
  37.         if 全局_软件版本号 == "" then
  38.                 全局_软件版本号 = ver
  39.         end
  40. end

  41. -- 通信接口
  42. function connectBBY(arg)
  43.         Json字符串 = json.encode(arg)
  44.         logcat ("Json字符串:" .. Json字符串)
  45.         Json字符串 = encodeURI(Json字符串)
  46.         params = "token=" .. 全局_云应用Token .. "&funparams=" .. Json字符串
  47.         strUrl = "http://get.baibaoyun.com/cloudapi/cloudappapi"
  48.         strGet= strUrl .. "?" .. params
  49.         返回值, state = net.get(strGet)
  50.         logcat(返回值)
  51.         
  52.         if state == 200 then
  53.                 全局_错误信息 = ""
  54.                 return 返回值
  55.         end
  56.         
  57.         for i = 1 , 5 do
  58.                 返回值, state = net.get(strGet)
  59.                 logcat(返回值)
  60.                 if state == 200 then
  61.                         全局_错误信息 = ""
  62.                         return 返回值
  63.                 end
  64.                
  65.                 sleep(1000)
  66.         end
  67.         全局_错误信息 = 返回值
  68.         return 返回值
  69. end

  70. -- 获取注册码的剩余时间
  71. function 获取注册码的剩余时间()
  72.         if 全局_上次验证时间 == 0 then
  73.                 全局_上次验证时间 = os.time()
  74.         end
  75.         
  76.         local 间隔s = os.difftime(os.time(), 全局_上次验证时间)
  77.         if 全局_注册码剩余时间 <=0  and 间隔s > 180 then
  78.                 local command2 = {flag="查询注册码时间",机器码=全局_机器编码,注册码=全局_注册码数据,访问令牌=全局_访问令牌, 项目名称 = 全局_项目名称}</span>
复制代码
复制好代码之后,我们继续来学习接口的使用。

首先,我们来看看示例里的代码接入步骤,之后来讲解示例里的代码步骤。
  1. -- 脚本入口
  2. function main()
  3.         -- 软件执行的第一时间调用这个方法,用来初始化重要数据
  4.         数据初始化("test","728879a0c89c6b7b96f5609e0c19e603","28FE5FF74E97EC05BA5F223720551EEF","2.0.0.0")
  5.         
  6.         toast("current ver:".. 全局_软件版本号)
  7.         -- 检查软件是否需要更新
  8.         检查更新()
  9.         
  10.         -- 进行注册码的登录验证
  11.         if 验证注册码() == false then
  12.                 toast("注册码登录失败,原因:"..全局_错误信息)
  13.                 xscript.stop()
  14.         else
  15.                 -- 开启定时器进行注册码的时间验证操作。
  16.                 --setTrigger.timeLoop("180000", "获取注册码的剩余时间")
  17.                 setTrigger.timeLoop(1000, "获取注册码的剩余时间()")
  18.         end
  19.         
  20.         local data = 获取自定义键值数据("key1")
  21.         logcat(data)
  22.         
  23.         获取注册码的剩余时间()
  24.         
  25.         设置注册码备注("偶也~~~~")
  26.         local bz = 获取注册码备注()
  27.         logcat("注册码备注:"..bz)
  28.         local gg = 获取项目公告()
  29.         logcat("项目公告:"..gg)
  30.         
  31.         for i = 1 , 100 do
  32.                 sleep(500)
  33.         end
  34. end
复制代码


第一步:初始化数据

调用封装好的方法:数据初始化()
调用这个方法的时候,需要传入项目名称、云应用token、注册码、版本号4个数据,机器码在初始化方法内部已经处理。推荐大家这样使用!
  1. -- 软件执行的第一时间调用这个方法,用来初始化重要数据
  2.         数据初始化("test","728879a0c89c6b7b96f5609e0c19e603","28FE5FF74E97EC05BA5F223720551EEF","2.0.0.0")
复制代码


第二步:检查软件是否需要更新

调用封装好的方法:检查更新()
通过初始化传入的版本号与服务器最新的版本号进行对比,如果服务器上的软件版本号比本地的版本号大,那么会执行更新操作。如果相等或者是小于本地版本号,那么不执行更新操作。
  1. toast("current ver:".. 全局_软件版本号)
  2.         -- 检查软件是否需要更新
  3.         检查更新()
复制代码


第三步:使用注册码登录软件

调用封装好的方法:验证注册码()
调用这个方法,将执行注册码的登录操作,登录成功,会返回正确的数据,数据格式为:成功标记|注册码剩余时间|访问令牌; 如果登录失败,会返回错误信息。
在这个示例代码里,登录失败,软件会停止执行。
登录成功,会开启一个定时器来检测注册码的剩余时间。
  1. -- 进行注册码的登录验证
  2.         if 验证注册码() == false then
  3.                 toast("注册码登录失败,原因:"..全局_错误信息)
  4.                 xscript.stop()
  5.         else
  6.                 -- 开启定时器进行注册码的时间验证操作。
  7.                 --setTrigger.timeLoop("180000", "获取注册码的剩余时间")
  8.                 setTrigger.timeLoop(1000, "获取注册码的剩余时间()")
  9.         end
复制代码

第四步:检测注册码的剩余时间或者是状态

调用封装好的方法:获取注册码的剩余时间()
这个方法是用来获取注册码的剩余时间的,只要注册码在正常使用中,就能获取到正确的剩余时间,如果注册码到期、冻结等等,那么都会返回对应的错误信息,可以参数具体代码。
  1. -- 获取到注册码的剩余使用时间。
  2.         获取注册码的剩余时间()
复制代码


OK。 通过这4步,就可以把Web注册码系统接入到自己的项目里了。 是不是超简单方便??(真方便






特色功能介绍
自定义数据

调用封装好的方法:获取自定义键值数据()
这个是用来获取作者在后台设置的自定义数据,后台采用的是key-value模式的,同时注意:一个项目里,相同的key只能有一个,不存在多个!
这个自定义键值内容可以是:字库信息、某个特殊任务的色偏或者某个数据的内存基址等等,而且这个内容只有在注册码登录成功的情况下才能获取,非登录状态获取不到正确的内容,这样以来,我们就可以用这个接口来做防Po Jie的功能。
因此,在实际的项目里,大力推荐作者使用此接口。

  1. local data = 获取自定义键值数据("key1")
  2.         logcat(data)
复制代码


发送监控消息

通过调用接口:发送监控消息() ,我们可以通过客户端向服务器发送一条指定规则的监控内容。
比如:软件出现异常,需要使用者重开软件,我们就发送一条规则为:手机短信,内容为:请重开软件的消息。
又比如:作者在开发过程中,有一些未知错误信息需要收集的,也可以通过这个接口,把错误信息发送到服务器。



设置/获取注册码备注

通过调用接口:设置注册码备注() ,我们可以通过客户端设置注册码的备注内容。
通过调用接口:获取注册码备注() ,我们可以通过客户端获取注册码的备注内容。
2个接口只有在注册码登录成功的情况下,才能正常的使用,其他非登录成功的情况下调用此接口,都会调用失败。



特殊功能更多的介绍,请参考视频教程。
百宝云注册码系统 - 特色功能介绍:   http://bbs.baibaoyun.com/thread-287-1-1.html




Xscript示例代码下载
XScript接入注册码系统示例.zip (3.37 KB, 下载次数: 436)
回复

使用道具 举报

0

主题

2

帖子

10

积分

一级圣斗士

Rank: 1

积分
10
发表于 2017-5-6 15:55:21 | 显示全部楼层
有没有大神
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|百宝云论坛 ( 湘ICP备15007281号-2 )

GMT+8, 2018-4-22 11:11

Powered by bby! X3.4

© 2015-2018 baibaoyun

快速回复 返回顶部 返回列表