# PotatoCloud SDK - EasyClick 平台

# 介绍

potato cloud EasyClick sdk 开发包,potato cloud 全方位的后端服务平台。

# 项目地址

https://gitee.com/chengdu-xuda-network/potato_cloud_easyclick_sdk.git (opens new window)

# 文件说明

文件 说明
potato_cloud.js SDK 核心文件(单文件,直接引入即可)
main.js 测试/示例脚本
README.md 本文档

# 快速开始

# 1. 引入 SDK

将 potato_cloud.js 放入你的 EasyClick 项目目录,然后引入:

var PotatoCloud = require("./potato_cloud.js");
1

# 2. 创建实例

var myApp = PotatoCloud.createApp({
    askKey: "你的应用密钥",
    signSecretKey: "你的签名密钥",
    signType: 1,
    requestEncryptType: 2,
    responseEncryptType: 2,
    encryptSecretKey: "你的加密密钥"
});
1
2
3
4
5
6
7
8

# 3. 调用接口

// 获取应用信息
var appInfo = myApp.getAppInfo();
logd("应用信息: " + JSON.stringify(appInfo));

// 卡密验证
var result = myApp.verifyCardV2({
    card: "你的卡密",
    deviceCode: device.getIMEI()
});
logd("验证结果: " + JSON.stringify(result));
1
2
3
4
5
6
7
8
9
10

# 配置参数

参数 类型 必填 说明
askKey String 是 应用密钥
host String 否 API地址,默认 https://api.potatocloud.cn
signSecretKey String 否 验签密钥
signType Number 否 验签类型,默认 0
requestEncryptType Number 否 请求加密类型,默认 0
responseEncryptType Number 否 响应加密类型,默认 0
encryptSecretKey String 否 加解密密钥
timeout Number 否 请求超时(毫秒),默认 30000

# 加密类型说明

值 类型 说明
0 不加密 明文传输
1 Base64 Base64 编码
2 AES/ECB/PKCS5Padding AES 加密,密钥自动填充至32字节
3 DES/ECB/PKCS7 DES 加密,密钥截取/填充至8字节
4 AES/ECB/NoPadding AES 加密,16位密钥,数据手动填充
5 RC4 RC4 流加密

# 验签类型说明

值 类型 算法
0 不验签 -
1 V1 md5(signSecretKey + timestamp)
2 V2 md5(排序参数拼接 + signSecretKey + timestamp)
3 V3 md5(排序参数拼接 + signSecretKey + timestamp + nonce)

# API 列表

# 基础接口

方法 说明 请求方式
getAppInfo() 获取应用信息 GET
getNotice(params) 获取公告 GET
updateApp(params) 检查更新 POST
verifyCardV2(params) 卡密验证(卡密制) POST
unbindCard(params) 解绑卡密 POST
createOrder(params) 创建订单 POST
pay(params) 发起支付 POST
searchOrder(params) 查询订单 POST
getSignInList(params) 获取签到列表 POST
startApp(params) 启动应用 GET
getAppUpdateLog(params) 获取更新日志 POST
feedBack(params) 用户反馈 POST
getDoc(params) 获取文本 POST
messageBoard(params) 用户留言 POST
getMessageBoardList(params) 查询留言板 POST
getGoodsList(params) 获取商品列表 POST
getLabelList(params) 获取标签列表 GET
registerV2(params) 用户注册V2 POST
createCardMy(params) 生成卡密 POST
getCardMyList(params) 查询卡密列表 POST
updateUserBalance(params) 修改用户余额 POST
getUserBalanceList(params) 查询余额列表 POST
getVipList(params) 查询会员列表 POST
userByVipWithBalance(params) 余额购买会员 POST
sendWeChatMessage(params) 发送微信消息 POST
sendBatchWeChatMessage(params) 批量发送微信消息 POST
execFunction(params) 执行云函数 POST
pushNotify(params) 推送商户 App 通知(askKey;body 可选 pushKey) POST

# 用户接口

方法 说明 请求方式
sendEmailMessage(params) 发送注册邮箱验证码 POST
register(params) 用户注册 POST
login(params) 用户登录 POST
updateUserInfo(params) 修改用户信息 POST
updatePassWord(params) 修改密码 POST
sendEmailByUser(params) 用户发送邮件 POST
sendEmailByTemplate(params) 按模板发送邮件(需先在管控台配置 SMTP + 邮件模板) POST
verifyCardV1(params) 卡密验证(会员制) POST
getCodeImg(params) 获取验证码图片 GET
signInUser(params) 用户签到 GET

# 数据库接口

方法 说明 请求方式
selectOne(tableName, params) 查询单条数据 POST
selectList(tableName, params) 查询多条数据 POST
addOne(tableName, params) 新增单条数据 POST
addList(tableName, params) 新增多条数据 POST
updateOne(tableName, params) 修改数据 POST
updateList(tableName, params) 批量修改(where 表达式 + limit,limit≤500) POST
deleteOne(tableName, params) 删除数据 POST
deleteList(tableName, params) 批量删除(where 表达式,limit≤500) POST

# Token 管理

方法 说明
setUserToken(token) 手动设置用户Token
removeUserToken() 清除用户Token
getUserToken() 获取当前Token

登录成功后 Token 会自动保存,无需手动设置。

# 通用请求

// 自定义请求
var result = myApp.request("/api/yourEndpoint", "POST", {key: "value"});
1
2

# 使用示例

# 卡密验证

var PotatoCloud = require("./potato_cloud.js");

var myApp = PotatoCloud.createApp({
    askKey: "你的askKey",
    signSecretKey: "Potato",
    signType: 1,
    requestEncryptType: 2,
    responseEncryptType: 2,
    encryptSecretKey: "Potato"
});

function main() {
    var result = myApp.verifyCardV2({
        card: "XXXX-XXXX-XXXX",
        deviceCode: device.getIMEI()
    });
    if (result && result.code == 200) {
        logd("验证成功: " + JSON.stringify(result.data));
    } else {
        logd("验证失败: " + (result ? result.message : "未知错误"));
    }
}

main();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 用户登录 + 数据库操作

var PotatoCloud = require("./potato_cloud.js");

var myApp = PotatoCloud.createApp({
    askKey: "你的askKey",
    signSecretKey: "Potato",
    signType: 1,
    requestEncryptType: 0,
    responseEncryptType: 0,
    encryptSecretKey: ""
});

function main() {
    // 登录
    var loginResult = myApp.login({
        userName: "user1",
        passWord: "pass123"
    });
    logd("登录: " + JSON.stringify(loginResult));

    // 登录成功后 Token 自动保存,可直接调用需要认证的接口
    if (loginResult && loginResult.code == 200) {
        // 查询多条(与 /api/selectList 参数一致)
        var data = myApp.selectList("my_table", {
            where: [
                { reg: "eq", column: "status", value: "1" }
            ],
            pc: { p: 1, s: 10 }
        });
        logd("数据: " + JSON.stringify(data));
    }
}

main();
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
30
31
32
33

# 按模板发送邮件

需先在管控台配置 SMTP,并创建邮件模板(可选用系统模板;正文支持 HTML / TXT)。接口说明见 按模板发送邮件。

var PotatoCloud = require("./potato_cloud.js");

var myApp = PotatoCloud.createApp({
    askKey: "你的askKey",
    signSecretKey: "Potato",
    signType: 1,
    requestEncryptType: 0,
    responseEncryptType: 0,
    encryptSecretKey: ""
});

function main() {
    var result = myApp.sendEmailByTemplate({
        email: "user@example.com",
        templateKey: "order_notify",
        // 对应模板中的 {0}{1}…
        params: JSON.stringify(["张三", "ORD2026001"])
    });
    logd("按模板发信: " + JSON.stringify(result));
}

main();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 推送商户 App 通知

须带 askKey(与其它开放 API 一致);额度扣调用方商户。body 可选 pushKey 指定接收设备(须属本商户),不传则推给本商户。接口说明见 推送商户App通知。

var PotatoCloud = require("./potato_cloud.js");

var myApp = PotatoCloud.createApp({
    askKey: "你的askKey",
    signSecretKey: "Potato",
    signType: 1,
    requestEncryptType: 0,
    responseEncryptType: 0,
    encryptSecretKey: ""
});

function main() {
    // 推给 askKey 对应商户
    var result = myApp.pushNotify({
        title: "订单提醒",
        content: "您有新的订单待处理",
        msgType: "text"
    });
    logd("推送: " + JSON.stringify(result));

    // 指定设备(body 传 pushKey,不要放 Header)
    // var result2 = myApp.pushNotify({
    //     title: "订单提醒",
    //     content: "您有新的订单待处理",
    //     pushKey: "pk_xxxxxxxx",
    //     msgType: "text"
    // });
}

main();
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
30
lastUpdate: 10/15/2026, 3:34:23 PM