SaaS商品自動交付接入騰訊雲市場
為什么需要將SaaS商品自動交付接入騰訊雲市場呢?
騰訊雲官網的解釋是:對於需要將服務端的能力開放給第三方賺取收入的企業、開發者,可通過騰訊雲 API 網關將 API 服務上架至雲市場,從而實現服務端能力的貨幣化。
簡單來說就是將我們SaaS平台提供的服務(比如這里為用戶一鍵生成電商小程序)放到騰訊雲市場,借助於騰訊雲市場這個大平台引入的流量,用戶在里面購買了我們的服務。雲市場使用騰訊雲開放平台( oAuth)作為免登以及賬號打通的解決方案,方便我們(服務商)對接騰訊雲以及購買了我們服務的客戶無縫登錄騰訊雲的服務商控制台(對購買的服務(后面稱為實例)進行操作,包括續費、退款、變更等等)。
關於權限和套餐的問題,在用戶選擇了套餐版本,購買支付后,雲市場會攜帶與訂單相關的字段信息(其中就包括用戶購買的套餐版本,支付金額等等),觸發實例創建通知接口。
一、申請騰訊雲開放平台
為方便免登以及賬號打通,對於接入雲市場SAAS自動發貨的服務商需要首先申請“騰訊雲開放平台”( oAuth)的接入能力。由於騰訊雲暫未開放申請“騰訊雲開放平台”的入口,因此需要先發郵件到mgdloud@tencent.com協助開通,需要提供的信息如下:
1)騰訊雲賬戶賬號ID
2)平台名稱(會展示在授權頁面)
3)平台logo(260*48范圍內,透明底png。會展示在授權頁面)
4)平台官網地址(用戶可以跳轉到第三方平台官網)
5)平台回調地址(去掉http[s]的域名部分,不能只是頂級域名,如可以為: api example.com,而不允許為:example.com)
申請成功后你將會得到如下的信息:
1)appId:第三方平台唯一標識
2)appSecretld/ appSecretKey:用來請求騰訊雲api時的密鑰對
3)encryKey:用來校驗回調地址中帶入的code參數
二、參數設置
1、用公司的賬號登錄騰訊雲-控制台-服務商管理
2、開發配置-SaaS接入設置
說明:這里要配置三個參數
1)發貨URL
雲市場用戶通知服務商的接口URL,說明:必須是https開頭(要保證SSL證書有效),並且不能包含查詢字符串。
比如我這里配置的發貨URL:https://www.test.com/api/tencent/cloud/doit
下圖是doit()方法示例:
2)發貨Token
Token可由開發者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)
3)開放平台APPID
騰訊雲開放平台申請成功后的APPID
3、在線調試
三、騰訊雲開放平台接入說明
為方便服務商對接騰訊雲以及商品購買客戶無縫登陸服務商控制台,雲市場使用了騰訊雲開放平台( oAuth)作為免登以及賬號打通的解決方案。
1、賬號打通
雲市場在發貨通知中加入客戶在騰訊雲的標識 openId(對於不同服務商客戶openId不同),服務商在獲取到openId之后,需要首先去査詢該客戶是否已經跟本地系統某個賬戶綁定,如果已經綁定,則直接處理發貨邏輯,若未綁定,則應該在本地系統生成一個賬號並與 openId綁定。
2、免登校驗
服務商對於發貨的響應數據中應該返回一個authUrl,該url最終會展示給客戶。客戶點擊該url后,服務商應該讓客戶登陸到控制台以進行資源相關操作。服務商授權過程如下:
四、騰訊雲市場發貨接入說明
1、簽名規則
服務商提交接口URL和Token后,雲市場會以URL PARAMS(GET參數)的方式添加到接口URL上,攜帶的參數如下:
2、接入協議規則
3、其它
由於雲市場暫不支持降配退款操作,請在創建商品時務必讓高配規格的價格高於低配規格價格。如后續雲市場支持降配退款會另行通知。
五、騰訊雲開放平台接口
1、授權流程
1)客戶點擊 authUrl(假設為:http://example. com/qcloud/auth)后,若未檢測到用戶登陸,則應該將客戶跳轉(302跳轉)到:
https://www.qcloud.com/open/authorize?scope=login&apid=1234567890128re
directurl=https%3a%2f%2fexample.com%2faPi%2foauth%2Fqcloud%2fcaLlback&state=1234
其中app_id為申請騰訊雲開放平台后獲得的第三方平台唯一標識, redirect_url為提交騰訊雲開放平台的平台回調地址域名。
2、用戶在騰訊雲開放平台頁面進行登錄並且授權
3、頁面跳轉回第三方網站地址 redirect url,並且帶上參數code和 signature,類似:
https/ example. com/api/
oauth/gcloud/callback?code=04f82b0d6fcfcOc2d967d808e6010bd8&signature=eafc9653bd5c17c6ade
其中 signature=md5(code+ encryKey)(因為某些場景下,是騰訊雲直接跳轉到授權頁面,用戶授權后跳轉到第三方地址。此種場景的 state參數不是第三方平台構造,為了防止暴力破解, signature參數對code的合法性做了一個校驗)
注意:該code一次性有效,並且有效期為6分鍾
4、獲取code並且校驗合法之后,調用code校驗接口獲取用戶的以下信息:
1)userOpenld:用戶在該第三方平台下的身份唯一標識(不同第三方平台獲取的標識不同)
2)userOpenld:如果同一個騰訊雲賬戶有多個第三方平台,用戶在這些第三方平台的 userUnionld一致
3)userAccessToken:用戶訪問toke
4)expiresAt:用戶訪問 token過期時間(時間戳,當前時間+2小時)
5)userRefreshToken:刷新token,有效期為60天。其中 useropenId即為用戶在騰訊雲的 openId。
2、code校驗接口
接口url:
https://open.apigcloud.com/v2/index.php?
Action=GetUserAccessToken&Secretld=AKIDQirtkVkUjoiQwHBRIOXt55v0Zx9AQyd9& Nonce=56636&Timestamp=14921370228userAuthCode=735bd6a208f9d70762c1 bc03ad67540b&Signature=gypUUyYIFfvIUZ2DGkccH9rkyEs%3D
接口說明:
請求參數說明:
響應參數規范:
六、發貨接口規范
接口參數說明:
1、token和接口url校驗接口
2、實例創建通知接口
接口名:createlnstance
接口說明:如果實例創建需要消耗很長時間,可以返回{" signEd":"e"},雲市場會在此后會以1分鍾、3分鍾、5分鍾、10分鍾...的頻率循環調用此接口,最大調用時間為1天,如果1天后還是返回{" signId":"0"},則按照創建失敗處理。
請求參數說明:
響應參數規范:
請求示例:
3、實例續費通知接口
4、實例配置變更通知接口
5、實例過期通知接口
6、實例銷毀通知接口
七、雲市場實例操作入口說明
1、實例創建觸發入口
進入騰訊雲市場:https://market.cloud.tencent.com/
雲市場實例創建即為商品購買,客戶購買商品並支付后雲市場會通過實例創建通知接口通知給商品相應服務商。
這里支付后稍等幾分鍾,系統便會自動發貨。將服務商的網站以及免登地址,為用戶創建的賬號都返回給用戶。
說明:購買后的所有商品均以實例(資源)的方式展現展示給客戶。所有購買的實例的入口為:https://console.cloud.tencent con/ servicemarket。之后客戶的操作均為對實例的操作。
在這里可以看到剛才的購買記錄,點擊右邊的管理按鈕可以看到下圖:
2、實例續費/變更觸發入口
1)如果商品有試用版,且客戶購買了試用版,則當客戶從試用版轉為正式版,雲市場會調用對應商品服務商的配置變更接口。
2)如果商品就是正式版,那么點擊續費的按鈕,就會觸發實例續費入口。