雲開發技巧
在雲開發技巧中,我們将向你介紹:
• 使用雲函數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}
,即可觸發對應的雲函數執行。
• 介紹兩種調用
和
的方式,一種是在阿裡雲的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參數
- 在小程式項目的根目錄執行以下指令安裝 SDK。
npm install @alicloud/mpserverless-sdk --save
- 在 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觸發路徑
});
其中每次調用
都會觸發雲函數的HTTP觸發路徑發生變化,發生變化之後務必記得更改雲調用SDK初始化裡的notify參數。
- 在小程式端使用雲調用調用支付能力。
//使用雲調用sdk調用支付建立接口
cloud.payment.common.create('iPhoneX', '2020053101122008', '5100.50', '2088xxxxx');
使用雲函數定時觸發實作定時排程任務
1.建立用于定時排程的雲函數,代碼編寫完後上傳部署。
2.調用
接口,通過設定參數TimingTriggerConfig來為雲函數設定定時觸發配置。
TimingTriggerConfig參數的值為一個cron表達式,例如
cron:0 0 * * * *
表示每個整點觸發。配置規則僅支援設定cron表達式。
3.
接口的調用方式同樣有兩種,一種是在阿裡雲的API線上調試界面
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);
})
課程作業
支付寶掃碼登陸官方小程式【小程式雲開發助手】,在 學習 > 訓練營打卡作業 > 雲開發技巧 中送出作業。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iZjlTZ4ATNkNTN1EzMmFWYjZmY0YjMxEDZxUzYkFTNy8CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)