爲尋找國內免費雲資源做爲微信後臺,花了一天時間試用SinaAppEngine(SAE),調試太不方便用戶體驗差。新浪做爲媒體公司技術功底經不起考驗,亞馬遜能推出AWS,新浪還不行!更好選項是百度BaiduAppEngine(BAE),但最近盡然開始收費,仍是安心回到force.com,至少老外承諾免費的東西一直免費且可靠。html
第一步,申請force.com帳號,請至developer.force.com申請,如是www.salesforce.com申請下來的是做爲客戶的帳號,不適合開發人員;第二步,建立一個Apex Rest Class,來做爲微信服務接口,這裏建立的類是WeChatRestController,Rest接口名稱是WeChatRest:算法
@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; } }
在微信中咱們將使用這個接口來配置URL,配置時騰訊要求提供此URL,配置窗口以下:安全
補充說明,本文發表後騰訊又推出了「消息加解密密鑰」,其支持明文模式、兼容模式和安全模式三種,主要區別在於明文模式下騰訊推送給接口的是明文的XML消息,兼容模式下是既有明文XML消息也有加密後的XML消息,安全模式則只有加密後的XML消息,覺得用戶提供更高級的安全支持,簡化你們的學習曲線,本文及之後的全部相關文章均採用明文模式。微信
騰訊將經過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:app
http://johnson0001-developer-edition.ap1.force.com
建立成功後下一步建立站點,點擊New按鈕:學習
在接下來的站點信息輸入畫面輸入Site label,Site Name,選擇任一頁面做爲「Active Site Home Page」(這裏不須要建網頁,任意選便可),保持其餘選項不變,點擊「save」按鈕:加密
在緊接下來的畫面裏點擊「Public Access Settings」按鈕,url
在接下來的畫面裏找到「Enable Apex Class Access」,點擊Edit按鈕spa
將WeChatRestController類添加到右邊的列表裏,這將使得該類支持匿名公開訪問:debug
最後回到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的值,