玄月授权接口文档

1.为什么选择Websocket协议呢

  1. ws协议能有更好的跨域和墙的穿透能力
  2. 可以在没有防火墙的情况下在应用层比http协议 防CC攻击效果更加好 (ps:很多IP代理 只能代理HTTP协议)
  3. 在高并发的场景下ws协议比HTTP协议 性能更好 查询数据库次数更少 (ws的头部 比http的头部更加精简)
  4. ws协议可以在服务器端做更多的判断用来判断客户端的合法性 (http如果本地被干掉了心跳包 那就失去了对客户端的控制)
  5. ws协议比HTTP协议 有更好的实时性 ,可以随时服务器向客户端推送数据
  6. 在相同的服务器配置下,WebSocket 协议通常比 HTTP 协议 能承受更高的并发连接
  7. 交互速度更快,响应速度更快

2. 玄月验证接口使用说明

使用websoket协议连接服务器 ,发送规定的json加密数据 来与服务器进行交互,

因群主服务器的原因 国内可能存在部分地区屏蔽情况 ,可采用转发的方式 使用自己的服务器进行转发

3. WebSocket接口

群主测试服务器连接地址 : ws://v1.msplock.vip:8810/api/user/ws?ExeID=xxx&DevID=xxxx

如果你购买了服务器后台 请填写自己的服务器后台地址: 如ws://xxxxxx:8810/api/user/ws?ExeID=xxx&DevID=xxxx 支持IPv6

通信封包加密规则:

接口通讯密钥(服务器自动下发)

提交数据加密:所有提交的数据发送:需通过RC4加密 才能与服务器通信

返回数据解密:所有返回的数据发送:需要通过RC4解密

服务器下发的数据均为 base64编码

注意: 连接服务器,服务器会自动下发接口加密的通讯密钥,需要使用 <<作者密钥>> 解密出接口的通讯密钥,之后使用新密钥进行加解密操作

需要将json 字符串进行utf-8 编码 在进行RC4加密 base64编码发送

可参考Python 源码进行制作其他语言的SDK


 

断线重连机制:

为防止服务器更新或重启情况下 有大量连接请求(类似与ddos攻击) 造成服务器短时间资源带宽紧张

推荐 程序等待30-60秒 时间,在进行断线重连操作 易SDK ✔ GoSDK ✔ PythonSDK ✔


 

3.1 连接地址说明

群主测试服务器连接地址 ws://v1.msplock.vip:8810/api/user/ws?ExeID=xxx&DevID=xxxx

名称类型注释
ExeID文本型软件ID
DeviceID文本型设备ID
3.2 获取软件基本信息

var json = { "Type": "GetExeInfo" }

3.3 获取验证码

var json = { "Type": "GetCode" }

3.4 用户注册

var json = { "Type": "Register", "Data": { "Name": Name, "Pwd": Pwd, "Code": Code } }

名称类型注释
Name文本型用户名
Pwd文本型密码
Code文本型验证码
3.5 用户登录

var json = {"Type":"Login","Data":{"Name":Name,"Pwd":Pwd}}

名称类型注释
Name文本型用户名
Pwd文本型密码
3.6 卡密登录

var json = {"Type":"CarLogin","Data":{"Serial":Serial}}

名称类型注释
Serial文本型卡密
3.7 卡密充值

var json = {"Type":"UserPay","Data":{"Name":Name,"Serial":Serial}}

名称类型注释
Name文本型用户名
Serial文本型卡密
3.8 修改密码

提交数据::{"Type":"UpUserPwd","Data":{"Name":Name,"OldPwd":OldPwd,"NewPwd":NewPwd}}

名称类型注释
Name文本型用户名
OldPwd文本型旧密码
NewPwd文本型新密码
3.9 换绑

换绑成功 扣除用户到期时间

var json = {"Type":"BindDeviceID","Data":{"Name":Name,"Pwd":Pwd}}

名称类型注释
Name文本型用户名/卡密
Pwd文本型密码/卡密
3.10 加入设备黑名单

将用户状态 修改为禁用 并把设备加入黑名单中

var json = {"Type":"AddBlack","Data":{"Bak":Bak}}

名称类型注释
Bak文本型情况说明
3.11 获取用户信息

var json = {"Type":"GetUserInfo"}

3.12 设置用户配置信息

用于用户新设备下载配置文件

提交数据::{"Type":"SetUerConf","Data":{"Conf":Conf}}

名称类型注释
Conf文本型用户配置信息 如:用户头像/按键设置等
3.13 获取核心加密数据

var json = {"Type":"GetExeData"}

3.14 获取远程加密变量

var json ={"Type":"GetVariable","Data":{"Key":Key}}

名称类型注释
Key文本型键名称
3.16 支付_查询卡密

判断仓库里是否有对应类型的卡密 返回卡ID

var json ={"Type":"FindCarInfo","Data":{"CarType":CarType}}

名称类型注释
CarType整数型0=小时卡 1=天卡 2=周卡 3=月卡 4=季卡 5=半年卡 6=年卡 7=永久卡
3.17 支付_创建支付订单

创建支付宝订单 返回base64 图片二维码

var json ={"Type":"AliPayCreate","Data":{"CarID":CarID}}

名称类型注释
CarID文本型卡ID 由支付_查询卡密 获得
3.18 支付_是否到账
方式一:

var json ={"Type":"IsPay","Data":{"CarID":CarID}}

名称类型注释
CarID文本型卡密ID
方式二:

事件处理里 进行对消息 CompletePayment的监听,并处理业务逻辑

返回卡密信息

3.19 支付_提卡

返回卡密信息

var json ={"Type":"PutCar","Data":{"BuillID":BuillID}}

名称类型注释
BuillID文本型支付宝订单号
3.20 主动心跳

必须在5分钟之内执行一次 // 后台设置了读取超时(5分钟) 超过时间服务器自动断开连接

var json ={"Type":"Ping","Data":{"Token":Token,"Key":key}}

名称类型注释
Token文本型(可空)加密数据
Key文本型(可空)加密密钥

token 组成

名称类型注释
ExeID文本型(可空)软件ID
DevID文本型(可空)设备ID
AdminID文本型(可空)作者密钥
Version文本型(可空)版本
ExeMD5文本型(可空)软件md5
CRCOld文本型(可空)CRC初始
CRCNew文本型(可空)CRC新
Time文本型(可空)时间戳
3.21 下线通知

服务器自动推送 tag=OffLine 在接受事件里自己处理(程序退出)

3.22 实时消息

服务器自动推送 tag=SendMsg 在接受事件里自己处理(程序展示实时消息)

3.23 扫码登陆

var json ={"Type":"QuickLogin"}

3.24 VMP授权下发

var json={"Type":"VMPAuth","Data":{"HardwareId":HardwareId}}

名称类型注释
HardwareId文本型(可空)设备ID

4.HTTP网页接口

4.1 GetCode 获取验证码-POST

/api/user/GetCode?DevKey=XXXXXX

名称类型注释
DevKey文本型校验码
4.2 GetExeInfo 获取软件信息-POST

/api/user/GetExeInfo?DevKey=XXXXXX

名称类型注释
DevKey文本型校验码
4.3 UserPay 用户充值-POST

/api/user/UserPay

名称类型注释
ExeID文本型软件ID
Name文本型用户名
Serial文本型卡密
4.4 UpUserPwd 更新用户密码-POST

/api/user/UpUserPwd

名称类型注释
ExeID文本型软件ID
Name文本型用户名
OldPwd文本型旧密码
NewPwd文本型新密码
4.5 BindDeviceID 解绑-POST

/api/user/BindDeviceID

名称类型注释
ExeID文本型软件ID
Name文本型用户名
Pwd文本型密码
4.6 CarLogin 卡密登录-POST

/api/user/CarLogin?DevKey=XXXXXX

名称类型注释
Serial文本型卡密
4.7 Login 账号登录-POST

/api/user/Login?DevKey=XXXXXX

名称类型注释
Name文本型用户名
Pwd文本型密码
4.8 Register 用户注册-POST

/api/user/Register

名称类型注释
ExeID文本型软件ID
Name文本型用户名
Pwd文本型密码
Code文本型验证码
DevKey文本型检验码
4.9 FindCarInfo 获取卡密信息-POST

/api/user/FindCarInfo?DevKey=XXXXXX

名称类型注释
ExeID文本型软件ID
TyCar整数型0-7 (0=小时卡 1=天卡 2=周卡 3=月卡 4=季卡 5=半年卡 6=年卡 7=永久卡)
4.10 AliPayCreate 创建订单-POST

/api/user/AliPayCreate

名称类型注释
ExeID文本型软件ID
CarID文本型从卡密信息获取到的ID
4.11 PutCar 提卡-POST

/api/user/PutCar

名称类型注释
ExeID文本型软件ID
BuillID文本型账单信息
4.12 IsPay 是否支付成功-POST
名称类型注释
CarID文本型从卡密信息获取到的ID
4.13 GetUserEndTime 获取用户到期时间-POST
名称类型注释
ExeID文本型软件ID
Name文本型用户名或卡密