简介
alipaydev 开发工具提供命令行方式进行开发,提高研发效率,提供小程序各种便捷工具。
支持命令行和SDK方式引入
全局安装
npm install alipay-dev -g
CLI命令
命令索引
可以通过 alipaydev -h 查看所有命令帮助,并且每个命令可通过增加 -h 参数查看明细说明
| 配置 | 工具初始化配置 | alipaydev config set |
| 展示工具配置信息 | alipaydev config list |
| 小程序 | 小程序列表 | alipaydev mini list |
| 小程序预览 | alipaydev mini preview |
| 小程序上传 | alipaydev mini upload |
| demo下载 | alipaydev mini demo |
| 云开发 | 云服务空间列表 | alipaydev cloud space list |
| 空间下的云函数列表 | alipaydev cloud function list |
| 启动本地云函数运行环境 | alipaydev cloud function dev |
| 上传云函数 | alipaydev cloud function deploy |
| 下载云函数 | alipaydev cloud function download |
| http触发器 | alipaydev cloud function http |
| 密钥 | 密钥生成 | alipaydev key create |
| 密钥匹配检测 | alipaydev key match |
| 密钥转换 | alipaydev key convert |
在线视频演示
支付宝服务群
工具初始化配置
操作流程:
- 运行
alipaydev key create -w生成密钥(pkcs8 rsa2 格式)
- 运行
alipaydev key upload自动打开浏览器配置页或直接前往“工具密钥设置” 页面进行工具公钥和IP白名单(可选)设置。将第一步生成的“公钥”在此页面配置,设置完成后系统会为您分配一个工具ID(toolId)
- 工具密钥设置页面配置完成后,运行配置命令,设置第二步系统分配的工具Id(toolId)
alipaydev config set -i 工具ID
| -i, --tool-id | 是 | 工具id | 无 |
| -k, --private-key | 否 | 工具私钥 | 无 |
| --proxy | 否 | 代理地址 | 无 |
小程序相关
以下命令都支持普通小程序和小程序插件
小程序预览
# 将 /Users/workspace/Demos/todos 目录下的小程序源码上传预览
alipaydev mini preview -i 20190666750666 -p /Users/workspace/Demos/todos
# 默认启动页为pages/index/index,参数q=v&id=33,小程序launch参数为name=demo&fromId=11
alipaydev mini preview -i 20190666750666 -p /Users/workspace/Demos/todos --page 'pages/index/index?q=v&id=33' --launch 'name=demo&fromId=11'
| -p, --project | 是 | 项目目录 | 无 |
| -i, --app-id | 是 | 小程序appId | 无 |
| --page | 否 | 落地页面, 如:"pages/index/index?q=v&id=33" | 无 |
| --launch | 否 | app.js的onLaunch中取得, 如: "name=demo&fromId=11" | 无 |
| -f, --qrcode-format | 否 | 返回二维码文件的格式, 如: 'terminal','base64','image' | image |
| -o, --qrcode-output | 否 | 二维码文件保存路径,如: '/docuemnt/demo.png' | 程序执行目录 |
小程序上传
# 上传到支付宝端
alipaydev mini upload -i 20190666750666 -p /Users/workspace/Demos
# 上传到高德端
alipaydev mini upload -i 20190666750666 -p /Users/workspace/Demos -c amap
| -p, --project | 是 | 项目目录 | 无 |
| -i, --app-id | 是 | 小程序appId | 无 |
| -v, --version | 否 | 上传包版本 | 线上包版本自增0.0.1 |
| -c, --client-type | 否 | 上传的终端。 支付宝: alipay; 高德: amap; UC: com.uc.app; 夸克: com.quark.browser; 阿里医院: com.alibaba.health; 口碑独立客户端: com.koubei.mobile.KoubeiClient; | alipay |
| -e, --experience | 否 | 上传成功后,自动设置为体验版本, 该功能只针对小程序主账号生效 | false |
demo下载
alipaydev mini demo
云开发相关
查看云服务空间列表
# 查看云服务空间列表,在终端显示云服务空间的名称以及云服务空间的 ID
alipaydev cloud space list -i 2021001107626425
查看云函数列表
# 查询服务空间下的云函数列表
alipaydev cloud function list -i 2021001107626425 -s 123456
| -i, --app-id | 是 | 小程序appId | 无 |
| -s, --space-id | 是 | 云服务空间ID | 无 |
启动本地调试服务
alipaydev cloud function dev -i 2021001107626425 -p /server/functions --inspect
| -i, --app-id | 是 | 小程序appId | 无 |
| -p, --project | 是 | 云函数根目录 | 无 |
| --port | 否 | 服务启动端口 | 3636 |
| --inspect | 否 | 启动chrome调试器 | false |
上传云函数
# 上传云函数根目录下名为 getSum 的云函数
alipaydev cloud function deploy -i 2021001107626425 -s 123456 -n getSum -p /server/functions
# 上传云函数根目录下名为 aaa bbb的云函数
alipaydev cloud function deploy -i 2021001107626425 -s 123456 -n aaa bbb -p /server/functions
| -i, --app-id | 是 | 小程序appId | 无 |
| -s, --space-id | 是 | 云服务空间ID | 无 |
| -n, --name | 是 | 云函数名称,多个云函数则以空格分隔 | 无 |
| -p, --project | 是 | 云函数本地文件地址 | 无 |
下载云函数
# 下载云函数 main到 /server/functions目录下面
alipaydev cloud function download -i 2021001107626425 -s 123456 -n main --path /server/functions
| -i, --app-id | 是 | 小程序appId | 无 |
| -s, --space-id | 是 | 云服务空间ID | 无 |
| -n, --name | 是 | 云函数名 | 无 |
| -p, --path | 是 | 下载后保存路径 | 无 |
云函数HTTP触发
# 开启todo云函数的HTTP触发
alipaydev cloud function http -i 2021001107626425 -s 123456 --enable -n todo -p /http/todo
# 关闭todo云函数的HTTP触发
alipaydev cloud function http -i 2021001107626425 -s 123456 --no-enable -n todo
| -i, --app-id | 是 | 小程序appId | 无 |
| -s, --space-id | 是 | 云服务空间ID | 无 |
| -n, --name | 是 | 云函数名 | 无 |
| -p, --path | 否 | 云函数HTTP触发路径,须以/http开头 | 无 |
| --enable | 否 | 开启HTTP触发功能 | true |
| --no-enable | 否 | 关闭HTTP触发功能 | 无 |
密钥相关
密钥生成
# 在当前目录生成密钥文件,并在终端中打印。密钥类型RSA2,密钥格式PCKS8
alipaydev key create
| -t, --type | 否 | 密钥类型(rsa2/rsa) | rsa2 |
| -s, --scheme | 否 | 密钥格式(pkcs8/pkcs1) | pkcs8 |
| --pub-path | 否 | 公钥保存地址 | 当前工作目录 |
| --pri-path | 否 | 私钥保存地址 | 当前工作目录 |
工具密钥上传
alipaydev key upload
密钥匹配检测
# 校验public.txt 和private.txt 中存放的公私钥是否成对匹配
alipaydev key match --pub-path /Users/keys/public.txt --pri-path /Users/keys/private.txt
| --pub-path | 是 | 公钥地址 |
| --pri-path | 是 | 私钥地址 |
密钥转换
# 将 private.txt中的私钥转换成pcks1格式
alipaydev key convert --pri-path /Users/keys/private.txt -s pkcs1
| --pri-path | 是 | 私钥地址 | 无 |
| -s, --scheme | 否 | 密钥格式(pkcs8/pkcs1) | pkcs8 |
https代理
使用superagent-proxy代理服务,默认服务地址: https://ideservice.alipay.com
# 将所有服务代理到指定地址
alipaydev config set --proxy http://127.0.0.1
SDK引入
npm install alipay-dev --save
import alipaydev from 'alipay-dev'
const alipaydev = require('alipay-dev')
初始化配置
alipaydev.setConfig({
toolId: '',
privateKey: '',
})
小程序列表
demo
const miniList = await alipaydev.miniAppList()
入参
无
返回
返回一个数组,每一项属性如下
| appId | string | 小程序appId |
| appName | string | 小程序名称 |
| logoUrl | string | 小程序logo |
| subApplicationType | string | 程序类型: TINYAPP_NORMAL, TINYAPP_PLUGIN, TINYAPP_TEMPLATE |
小程序预览
demo
const previewResult = await alipaydev.miniPreview({
project: '/code/mini/path',
appId: '2019012963164448',
page: 'page/shop/detail?id=10&from=name',
onProgressUpdate (info) {
const { status, data } = info
console.log(status, data)
}
})
入参
| project | 是 | 本地项目地址 | 无 |
| appId | 是 | 小程序appId | 无 |
| page | 否 | 落地页 | 无 |
| launch | 否 | app.js的onLaunch中取得 | 无 |
| qrcodeFormat | 否 | 返回二维码文件的格式。 'terminal', 'base64', 'image' | image |
| qrcodeOutput | 否 | 二维码文件保存路径 | 无 |
| onProgressUpdate | 否 | 上传过程中的回调 | 无 |
返回
| subApplicationType | string | 程序类型: TINYAPP_NORMAL, TINYAPP_PLUGIN, TINYAPP_TEMPLATE |
| schema | string | 支付宝schema链接 |
| qrcode | string | schema对应的二维码 |
获取最近的上传版本号
demo
const uploadLastVersion = await alipaydev.getUploadVersion({
appId: '2019012963164448',
clientType: 'alipay',
})
小程序上传
demo
const uploadResult = await alipaydev.miniUpload({
project: '/code/mini/path',
appId: '2019012963164448',
clientType: 'alipay',
experience: true,
onProgressUpdate (info) {
const { status, data } = info
console.log(status, data)
}
})
入参
| project | 是 | 项目目录 | 无 |
| appId | 是 | 小程序appId | 无 |
| packageVersion | 否 | 上传包版本 | 线上包版本自增0.0.1 |
| clientType | 否 | 上传的终端。 支付宝: alipay,高德: amap | alipay |
| experience | 否 | 上传成功后,自动设置为体验版本, 该功能只针对小程序主账号生效 | false |
| onProgressUpdate | 否 | 上传过程中的回调 | 无 |
返回
| subApplicationType | string | 程序类型: TINYAPP_NORMAL, TINYAPP_PLUGIN, TINYAPP_TEMPLATE |
| packages | package[] | 编译后的代码包信息 |
| - package.name | string | 上传包名字 |
| - package.type | string | 类型,整包,主包,分包 |
| - package.size | string | 上传包尺寸,单位KB |
| packageVersion | string | 上传包的版本 |
| qrCodeUrl | string | 体验二维码在线地址 |
空间列表
demo
const result = await alipaydev.cloudSpaceList('2021001158675201')
入参
返回
返回一个数组,每一项属性如下
| appWorkspaceId | string | 空间id |
| name | string | 空间名称 |
| envStatus | string | 空间状态 |
指定空间下的云函数列表
demo
const result = await alipaydev.cloudFunctionList({
appId: '2021001158675201',
spaceId: '02664190-6841-4f50-980a-12121504a807'
})
入参
| appId | 是 | 小程序appId | 无 |
| spaceId | 是 | 服务空间ID | 无 |
返回
返回一个数组,每一项属性如下
| name | string | 云函数名称 |
| desc | string | 云函数描述 |
| createdAt | string | 创建时间 |
| modifiedAt | string | 修改时间 |
| timeout | string | 云函数超时时间 |
运行本地云函数
demo
const result = await alipaydev.invokeLocalFunction({
appId: '20190666750666',
spaceId: '1d98dd70-ceb5-4334-b958-85ff3c7aa8f4',
project: '/server/functions',
name: 'main',
functionArgs: {
x: 1,
y: 1
},
})
入参
| appId | 是 | 小程序appId | 无 |
| spaceId | 是 | 服务空间ID | 无 |
| project | 是 | 本地项目地址 | 无 |
| name | 是 | 云函数名 | 无 |
| functionArgs | 否 | 云函数参数 | {} |
返回
本地云函数运行的结果
上传云函数
demo
const result = await alipaydev.deployCloudFunction({
appId: '2021001158675201',
spaceId: '02664190-6841-4f50-980a-12121504a807',
project: '/server/functions/demo'
name: 'demo'
})
入参
| appId | 是 | 小程序appId | 无 |
| spaceId | 是 | 服务空间ID | 无 |
| project | 是 | 本地项目地址 | 无 |
| name | 是 | 云函数名 | 无 |
| desc | 否 | 云函数描述 | 无 |
返回
| name | string | 云函数名称 |
| deploymentId | string | 部署id |
下载云函数
demo
const result = await alipaydev.downloadCloudFunction({
appId: '2021001158675201',
spaceId: '02664190-6841-4f50-980a-12121504a807',
name: 'demo',
path: '/server/functions/',
unzip: true
})
入参
| appId | 是 | 小程序appId | 无 |
| spaceId | 是 | 服务空间ID | 无 |
| name | 是 | 云函数名 | 无 |
| path | 是 | 保存路径 | 无 |
| unzip | 否 | 下载后,是否自动解压 | false |
返回
| stat | string | 下载状态, stat为ok代表成功 |
| code | string | 错误码 |
| message | string | 提示信息 |
云函数http触发器
demo
const result = await alipaydev.updateFunctionHttpTrigger({
appId: '2021001158675201',
spaceId: '02664190-6841-4f50-980a-12121504a807',
name: 'todo',
httpTriggerPath: '/http/todo',
enable: true
})
密钥生成
demo
const { privatePem, publicPem } = await alipaydev.createKey({
type: 'rsa2',
scheme: 'pkcs8'
})
入参
| type | 否 | 密钥类型(rsa2/rsa) | rsa2 |
| scheme | 否 | 密钥格式(pkcs8/pkcs1) | pkcs8 |
| pubPath | 否 | 公钥保存地址 | 无 |
| priPath | 否 | 私钥保存地址 | 无 |
返回
| privatePem | string | 私钥 |
| publicPem | string | 公钥 |
密钥匹配检测
demo
const success = await alipaydev.matchKey({
privatePem: '',
publicPem: ''
})
入参
| privatePem | 是 | 私钥 | 无 |
| publicPem | 是 | 公钥 | 无 |