Force.com - 微信接口后台開發與配置
為尋找國內免費雲資源作為微信后台,花了一天時間試用SinaAppEngine(SAE),調試太不方便用戶體驗差。新浪作為媒體公司技術功底經不起考驗,亞馬遜能推出AWS,新浪還不行!更好選項是百度BaiduAppEngine(BAE),但最近盡然開始收費,還是安心回到force.com,至少老外承諾免費的東西一直免費且可靠。
第一步,申請force.com賬號,請至developer.force.com申請,如是www.salesforce.com申請下來的是作為客戶的賬號,不適合開發人員;第二步,創建一個Apex Rest Class,來作為微信服務接口,這里創建的類是WeChatRestController,Rest接口名稱是WeChatRest:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
@RestResource(urlMapping=
'/WeChatRest/*'
)
global with sharing
class
WeChatRestController{
@HttpGet
global
static
void
doGet(){
String signature = RestContext.request.
params
.
get
(
'signature'
);
String timestamp = RestContext.request.
params
.
get
(
'timestamp'
);
String nonce = RestContext.request.
params
.
get
(
'nonce'
);
String echostr = RestContext.request.
params
.
get
(
'echostr'
);
System.debug(echostr +
' - '
+ timestamp);
RestContext.response.addHeader(
'Content-Type'
,
'text/plain'
);
RestContext.response.responseBody = Blob.valueOf(echostr);
//return echostr;
}
}
|
1
|
|
在微信中我們將使用這個接口來配置URL,配置時騰訊要求提供此URL,配置窗口如下:
騰訊將通過Get方式發送四個參數至此URL,URL格式如下(僅為示例):https://msd-developer-edition.ap1.force.com/services/apexrest/WeChatRest?signature=GenePoint&echostr=test×tamp=111&nonce=222如果URL返回的值和四個參數中的echostr值一致則騰訊認為驗證成功,如果不一致則認為驗證失敗,配置無法繼續,偷懶的方法是直接返回該值即可,風險是你的URL也可以被其他人亂用。這里的echostr的值實際上是根據用戶在騰訊后台配置的Token加上時間戳,再加上nonce參數的值按照一定的算法計算出來的,具體算法參照附注,這里不贅述。代碼需要說明的地方是如果直接返回echostr,force.com默認會是一個xml結構的內容,騰訊會認為和echostr值不等,判斷為配置失敗。為此,需要通過Blog.valueOf方法來將其直接轉換為文本信息。第三步,配置Site.com以啟用公網訪問此URLforce.com類以及網頁等默認是需要用戶驗證后才能通過訪問,但我們可以通過site.com啟用公網訪問此URL,為此首先需要創建域名,進入Develop->Sites,輸入想創建的域名,例如筆者的域名為johnson0001:
http://johnson0001-developer-edition.ap1.force.com
創建成功后下一步創建站點,點擊New按鈕:
在接下來的站點信息輸入畫面輸入Site label,Site Name,選擇任一頁面作為“Active Site Home Page”(這里不需要建網頁,任意選即可),保持其他選項不變,點擊“save”按鈕:
在緊接下來的畫面里點擊“Public Access Settings”按鈕,
在接下來的畫面里找到“Enable Apex Class Access”,點擊Edit按鈕
將WeChatRestController類添加到右邊的列表里,這將使得該類支持匿名公開訪問:
最后回到Sites首頁,點擊“Activate”按鈕激活站點,此時既可以通過以下URL訪問我們開發的接口(留意可能需要等幾分鍾URL才會生效):
https://johnson0001-developer-edition.ap1.force.com/services/apexrest/WeChatRest
第四步,配置騰訊后台,在開發模式下,輸入此URL,並輸入任意Token,點擊提交按鈕,如騰訊提示成功則表明成功完成配置:
附注:驗證URL Echostr算法:1. 將Token(用戶在騰訊后台配置的值), 時間戳(騰訊請求URL時傳過來的timestamp值),nonce(騰訊請求URL時傳過來的nonce值)按照字母順序進行排列;2. 排列好后拼接成一個字符串;3.通過sha1算法轉換此字符串后的結果如果正常就是echostr的值,