简介: 小程序Serverless产品,提供包括云函数、数据存储、文件存储等一整套后端服务。

【作者简介】

奥沙,蚂蚁金服智能科技高级开发工程师,曾就职于飞猪,长期从事java后端开发工作,熟悉小程序云后端相关产品使用及研发流程。【Serverless简介】

阿里云小程序云产品,提供了无服务端模式Serverless和有服务端模式云应用,两种小程序后端云服务。

小程序Serverless产品,提供包括云函数、数据存储、文件存储等一整套后端服务。

开发者通过API方式即可获取云函数、数据存储、文件存储、音视频、图像处理等服务,不需要关心服务器或底层运维设施,可以更专注于代码和业务本身。

阿里云用户在开通小程序云产品之后,在支付宝小程序中增加相关配置即可使用Serverless进行DB、文件的存储和访问,以及利用云函数在服务端完成复杂的计算和操作。

【小程序开发】

1、支付宝小程序准备

支付宝小程序开发就不详细介绍了,从创建小程序,到开发、提审官网有详尽的文档和示例。

参见阿里云Serverelss关于小程序开发流程的指导文档。

生成小程序公私钥

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

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、云函数接口。

2.3 配置App页面列表

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" }}

编写&部署云函数

小程序开发注意事项

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

需要用户了解小程序内容后,才能在业务流程中唤起用户授权,否则提审会直接不通过。

所以不能在App.onLoad中调用my.getAuthCode或者serverless.authorize接口。

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

小程序页面栈最多十层,超过后调用无反应。

所以不能让页面有循环调用navigateTo的场景。不需要【返回】的页面直接用redirectTo重定向即可。

3、JSAPI建议使用异步接口

同步调用体检会不通过。

点击下方“了解更多”更多热门技术阅读等着你

本文出自:阿里云开发者社区

支付宝jsapi_使用小程序Serverless开发支付宝小程序相关推荐

  1. 小程序云开发_小程序开发进入云原生时代 加速构建开发者生态

    2019-11-07 16:44 作为Serverless理念大规模落地的最佳实践,"小程序·云开发"正受到越来越多的关注. 11月7日,在腾讯Techo开发者大会"小程 ...

  2. 小程序云开发搜索功能的实现正则_码code | 如何借助小程序云开发实现小程序支付功能...

    转载来源:编程小石头 我们在做小程序支付相关的开发时,总会遇到这些难题.小程序调用微信支付时,必须要有自己的服务器,有自己的备案域名,有自己的后台开发.这就导致我们做小程序支付时的成本很大. 本节就来 ...

  3. 程序员开发什么小程序挣钱_作为程序员赚钱的5种独特方式

    程序员开发什么小程序挣钱 1.赚钱报告错误 (1. Make money reporting bugs) You can earn money by helping other companies f ...

  4. 微信小程序中开发的小坑

    微信小程序中开发的小坑 本文随时更新微信小程序开发过程中遇到的小坑.现已收集如下. 微信小程序编译后的大小不能超过1MB. 微信小程序不能建立两个(含)以上的WebStock连接.

  5. 10行代码实现微信小程序支付功能,使用小程序云开发实现小程序支付功能(含源码

    前面给大家讲过一个借助小程序云开发实现微信支付的,但是那个操作稍微有点繁琐,并且还会经常出现问题,今天就给大家讲一个简单的,并且借助官方支付api实现小程序支付功能. 传送门 借助小程序云开发实现小程 ...

  6. PHP程序员开发win32应用程序之梦

    相信做纯WEB开发的PHP程序员都会想过,要是PHP能开发windows本地应用程序多好,于是上网一查找出来的很多都是"PHP-GTK"的老文章,这东西好像已经没人维护了,随便看了 ...

  7. 小程序_小程序开发,小程序定制开发,小程序搭建,小程序系统开发

    说了那么久的小程序的应用场景,今天就跟大家聊些技术上的话题,聊聊小程序定制开发成本以及开发周期问题,希望能给一些对小程序感兴趣的商家们一些参考.一般的小程序7天左右就可以搞定,具体开发成本请接着往下看 ...

  8. 借助小程序云开发实现小程序的登陆注册功能

    小程序云开发讲解视频:https://edu.csdn.net/course/detail/9604 有了云开发我们不仅可以方便的获取到用户的openid,还可以通过云开发的数据库来存储用户信息,进而 ...

  9. 微信小程序云开发-微信小程序账号申请及新手环境配置

    申请一个微信小程序账号 在微信开发时,我们yx时候可能需要用到微信小程序,微信小程序云开发需要使用注册的小程序appid,测试和游客进入是没有云开发的功能,所以我们需要注册一个微信小程序账号.在注册账 ...

最新文章

  1. 50道练习实践学习Pandas!
  2. 以太坊创始人V 神:普通人看见现在,天才看见未来
  3. UITextField的属性与程序启动后一系列方法
  4. JQuery DOM基本操作
  5. ssm mysql动态分页_SSM项目手动分页详解
  6. 机器学习认识聚类(KMeans算法)
  7. jquery实现二级联动不与数据库交互
  8. 2、Collections操作(自定义类)的各种实现
  9. roszhong指定rviz的点启动_怎样在1秒内启动 Linux
  10. yolo-tensorrt 运行 make报错 error: ‘int nvinfer1::MishPlugin marked ‘override’, but does not override
  11. 又一中科院AI创业公司浮出水面,刚拿下AIC挑战赛视觉感知冠军
  12. maven安装的详细步骤
  13. 计算机芯片组的分类,主板知识详解:芯片组和支持CPU类型
  14. python实现简单的聊天小程序
  15. 批量下载花瓣图片脚本--抖机灵
  16. MATLAB遗传算法解决旅行商(TSP)问题
  17. html闪星星特效,jquery和canvas炫酷星星闪烁特效插件
  18. 水墨特效怎么做?两种方法快速搞定!大神都在用的超美视频画面效果
  19. exercsie13 参数 解包 变量
  20. 清晰地记录着这河水改道的历史

热门文章

  1. 如何在水晶报表显示上下标
  2. Linux下安装ActiveMQ
  3. 解决 Python fake_useragent 报错 fake-useragent Maximum amount of retries reached问题
  4. android apk 反编译工具,安卓apk反编译神器
  5. 文件系统c语言程序,C语言程序设计(第8章 输入输出和文件系统)01
  6. Spring Boot项目CentOS域名的绑定
  7. 在Winform开发中使用FastReport创建报表
  8. gdalwarp:变形工具
  9. 如何灵活使用OSS监控数据动态调整OSS服务参数
  10. 系统内存分布及操作过程