# 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';
# 调用形式
所有网络 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();
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);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| appKey | 是 | string | 软件的 app_key,开发者后台获取 |
| appSecret | 是 | string | 软件的 app_secret,开发者后台获取 |
# 设置设备唯一 ID
pjysdk.SetDeviceID(deviceId);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| deviceId | 否 | string | 用户设备唯一标识(长度不超过45位),默认自动获取并持久化 |
# 设置卡密
pjysdk.SetCard(card);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| card | 是 | string | 用户填写的卡密(长度不超过45位) |
# 设置用户账号
pjysdk.SetUser(username, password);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| username | 是 | string | 用户名(长度不超过20位) |
| password | 是 | string | 用户密码(长度 6-30 位) |
# 心跳
登录成功后 SDK 自动启动心跳,无需手动管理。
# 心跳失败回调
pjysdk.onHeartbeatFailed(ret => { ... });
心跳返回 code !== 0 时触发,触发后 SDK 已停止心跳任务,由回调决定重新登录或退出。未设置时默认只打印日志。常见的 code === 10214 表示登录状态已失效(超时未发心跳、被挤下线、后台冻结等),应引导用户重新登录。
# 获取心跳结果
const ret = pjysdk.GetHeartbeatResult();
ret.code === 0 表示心跳正常,否则 ret.message 包含错误信息。
# 获取剩余时长
const remaining = pjysdk.GetTimeRemaining();
返回剩余有效秒数,不发起网络请求。
# 卡密登录
调用前需先调用 SetCard。登录成功后自动启动心跳。
const ret = await pjysdk.CardLogin();
返回值:ret.code === 0 表示成功,登录信息通过 pjysdk.login_result 读取;否则 ret.message 为错误信息。
# 卡密退出登录
const ret = await pjysdk.CardLogout();
退出登录会停止心跳。
# 卡密解绑设备
需在开发者后台配置软件允许解绑,且需在卡密登录后调用。
const ret = await pjysdk.CardUnbindDevice();
# 卡密设置解绑密码
需在开发者后台配置软件允许解绑。该密码用于设备丢失等情况解绑。需在卡密登录后调用。
const ret = await pjysdk.SetCardUnbindPassword(password);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| password | 是 | string | 解绑密码,6-10位 |
# 卡密通过密码解绑设备
无需登录,调用前需先 SetCard。
const ret = await pjysdk.CardUnbindDeviceByPassword(password);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| password | 是 | string | 解绑密码,6-10位 |
# 卡密充值(以卡充卡)
const ret = await pjysdk.CardRecharge(card, useCard);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| card | 是 | string | 被充值的卡密 |
| useCard | 是 | string | 用于充值的卡密 |
# 用户注册(通过卡密)
const ret = await pjysdk.UserRegister(username, password, card);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| username | 是 | string | 用户名(不超过20位) |
| password | 是 | string | 密码(6-30位) |
| card | 是 | string | 注册使用的卡密 |
# 用户登录
调用前需先调用 SetUser。登录成功自动心跳。
const ret = await pjysdk.UserLogin();
# 用户退出登录
const ret = await pjysdk.UserLogout();
# 用户修改密码
const ret = await pjysdk.UserChangePassword(username, password, newPassword);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| username | 是 | string | 用户名 |
| password | 是 | string | 当前密码 |
| newPassword | 是 | string | 新密码(6-30位) |
# 用户充值(通过卡密)
const ret = await pjysdk.UserRecharge(username, card);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| username | 是 | string | 用户名 |
| card | 是 | string | 充值卡密 |
# 用户解绑设备
需在用户登录后调用。
const ret = await pjysdk.UserUnbindDevice();
# 试用登录
登录成功自动心跳。
const ret = await pjysdk.TrialLogin();
# 试用退出登录
const ret = pjysdk.TrialLogout();
仅清除本地状态并停止心跳,无网络请求(同步方法,无需 await)。
# 获取卡密配置
const ret = await pjysdk.GetCardConfig();
成功时 ret.result.config 为配置内容。
# 更改卡密配置
const ret = await pjysdk.UpdateCardConfig(config);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| config | 是 | string | 自定义配置(不超过512位) |
# 获取用户配置
const ret = await pjysdk.GetUserConfig();
# 更改用户配置
const ret = await pjysdk.UpdateUserConfig(config);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| config | 是 | string | 自定义配置(不超过512位) |
# 获取软件配置
const ret = await pjysdk.GetSoftwareConfig();
# 获取软件公告
const ret = await pjysdk.GetSoftwareNotice();
成功时 ret.result.notice 为公告内容。
# 获取软件最新版本
const ret = await pjysdk.GetSoftwareLatestVersion(currentVer);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| currentVer | 是 | string | 当前本地版本(不超过30位) |
成功时 ret.result 包含 version、download_url、update_log。
# 获取远程变量
const ret = await pjysdk.GetRemoteVar(key);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| key | 是 | string | 远程变量名(不超过64位) |
# 获取远程数据
const ret = await pjysdk.GetRemoteData(key);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| key | 是 | string | 数据 key(不超过64位) |
# 操作远程数据
# 新增远程数据
const ret = await pjysdk.CreateRemoteData(key, value);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| key | 是 | string | 数据 key(不超过64位) |
| value | 是 | string | 数据值(不超过256位) |
# 修改远程数据
const ret = await pjysdk.UpdateRemoteData(key, value);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| key | 是 | string | 数据 key(不超过64位) |
| value | 是 | string | 数据值(不超过256位) |
# 删除远程数据
const ret = await pjysdk.DeleteRemoteData(key);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| key | 是 | string | 数据 key(不超过64位) |
# 调用远程函数
const ret = await pjysdk.CallRemoteFunc(funcName, params);
| 参数 | 必传 | 类型 | 说明 |
|---|---|---|---|
| funcName | 是 | string | 远程函数名(不超过64位) |
| params | 是 | Array | 参数列表,如 [1, 2] |
示例 远程函数定义(JavaScript):
function add(a, b) {
return a + b;
}
2
3
调用:
const ret = await pjysdk.CallRemoteFunc('add', [1, 2]);
if (ret.code === 0) {
console.log('计算结果: ' + ret.result.return);
}
2
3
4
# 释放资源
pjysdk.release();
停止心跳定时器,页面/应用退出(或重新登录前)调用。
提示:所有网络 API 均返回
{code, message, result}:code === 0成功;-1连接服务器失败;-99/-98签名/nonce 校验失败。 其余返回码含义见接入须知中的对照表。