# uni-app 快速接入

泡椒云网络验证官方提供的 uni-app SDK(单文件 PJYSDK.js、零第三方依赖、内置纯 JS MD5),方便 uni-app 开发者接入。

# 接入须知

# 获取方式

  • 下载地址:请登录开发者后台,在首页「最新SDK」处下载
  • 压缩包内容:sdk/PJYSDK.js(SDK 本体)+ example/(示例工程,HBuilderX 直接打开运行)

# 适用平台

  • App(安卓/iOS):完整支持(主要使用场景)
  • H5:受浏览器跨域限制,需自行配置反向代理
  • 小程序:平台要求 https 且需配置域名白名单,泡椒云 API 走 http,基本不可用

# 接入方式

sdk/PJYSDK.js 复制到你的 uni-app 工程(如 common/ 目录),然后:

import PJYSDK from '@/common/PJYSDK.js';
1

# 调用形式

所有网络 API 均为 async 方法,用 await 调用,返回 {code, message, result} 对象:

  • code === 0 表示成功,result 为业务数据;
  • code === -1 表示连接服务器失败(重试耗尽);
  • code === -99 / -98 表示签名/nonce 校验失败(响应可能被劫持篡改);
  • 其余业务错误码见接入须知中的对照表,详细信息在 message

# 使用示例

import PJYSDK from '@/common/PJYSDK.js';

// 初始化sdk, appKey 和 appSecret 在泡椒云开发者后台获取
const pjysdk = new PJYSDK('AppKey', 'AppSecret');
pjysdk.debug = true;

// 心跳失败回调(触发后 SDK 已停止心跳,可在此重登或跳回登录页)
pjysdk.onHeartbeatFailed(ret => {
  console.log('心跳失败: ' + ret.code + ' ' + ret.message);
  if (ret.code === 10214) {
    // 登录状态已失效(被挤下线等),跳回登录页
  }
});

// 设备唯一ID默认自动获取并持久化,也可自行设置:
// pjysdk.SetDeviceID('自定义设备ID');
pjysdk.SetCard('卡密');

// 卡密登录,登录成功后自动开始心跳保活
const ret = await pjysdk.CardLogin();
if (ret.code !== 0) {
  console.log('登录失败: ' + ret.message);
  return;
}
console.log('登录成功,卡密类型: ' + pjysdk.login_result.card_type);
console.log('剩余时间(秒): ' + pjysdk.GetTimeRemaining());

// 页面/应用退出时停止心跳
// pjysdk.release();
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

# 可更改变量

  • pjysdk.debug : 默认为 true,开启后会在控制台输出每次请求的详细信息
  • pjysdk.SetDeviceID(deviceId) : 设备唯一 ID 默认自动获取(uni deviceId,取不到时随机生成)并持久化,一般无需设置;如有更好的一机一码方案可覆盖
  • pjysdk.SetAutoHeartbeat(enable) : 是否自动开启心跳,默认 true,不建议修改
  • pjysdk.SetRetryCount(count) : 请求失败重试次数,默认为 9 次,调大重试次数有助于提升稳定性

# 可获取变量

以下变量在登录成功后才有有效值:

  • pjysdk.login_result.card_type : 卡密类型,如 "年卡"
  • pjysdk.login_result.expires : 过期时间字符串,如 "2020-10-16 00:47:58"
  • pjysdk.login_result.expires_ts : 过期时间戳(秒)
  • pjysdk.login_result.config : 卡密或用户的自定义配置
  • pjysdk.is_trial : 是否为试用登录
  • pjysdk.GetTimeRemaining() : 剩余有效秒数,不发起网络请求
  • pjysdk.GetHeartbeatResult() : 最近一次心跳结果

# 初始化

# 初始化 SDK

const pjysdk = new PJYSDK(appKey, appSecret);
1
参数 必传 类型 说明
appKey string 软件的 app_key,开发者后台获取
appSecret string 软件的 app_secret,开发者后台获取

# 设置设备唯一 ID

pjysdk.SetDeviceID(deviceId);
1
参数 必传 类型 说明
deviceId string 用户设备唯一标识(长度不超过45位),默认自动获取并持久化

# 设置卡密

pjysdk.SetCard(card);
1
参数 必传 类型 说明
card string 用户填写的卡密(长度不超过45位)

# 设置用户账号

pjysdk.SetUser(username, password);
1
参数 必传 类型 说明
username string 用户名(长度不超过20位)
password string 用户密码(长度 6-30 位)

# 心跳

登录成功后 SDK 自动启动心跳,无需手动管理。

# 心跳失败回调

pjysdk.onHeartbeatFailed(ret => { ... });
1

心跳返回 code !== 0 时触发,触发后 SDK 已停止心跳任务,由回调决定重新登录或退出。未设置时默认只打印日志。常见的 code === 10214 表示登录状态已失效(超时未发心跳、被挤下线、后台冻结等),应引导用户重新登录。

# 获取心跳结果

const ret = pjysdk.GetHeartbeatResult();
1

ret.code === 0 表示心跳正常,否则 ret.message 包含错误信息。

# 获取剩余时长

const remaining = pjysdk.GetTimeRemaining();
1

返回剩余有效秒数,不发起网络请求。

# 卡密登录

调用前需先调用 SetCard。登录成功后自动启动心跳。

const ret = await pjysdk.CardLogin();
1

返回值ret.code === 0 表示成功,登录信息通过 pjysdk.login_result 读取;否则 ret.message 为错误信息。

# 卡密退出登录

const ret = await pjysdk.CardLogout();
1

退出登录会停止心跳。

# 卡密解绑设备

需在开发者后台配置软件允许解绑,且需在卡密登录后调用。

const ret = await pjysdk.CardUnbindDevice();
1

# 卡密设置解绑密码

需在开发者后台配置软件允许解绑。该密码用于设备丢失等情况解绑。需在卡密登录后调用。

const ret = await pjysdk.SetCardUnbindPassword(password);
1
参数 必传 类型 说明
password string 解绑密码,6-10位

# 卡密通过密码解绑设备

无需登录,调用前需先 SetCard

const ret = await pjysdk.CardUnbindDeviceByPassword(password);
1
参数 必传 类型 说明
password string 解绑密码,6-10位

# 卡密充值(以卡充卡)

const ret = await pjysdk.CardRecharge(card, useCard);
1
参数 必传 类型 说明
card string 被充值的卡密
useCard string 用于充值的卡密

# 用户注册(通过卡密)

const ret = await pjysdk.UserRegister(username, password, card);
1
参数 必传 类型 说明
username string 用户名(不超过20位)
password string 密码(6-30位)
card string 注册使用的卡密

# 用户登录

调用前需先调用 SetUser。登录成功自动心跳。

const ret = await pjysdk.UserLogin();
1

# 用户退出登录

const ret = await pjysdk.UserLogout();
1

# 用户修改密码

const ret = await pjysdk.UserChangePassword(username, password, newPassword);
1
参数 必传 类型 说明
username string 用户名
password string 当前密码
newPassword string 新密码(6-30位)

# 用户充值(通过卡密)

const ret = await pjysdk.UserRecharge(username, card);
1
参数 必传 类型 说明
username string 用户名
card string 充值卡密

# 用户解绑设备

需在用户登录后调用。

const ret = await pjysdk.UserUnbindDevice();
1

# 试用登录

登录成功自动心跳。

const ret = await pjysdk.TrialLogin();
1

# 试用退出登录

const ret = pjysdk.TrialLogout();
1

仅清除本地状态并停止心跳,无网络请求(同步方法,无需 await)。

# 获取卡密配置

const ret = await pjysdk.GetCardConfig();
1

成功时 ret.result.config 为配置内容。

# 更改卡密配置

const ret = await pjysdk.UpdateCardConfig(config);
1
参数 必传 类型 说明
config string 自定义配置(不超过512位)

# 获取用户配置

const ret = await pjysdk.GetUserConfig();
1

# 更改用户配置

const ret = await pjysdk.UpdateUserConfig(config);
1
参数 必传 类型 说明
config string 自定义配置(不超过512位)

# 获取软件配置

const ret = await pjysdk.GetSoftwareConfig();
1

# 获取软件公告

const ret = await pjysdk.GetSoftwareNotice();
1

成功时 ret.result.notice 为公告内容。

# 获取软件最新版本

const ret = await pjysdk.GetSoftwareLatestVersion(currentVer);
1
参数 必传 类型 说明
currentVer string 当前本地版本(不超过30位)

成功时 ret.result 包含 versiondownload_urlupdate_log

# 获取远程变量

const ret = await pjysdk.GetRemoteVar(key);
1
参数 必传 类型 说明
key string 远程变量名(不超过64位)

# 获取远程数据

const ret = await pjysdk.GetRemoteData(key);
1
参数 必传 类型 说明
key string 数据 key(不超过64位)

# 操作远程数据

# 新增远程数据

const ret = await pjysdk.CreateRemoteData(key, value);
1
参数 必传 类型 说明
key string 数据 key(不超过64位)
value string 数据值(不超过256位)

# 修改远程数据

const ret = await pjysdk.UpdateRemoteData(key, value);
1
参数 必传 类型 说明
key string 数据 key(不超过64位)
value string 数据值(不超过256位)

# 删除远程数据

const ret = await pjysdk.DeleteRemoteData(key);
1
参数 必传 类型 说明
key string 数据 key(不超过64位)

# 调用远程函数

const ret = await pjysdk.CallRemoteFunc(funcName, params);
1
参数 必传 类型 说明
funcName string 远程函数名(不超过64位)
params Array 参数列表,如 [1, 2]

示例 远程函数定义(JavaScript):

function add(a, b) {
  return a + b;
}
1
2
3

调用:

const ret = await pjysdk.CallRemoteFunc('add', [1, 2]);
if (ret.code === 0) {
  console.log('计算结果: ' + ret.result.return);
}
1
2
3
4

# 释放资源

pjysdk.release();
1

停止心跳定时器,页面/应用退出(或重新登录前)调用。


提示:所有网络 API 均返回 {code, message, result}code === 0 成功; -1 连接服务器失败;-99/-98 签名/nonce 校验失败。 其余返回码含义见接入须知中的对照表。