云开发技巧

简介: 在云开发技巧中,我们将向你介绍:使用云函数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

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
Linux Python Windows
为Python打包创建一个世外桃源,解决打包太大且启动慢的问题
首先是我用的是Anaconda的集成环境,由于Anaconda或者自己搭建的环境里内置了很多库,而且在日常的开发中又安装很多开发所需要的其他库,打包的时候就把很多不必要的模块打包进去,导致打包出来的文件过于臃肿.打开慢由于运行需要加载这些环境,由于加载的库过多导致耗时过长,而且Python是一门解释型语言,本身运行效率上也稍慢,所以能够明显体会到启动时的漫长等待 我们写代码就是为了高效,怎么能受得了打开慢且占资源的东西呢,那如何能解决这个问题呢?
2765 1
|
网络协议 网络架构 数据格式
网络初识:局域网广域网&网络通信基础
网络初识:局域网广域网&网络通信基础
1254 5
|
Java 应用服务中间件 微服务
【Java异常】feign.FeignException: status 400 reading xxx 异常解决方案
【Java异常】feign.FeignException: status 400 reading xxx 异常解决方案
589 0
|
5月前
|
人工智能 自然语言处理 数据挖掘
2026 AI 元年,普通人能抓住哪些机会?
越来越多的人开始把 2026 年称为“AI 元年”。如果说过去几年是大模型技术爆发期,那么接下来几年,很可能是 AI 应用全面进入工作与生活的阶段。 很多人担心被替代,但从历史看,每一次技术浪潮都在淘汰旧岗位的同时,也创造新机会。本文将从趋势、行业变化与现实路径出发,分析普通人真正可以抓住的 AI 机会。
1236 1
|
Python
python打包exe——pyinstaller遇到的那些坑及解决办法
pyinstaller的那些坑 问题一:failed to create process. 问题二:pyinstaller相关参数
4777 0
python打包exe——pyinstaller遇到的那些坑及解决办法
|
4月前
|
存储 缓存 NoSQL
Redis 生产级实战
Redis作为互联网业务的核心内存数据库,其生产环境的稳定性、性能与可扩展性直接决定了业务的可用性上限。多数开发者仅掌握基础的缓存读写操作,一旦面对集群搭建、数据备份、性能瓶颈排查、在线数据迁移等生产级场景,极易出现踩坑、故障甚至数据丢失问题。Redis作为互联网业务的核心基础设施,其生产环境的稳定性与性能直接决定了业务的上限。本文从集群搭建、冷热备份、性能调优、数据迁移四大核心生产场景出发,讲透了底层实现逻辑,提供了全量可落地、零错误的实战方案。
430 4
|
存储 关系型数据库 MySQL
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂
本文详细介绍了在 MySQL 中创建数据库和表的方法。包括安装 MySQL、用命令行和图形化工具创建数据库、选择数据库、创建表(含数据类型介绍与选择建议、案例分析、最佳实践与注意事项)以及查看数据库和表的内容。文章专业、严谨且具可操作性,对数据管理有实际帮助。
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂
|
存储 开发工具 git
GIT LFS是什么
【4月更文挑战第21天】GIT LFS是什么
3669 1
|
移动开发 前端开发 安全
全新版本码支付个人免签支付系统源码 ThinkPHP框架开发 全开源 亲测
码支付[MPAY]是一款便捷收款工具,专注于个人免签收款,通过普通收款码即可实现收款通知自动回调,支持绝大多数商城系统 技术架构:使用thinkphp8框架,PHP版本 > 8.0(推荐8.2),前端UI使用layui 2.9+PearAdmin后台 压缩包内附带挂机APP软件
1024 20

热门文章

最新文章