使用小程序Serverless开发支付宝小程序

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: Serverless简介 阿里云小程序云产品,提供了无服务端模式Serverless和有服务端模式云应用,两种小程序后端云服务。小程序Serverless产品,提供包括云函数、数据存储、文件存储等一整套后端服务。开发者通过API方式即可获取云函数、数据存储、文件存储、音视频、图像处理等服务,不需要关心服务器或底层运维设施,可以更专注于代码和业务本身。阿里云用户在开通小程序云产品之后,在支付宝小程

Serverless简介

阿里云小程序云产品,提供了无服务端模式Serverless和有服务端模式云应用,两种小程序后端云服务。小程序Serverless产品,提供包括云函数、数据存储、文件存储等一整套后端服务。开发者通过API方式即可获取云函数、数据存储、文件存储、音视频、图像处理等服务,不需要关心服务器或底层运维设施,可以更专注于代码和业务本身。
阿里云用户在开通小程序云产品之后,在支付宝小程序中增加相关配置即可使用Serverless进行DB、文件的存储和访问,以及利用云函数在服务端完成复杂的计算和操作。

小程序开发

1. 支付宝小程序准备

支付宝小程序开发就不详细介绍了,从创建小程序,到开发、提审官网有详尽的文档和示例。参见阿里云Serverelss关于小程序开发流程的指导文档

生成小程序公私钥

由于Serverless需要以开发者身份访问支付宝OpenAPI,用于获取C端用户信息等,所以需要在Serverless中录入小程序的私钥和支付宝公钥。参见支付宝秘钥生成文档
image.png

2. IDE小程序开发

开发流程Serverless官方文档已有详尽的流程指导,以下主要记录开发过程中的一些需要注意的点。

2.1 添加Serverless SDK依赖

可以修改package.json,添加依赖{"@alicloud/mpserverless-sdk": "^2.1.2"}。也可以下载Serverless官方Demo,在Demo基础上修改。

2.2 引入Serverless

在app.js中引入Serverless全局对象,即可在所有Page中直接引用,用于调用DB、File、云函数接口。
image.png

2.3 配置App页面列表

image.png

2.4 获取用户信息

小程序中关于数据和文件的读写,都需要关联到使用小程序的当前C端用户。PS:Serverless获取的用户信息,是Serverless域所使用的userId和授权oAuthUserId等信息,不包括用户头像和昵称等,如需获取用户头像等信息,需要调用JSAPI “my.getAuthUserInfo”或者"my.getOpenUserInfo"获取。
Serverless获取用户信息示例代码如下。支付宝授权code 10分钟有效,所以需要保证在查询用户信息前通过user.authorize接口刷新授权code(支付宝颁发给开发者的)。

// 先获取用户授权(如用户未授权会弹窗唤起授权窗口)
const res = await app.serverless.user.authorize({
  authProvider: 'alipay_openapi'
}).catch(console.error);
if (res && res.success) {
  console.log('授权成功');
  const userInfo = await app.serverless.user.getInfo({
    authProvider: 'alipay_openapi',
  }).catch(console.error);
  if (userInfo.success) {
    console.log('getUserInfo res', userInfo);
    app.user = userInfo.result.user;
    this.setData({ user: userInfo.result.user });
  }
}

获取用户头像的JSApi

my.getAuthCode({
scopes: ['auth_user'],
success: authcode => {
    console.info('getUserInfo authcode', authcode);
    my.getAuthUserInfo({
    success: res => {
      console.log('auth userinfo', res);
      that.setData({ appUser: res });
    }
  });
}
});

2.5 Serverless 数据读写操作

此处仅示例查询和insert操作,其他接口参见Serverless阿里云文档即可。

数据库查询
app.serverless.db.collection('decisions').find(
  { userId: this.data.user.userId }, // 查询条件
  { sort: { createTime: -1 } }, // 时间降序排列
).then(res => {
  console.log('loadList result', res);
  if(res.success && res.result){
    this.setData({ 
      decisionlist: res.result,
    });
  }
}).catch(console.error);
数据库插入
var insertData = {
  name: this.data.name, 
  userId: this.data.user.userId,
  oAuthUserId: this.data.user.oAuthUserId,
  items,
  createTime: new Date(),
  updateTime: new Date(),
};
console.log('add new decision', insertData);
res = await app.serverless.db.collection('decisions').insertOne(insertData);

2.6 文件上传

my.chooseImage({
  chooseImage: 1,
  success: res => {
    const path = res.apFilePaths[0];
    const options = {
      filePath: path,
      headers: {
        contentDisposition: 'attachment',
      },
    };

    app.serverless.file.uploadFile(options).then((image) => {
      console.log(image);
      this.setData({
        imageUrl: image.fileUrl,
      });
    }).catch(console.log);
  },
});

2.7 云函数

IDE内集成了云函数相关的操作。PS:由于历史原因,需要安装旧的Serverless SDK,"@ant-basement/miniprogram-sdk": "^2.2.24"。

设置云服务类型

在工程根目录下增加文件mini.project.json

{
  "cloud": {
    "type": "BASEMENT"
  }
}
编写&部署云函数

image.png

小程序开发注意事项

1. 不能在首屏唤起用户授权

需要用户了解小程序内容后,才能在业务流程中唤起用户授权,否则提审会直接不通过。所以不能在App.onLoad中调用my.getAuthCode或者serverless.authorize接口。

2. my.navigateTo接口最多只能递归调用10次

小程序页面栈最多十层,超过后调用无反应。所以不能让页面有循环调用navigateTo的场景。不需要【返回】的页面直接用redirectTo重定向即可。

3. JSAPI建议使用异步接口

同步调用体检会不通过

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
4天前
|
人工智能 小程序
一步步开发AI运动小程序】二、引入插件
随着人工智能技术的发展,阿里体育等公司推出的“乐动力”、“天天跳绳”等AI运动APP广受欢迎。本文将引导您从零开始开发一个AI运动小程序,使用“云智AI运动识别小程序插件”。内容包括新建uni-app项目、配置插件、部署模型、安装依赖包、全局初始化和调用插件对象。
|
3天前
|
小程序 搜索推荐 数据挖掘
跳绳打卡小程序开发多钱费用
跳绳打卡小程序通过智能手机即可轻松使用,无需额外设备,只需一根跳绳即可开始您的健康之旅。它结合了便捷性、互动性和个性化设置,让跳绳这项运动变得更加有趣和高效
|
5天前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
59 1
|
1天前
|
存储 传感器 小程序
跳绳计数小程序开发系统
首先,我们需要明确跳绳计数小程序的核心功能:为用户提供跳绳计数的便捷方式。这意味着小程序需要能够准确地记录用户的跳绳次数,并为用户提供清晰、直观的计数展示。
|
1天前
|
人工智能 编解码 小程序
【一步步开发AI运动小程序】四、小程序如何抽帧
随着AI技术的发展,阿里体育等公司推出的“乐动力”、“天天跳绳”等APP使云上运动会、线上健身等概念备受关注。本文将引导您从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”。文中详细介绍了微信小程序抽帧的相关API、设置及注意事项,帮助开发者更好地实现AI运动功能。下篇将介绍人体识别技术,敬请期待。
|
2天前
|
传感器 存储 小程序
跳绳计数小程序开发
跳绳计数小程序旨在通过智能设备(如手机或智能手表)记录用户在跳绳过程中的次数、时间、速度等关键数据,为用户提供便捷的运动记录和数据分析服务
|
1天前
|
小程序 搜索推荐 前端开发
小剧场短剧影视小程序开发
小剧场短剧影视小程序旨在为用户提供一个便捷、互动的平台,让用户能够随时随地观看、分享和评论各类小剧场短剧。通过小程序,用户可以浏览热门短剧、搜索感兴趣的内容、参与社区互动,以及享受个性化的推荐服务。
|
2天前
|
小程序 搜索推荐 前端开发
短剧小程序开发案例
首先,明确你的短剧平台的目标用户群体和他们的需求。比如,年轻用户可能更倾向于轻松、幽默的短剧内容,而家庭用户则可能更偏爱教育、亲子类的短剧。了解用户需求有助于你设计更符合他们口味的功能和界面
|
2天前
|
机器学习/深度学习 人工智能 小程序
【一步步开发AI运动小程序】三、运动识别处理流程
随着人工智能技术的发展,阿里体育等公司推出的“乐动力”、“天天跳绳”等AI运动APP备受关注。本文将引导您从零开始开发一个AI运动小程序,使用“云智AI运动识别小程序插件”。文章介绍了视频帧、帧率FPS、抽帧和人体识别等基本概念,并详细说明了处理流程,包括抽帧、人体识别检测、骨骼图绘制和运动分析等步骤。下篇将介绍如何在小程序中实现抽帧。
|
5天前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
25 0

相关产品

  • 函数计算