云开发技巧

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 在云开发技巧中,我们将向你介绍:使用云函数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

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
5天前
|
人工智能 自然语言处理 数据挖掘
国内如何使用微软 Copilot ?新手进阶篇!
微软 Copilot 是一款功能强大的 AI 助手,掌握一些使用技巧,可以让它成为你工作和生活中的得力助手,助你提升效率,激发创造力,开启更加精彩的人生!
|
2月前
|
开发工具 Swift 数据安全/隐私保护
移动应用开发之旅:从零到一的iOS系统探索
【9月更文挑战第16天】在数字时代的浪潮中,移动应用成为连接用户与数字世界的桥梁。本文将带你走进iOS移动操作系统的世界,了解其架构、设计理念以及开发环境。我们将通过Swift语言的简单示例,展示如何构建一个基本的iOS应用,并探讨移动应用开发的未来趋势。无论你是编程新手还是资深开发者,这篇文章都将为你提供宝贵的见解和知识。
|
3月前
|
存储 IDE Java
探索安卓应用的构建之旅:从新手到专家
【8月更文挑战第31天】 本文是一篇面向初学者和有一定基础的开发者的技术性文章。我们将一起踏上一段激动人心的旅程,深入了解如何从零开始构建一个安卓应用。文章将引导你理解安卓开发的基础知识,掌握核心概念,并通过实际代码示例加深你的理解和技能。无论你是刚刚接触安卓开发,还是希望提升现有技能,这篇文章都将为你提供宝贵的信息和实用的技巧。准备好了吗?让我们一起开始吧!
|
3月前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
98 0
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
150 0
|
XML SQL JSON
程序员开发常用的云在线工具
云在线开发工具:代码格式化,base64/md5加密解密,utf-8转换,时间戳在线生成
216 0
|
缓存 小程序 数据库
微信小游戏开发最全系列教程
嗨!大家好,我是小蚂蚁。 最近有非常多的新朋友关注了我,再加上这一段时间里,我又写了很多的原创教程,所以,更新一下这篇“微信小游戏开发最全系列教程”,做了很多的补充,希望能够对你有帮助,可以把这篇文章收藏一下,以便在需要的时候可以找得到,因为很可能这是全网最好的微信小游戏开发系列教程资料了。 这里的教程文章已经帮助过很多人做出了自己的第一款游戏,希望它们还能够继续帮助更多想要做游戏的朋友,进入游戏开发世界的大门。
185 0
|
存储 移动开发 数据可视化
IoT Studio 物联网开发训练营 第三天 云组态进阶开发 | 学习笔记
简介:快速学习 IoT Studio 物联网开发训练营 第三天 云组态进阶开发
478 0
IoT Studio 物联网开发训练营 第三天 云组态进阶开发 | 学习笔记
|
存储 人工智能 运维
我心中的云时代原生开发环境
试想,如果未来的应用开发,开发者通过函数计算、弹性容器服务等能力去承载自己的业务逻辑,存储、数据库、消息等中间件能力通过 Backend as a Service 的方式去获取,即未来使用云计算的开发者能够无需关心云计算的基础底层概念,直接聚焦自己的业务开发,以近乎无感的方式获得云计算的帮助。基于这样的趋势的预判,本文作者开始在云原生的路径上探索,并致力于为云时代的原住民开发者提供一个理想的一站式的开发工作环境:云原生 Serverless 开发者工作平台。
705 0
我心中的云时代原生开发环境
|
Web App开发 Dart JavaScript
无影Flutter for Web技术预研
## 介绍 [Flutter](https://flutter.dev/)是Google推出并[开源](https://github.com/flutter)的跨平台开发框架,它采用Skia渲染并兼容了Android、iOS、Mac、Windows、Linux及Web,Flutter在2.0版本正式发布了对Web的支持 ![](https://ata2-img.oss-cn-zhangjiak
1078 0
无影Flutter for Web技术预研