雲開發技巧
在雲開發技巧中,我們將向你介紹:
• 使用雲函數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},即可觸發對應的雲函數執行。
雲調用調用支付接口,並使用雲函數的HTTP觸發路徑做為支付回調Url參數
- 在小程序項目的根目錄執行以下命令安裝 SDK。
npm install @alicloud/mpserverless-sdk --save
2.在 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參數。
3.在小程序端使用雲調用調用支付能力。
//使用雲調用sdk調用支付創建接口
cloud.payment.common.create('iPhoneX', '2020053101122008', '5100.50', '2088xxxxx');
使用雲函數定時觸發實現定時調度任務
1.新建用於定時調度的雲函數,代碼編寫完後上傳部署。
2.調用UpdateFunction接口,通過設置參數TimingTriggerConfig來為雲函數設置定時觸發配置。
TimingTriggerConfig參數的值為一個cron表達式,例如cron:0 0 表示每個整點觸發。配置規則僅支持設置cron表達式。
今日作業
編寫一個定時調度任務雲函數,每週的周1到周5凌晨1點向雲數據庫的daily表中插入一條數據,數據內容如下:
{
"name":"xxxx年x月x日定時調度", //標示插入數據的年月日
"createTime":1590933848348 //標示插入數據的時間戳
}