云开发技巧

简介: 在云开发技巧中,我们将向你介绍:使用云函数HTTP触发器+云调用实现无需后端接入支付宝支付功能,并通过云函数接收支付回调功能;使用云函数定时触发器实现每天凌晨定时调度任务。

云开发技巧

在云开发技巧中,我们将向你介绍:
• 使用云函数HTTP触发器+云调用实现无需后端接入支付宝支付功能,并通过云函数接收支付回调功能;
• 使用云函数定时触发器实现每天凌晨定时调度任务。

使用云函数HTTP触发器实现支付回调

当开启某一函数的 HTTP触发功能后,只要使用 HTTP请求就可以访问到函数,开发者需要关注业务安全和资源安全。
• 业务安全:开发者需在云函数代码中做好权限控制和安全防护,避免未授权访问触发敏感操作。
• 资源安全:云函数开启了 HTTP 访问后,如果遇到大量恶意访问,消耗云函数资源,开发者可以将云函数的触发路径设置为空或关掉该Space的HTTP触发功能,停止HTTP触发支持。

开启云函数HTTP触发功能

• 新建用于处理支付回调逻辑的云函数,上传部署。
• 开启Space的HTTP触发功能调用接口 UpdateHttpTriggerConfig接口来开启Space的HTTP触发功能,注意需要设置EnableService为true。
系统会为开启HTTP触发功能的Space分配一个默认域名(DefaultEndpoint),供HTTP触发使用。
• 开启云函数的HTTP触发功能调用接口 UpdateFunction接口来为云函数设置HTTP触发路径HttpTriggerPath,只有设置了触发路径的云函数才能使用该功能。
• HTTP触发函数执行访问 https://${DefaultEndpoint}${HttpTriggerPath}http://${DefaultEndpoint}${HttpTriggerPath},即可触发对应的云函数执行。
• 介绍两种调用UpdateHttpTriggerConfigUpdateFunction的方式,一种是在阿里云的API在线调试界面 https://help.aliyun.com/document_detail/158669.html 以及 https://help.aliyun.com/document_detail/153370.html 发起在线API调用。另外一种就是在代码里集成 @alicloud/pop-core,示例代码如下:

const Core = require('@alicloud/pop-core');

var client = new Core({
  accessKeyId: '你的accessKeyId',
  accessKeySecret: '你的accessSecret',
  endpoint: 'https://mpserverless.aliyuncs.com',
  apiVersion: '2019-06-15'
});

var params = {
  "RegionId": "cn-hangzhou",
  "EnableService": true,
  "SpaceId": "你的spaceid"
}

var requestOption = {
  method: 'POST'
};

client.request('UpdateHttpTriggerConfig', params, requestOption).then((result) => {
  console.log(JSON.stringify(result));
}, (ex) => {
  console.log(ex);
})

云调用调用支付接口,并使用云函数的HTTP触发路径做为支付回调Url参数

  1. 在小程序项目的根目录执行以下命令安装 SDK。
npm install @alicloud/mpserverless-sdk --save
  1. 在 app.js 中初始化云调用SDK(全局只需初始化一次),并将之前获得的用于处理支付回调逻辑的云函数的HTTP触发路径(暂时支持http协议格式路径)作为初始化云调用SDK的参数。

import MPServerless from '@alicloud/mpserverless-sdk';
import cloud from 'alipay-serverless-sdk';

my.serverless = my.serverless || new MPServerless({
  uploadFile: my.uploadFile,
  request: my.request,
  getAuthCode: my.getAuthCode,
}, {
  appId: '',
  // 小程序云控制台中记得对比切换的空间是否正确哦~
  spaceId: '',
  clientSecret: '',
  endpoint: 'https://api.bspapp.com'
});

// 必须要初始化哦~cloud 是一个单例,初始化一次 App 引入均可生效
cloud.init(my.serverless,{
  notify:"http://xxxxxx.bspapp.com/callbackForPay"//此处填写您获得的云函数HTTP触发路径
});

其中每次调用UpdateFunction都会触发云函数的HTTP触发路径发生变化,发生变化之后务必记得更改云调用SDK初始化里的notify参数。

  1. 在小程序端使用云调用调用支付能力。
//使用云调用sdk调用支付创建接口
cloud.payment.common.create('iPhoneX', '2020053101122008', '5100.50', '2088xxxxx');

使用云函数定时触发实现定时调度任务

1.新建用于定时调度的云函数,代码编写完后上传部署。
2.调用UpdateFunction接口,通过设置参数TimingTriggerConfig来为云函数设置定时触发配置。
TimingTriggerConfig参数的值为一个cron表达式,例如cron:0 0 * * * *表示每个整点触发。配置规则仅支持设置cron表达式。
3.UpdateFunction接口的调用方式同样有两种,一种是在阿里云的API在线调试界面 https://help.aliyun.com/document_detail/153370.html 发起在线API调用。另外一种就是在代码里集成 @alicloud/pop-core,示例代码如下:

const Core = require('@alicloud/pop-core');

var client = new Core({
  accessKeyId: '你的accessKeyId',
  accessKeySecret: '你的accessSecret',
  endpoint: 'https://mpserverless.aliyuncs.com',
  apiVersion: '2019-06-15'
});

var params = {
  "RegionId": "cn-hangzhou",
  "Name": "你的云函数名称",
  "SpaceId": "你的spaceid",
  "TimingTriggerConfig": "1111"
}

var requestOption = {
  method: 'POST'
};

client.request('UpdateFunction', params, requestOption).then((result) => {
  console.log(JSON.stringify(result));
}, (ex) => {
  console.log(ex);
})

课程作业
支付宝扫码登陆官方小程序【小程序云开发助手】,在 学习 > 训练营打卡作业 > 云开发技巧 中提交作业。
image.png

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
存储 人工智能 搜索推荐
探索向量数据库 | 重新定义数据存储与分析
向量数据库就是一种专门用于处理和查询向量数据的数据库,与传统数据库以表格形式组织和存储数据不同,向量数据库采用多维数值数组的形式处理和存储数据。其主要目标支持高效的向量相似性搜索和查询。
2143 1
关于云主机裸盘扩容的实操总结
关于云主机裸盘扩容的实操总结
523 0
关于云主机裸盘扩容的实操总结
|
存储 固态存储 算法
多维度深入剖析QLC SSD硬件延迟的来源
不同的FW架构设计、FTL算法设计、NAND die plane/速率等的差异,都会直接影响SSD的性能与延迟,设计一块性能优越且稳定的SSD,是一项繁琐但具有很强艺术性的工程。
|
弹性计算 缓存 算法
阿里云2核4G服务器通用算力型u1实例CPU处理器性能详解
阿里云2核4G服务器通用算力型u1实例CPU处理器性能详解,阿里云通用算力型u1云服务器ecs.u1-c1m2.large实例2核4G配置,CPU采用2.5 GHz主频的Intel Xeon Platinum 8163(Skylake)或者8269CY(Cascade Lake)处理器
988 0
阿里云2核4G服务器通用算力型u1实例CPU处理器性能详解
|
JavaScript
VUE element-ui之form表单中input输入超过规定长度error提醒,并实时显示输入长度,可无限输入
输入超过规定长度error提醒,并实时显示输入长度,可无限输入
1360 0
VUE element-ui之form表单中input输入超过规定长度error提醒,并实时显示输入长度,可无限输入
|
存储 分布式计算 数据可视化
闲鱼SPU体系构建的背后
SPU——结构化的利器+闲鱼商品的翻译官~
1211 0
闲鱼SPU体系构建的背后
|
人工智能 弹性计算 监控
在云之上的猿辅导,撑住了500万中小学生的挑战
2020年1月,猿辅导正式对外宣布全球累计用户数量突破4亿,这家国内K-12在线教育领域首个独角兽公司,从猿题库、小猿搜题APP一路走来,如今已经成为拥有猿辅导(网课)、猿题库、小猿搜题、小猿口算、斑马AI课等多元化产品的在线教育企业,教学内容覆盖从学龄前、小学、初中到高中的完整K12阶段,用户涉及儿童、中小学生、家长和老师等各类人群。
2191 0
在云之上的猿辅导,撑住了500万中小学生的挑战
|
机器学习/深度学习 新零售 人工智能
三维空间重建(临云镜)重磅发布,30分钟体验AI构建的3D空间
2019年12月2日下午,阿里云峰会广东站飞天大数据与AI平台专场落幕,专场上阿里云智能高级产品专家王巍正式发布了三维空间重建(临云镜)产品,基于三维视觉AI技术实现空间展示及场景还原,致力于用人工智能技术实现三维重建能力。
7803 0
三维空间重建(临云镜)重磅发布,30分钟体验AI构建的3D空间
|
NoSQL 存储 Apache
Cassandra全球使用的公司及场景
Apache Cassandra是最流行的分布式宽表数据库,具有SQL的入口,最初由Facebook开发,后续贡献给Apache。阿里云Cassandra公测,就有不少客户在问,Cassandra到底有哪些公司在使用,可以解决什么问题。
Cassandra全球使用的公司及场景