雲開發如何對外提供回調 URL

在雲開發的使用過程當中,有很多的用戶會提出本身的疑問,我如何才能在本身的雲開發應用中加入一個回調地址?javascript

在實際開發過程當中,很多涉及到支付、訂單等異步操做的場景,會須要提供一個回調 URL,以確保在用戶完成本身的支付過程後,由支付服務器對回調的 URL 發起請求,確認調用成功。所以,很多用戶在使用時提出了本身的疑問,應該如何實現這樣的功能?java

因爲目前雲開發雲函數還沒有對外提供 HTTP 調用的能力,所以,咱們能夠藉助騰訊雲提供的雲函數和 API 網關,來實現相似的功能。數據庫

架構介紹

在進行調用時開發者所設置的回調地址是一個 API 網關的地址,微信支付等服務的服務器在完成操做之後,會執行 HTTP 請求,請求 API 網關。 API 網關對應的是騰訊云云函數,咱們能夠在騰訊云云函數中調用雲開發的 SDK,或者是雲開發的 HTTP API,完成對雲開發數據庫的操做。npm

具體實現

依賴

  • 騰訊雲帳號
  • 小程序的 AppID 和 App Secret

實現

1. 建立雲函數

訪問 console.cloud.tencent.com/ ,使用你的騰訊雲帳號登錄,在頂部菜單欄中找到「雲產品」— 「Serverless」—「雲函數json

在雲函數中,選擇「函數服務」,並在函數服務頁面點擊「新建小程序

建立一個新的雲函數,其中函數名稱根據你的須要填寫api

運行環境選擇 Node.js 8.9,建立方式選擇空白函數,完成後點擊下一步。瀏覽器

在下一頁不須要作修改,直接點擊完成。bash

2. 建立 API 網關調用

在建立完成雲函數之後,咱們會進入到這樣的界面,在這個界面中選擇「觸發方式服務器

在觸發方式頁面新增一個觸發方式,使用 「API 網關觸發」,請求方法選擇「ANY」,發佈環境選擇「發佈」,鑑權方法選擇「免鑑權」。

填寫完成後,點擊保存,而後你會得到一個地址,這個地址就是你後續的回調地址。

你能夠將這個地址在瀏覽器中打開,能夠看到這樣的數據

則說明咱們的雲函數完成了配置。

3. 編寫程序調用

當咱們完成了雲函數的配置之後,接下來咱們能夠修改雲函數,使其完成咱們本身想要的功能。

咱們但願雲函數能夠從外部發來的請求中獲取到參數,並藉助雲開發提供的 API,對雲開發數據庫中的數據進行更新。則咱們能夠這樣操做

咱們在本地新建一個目錄,並在其中執行以下命令(須要你提早安裝了 N ode.js 環境)

cd 新建文件夾
npm init -y
npm install -y got
複製代碼

而後建立一個文件index.js,並在其中加入以下代碼,並設置其中的 APPID、SECRET、ENV_ID 等字段。

'use strict';
const got = require('got');

const APPID = ''; // 小程序 APPID
const SECRET = ''; // 小程序 Secret
const ENV_ID = ''
const TOKEN_URL = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${SECRET}`
const QUERY_URL = 'https://api.weixin.qq.com/tcb/databasecollectionget?access_token='

exports.main_handler = async (event, context, callback) => {
  // 1. 提取參數 能夠從 URL?id=1&status=2 中提取出 1 和 2 
  const id = event.queryString.id;
  const status = event.queryString.status;
  // 2. 獲取 Token,用於後續的調用
  let token_resp = await got(TOKEN_URL);
  let token = JSON.parse(token_resp.body).access_token
  const url = QUERY_URL + token;

  // 執行雲開發命令
  let result = await got(url, {
    method: 'POST',
    json: true,
    headers: {
      'content-type': 'applicaiton/json',
      'accept-encoding':'gzip'
    },
    body: {
      "env": ENV_ID
    }
  })
  return result.body
};
複製代碼

配置完成後,保存文件。

4. 上傳代碼

打包完成後,從新訪問騰訊雲控制檯,找到剛剛建立的雲函數,進入到「函數代碼」中,選擇其中的「本地上傳文件夾」,選擇你剛剛建立的文件夾,等待其自動壓縮完成後,點擊保存上傳。

上傳完成後,會自動進行部署。

你能夠從新訪問剛剛生成的 API 網關地址,並在其後加入 id 和 status 參數,好比個人最後的地址是 https://service-51pn7koc-1251337088.gz.apigw.tencentcs.com/release/myFunction?id=1&status=2

訪問之後,獲得的結果是這樣的

這樣就說明我成功的從雲函數中訪問了雲數據庫,而且經過一個無需鑑權的 API 地址獲取到了信息。

總結

實際上,藉助於 API 網關、雲函數以及雲開發的 API & SDK,你能夠實現很是多的功能,能不能實現,就看你的想象力有沒有達到啦。

相關文章
相關標籤/搜索