天天看點

雲開發技巧

雲開發技巧

在雲開發技巧中,我們将向你介紹:

• 使用雲函數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參數

  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觸發路徑
});           

其中每次調用

都會觸發雲函數的HTTP觸發路徑發生變化,發生變化之後務必記得更改雲調用SDK初始化裡的notify參數。

  1. 在小程式端使用雲調用調用支付能力。
//使用雲調用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);
})           

課程作業

支付寶掃碼登陸官方小程式【小程式雲開發助手】,在 學習 > 訓練營打卡作業 > 雲開發技巧 中送出作業。

雲開發技巧