陳昀++楊鎧銘++孟潔
摘要:為解決教學中多人共享微信公眾賬號進行二次開發的需求,通過掃描帶參數的二維碼區分微信用戶并進行XML數據的轉發,使用PHP開發出一個可供多人同時進行微信二次開發的中轉平臺,滿足教學和企業中多人共享微信公眾賬號進行二次開發的要求。
關鍵詞:微信;公眾賬號;多人二次開發;中轉平臺;PHP
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)01-0128-02
微信是騰訊公司于2011年1月21日推出的一個為智能終端提供即時通訊服務的免費應用程序,微信支持跨通信運營商、跨操作系統平臺通過網絡快速發送免費語音短信、視頻、圖片和文字。因其貼合大眾日常生活需求,程序界面簡單實用,現已成為亞洲地區最大用戶群體的移動即時通訊軟件。微信提供的公眾平臺,讓個人和企業可以打造一個微信的公眾號,可以進行服務、產品推廣,以及和用戶進行互動。
微信公眾平臺是為微信用戶提供服務的平臺,而公眾平臺開發接口則是提供服務的基礎,開發者在公眾平臺網站中創建公眾號、獲取接口權限后,可以通過接口文檔來幫助開發。而微信公眾平臺開發接口的高級功能需要繳納一定費用進行認證后才能得到開通,在微信公眾平臺的二次開發教學環節中,以及在企業的開發流程中都需要能夠讓多人共享一個微信公眾賬號進行二次開發、測試等操作。
通過掃描帶參數的二維碼來區分用戶,并將微信服務器POST過來的用戶XML數據轉發給對應的開發人員,從而實現多個開發人員能同時共享一個微信公眾賬號進行各自對立的開發、測試工作。
圖1 中轉平臺轉發XML數據
1 生成帶參數二維碼
微信公眾平臺提供有生成帶參數二維碼的接口,通過該接口,可以在二維碼中加入開發者ID等參數。如圖2就是一個包含參數1的二維碼,微信用戶掃描該二維碼,并加關注就能觸發微信服務器傳送帶有參數1的XML數據給開發者。
圖2 帶參數1的二維碼
2 建立用戶與開發人員關系
每個開發人員在進行獨立微信公眾賬號二次開發時,需要有一個接收用戶XML數據的服務器地址:developer_url,這個地址可以是內部網絡的服務器地址,也可以是公眾網絡的服務器地址,而且端口不必限定為80,只要能被中轉平臺訪問到即可。該地址專門用來接收處理中轉平臺轉發過來的XML數據。
表1 開發者與微信用戶關系表
微信用戶掃描帶有開發人員ID值的二維碼并加關注,其XML數據中就包含了微信用戶openid和開發人員ID值。實現判斷的PHP代碼如下:
$postStr = file_get_contents("php://input");
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
If(!empty($postObj-> EventKey)){
$developer_id = str_replace('qrscene_', '', $postObj->EventKey);
// 將微信用戶openid($postObj->FromUserName)存入到表1中
// $developer_id對應的行,這樣就建立了微信用戶和開發者的關系。
// 并將接收到的XML數據($postStr)轉發給對應開發者developer_url。
}
}
3 轉發XML數據
微信用戶掃描帶參數的二維碼并加關注后,表中就存儲了微信用戶和開發人員之間的關系,之后中轉平臺就可以根據微信服務器發送過來的XML數據有針對性的進行轉發。
表2 開發者與微信用戶關系表
實現XML數據轉發的PHP代碼如下:
// 判斷openid和哪個開發者有對應關系,將XML數據轉發給對應developer_url。
$options = array(
'http'=>array(
'method' => POST,
'header' => 'Content-type: text/raw\r\n',
'content' => $postStr
));
$context = stream_context_create($options);
$xml = file_get_contents($developer_url, false, $context);
// 將開發者被動響應的XML數據返回給微信服務器。
echo $xml;
4 結論
此中轉平臺在教學上使用以來,解決了教學上多人共享微信公眾賬號進行二次開發、測試的問題。學生們可以在不互相干擾的情況下,獨立對自己的程序接口進行開發、調試。而且此中轉平臺也可以應用到企業的實際開發環境中,解決多開發者共享微信公眾賬號進行二次開發的問題。
本文表格中的實例體現的開發者和微信用戶之間是1對1的關系,通過對中轉平臺程序的改進也可以建立1對多的關系,即一個開發人員對應多個微信用戶,甚至可以實現更復雜的多對多關系。此中轉平臺的機制也同樣可以應用于易信、飛信等公眾賬號的多人共享二次開發。
參考文獻:
[1] 微信 [EB/OL].(2015-03-13).[2015-12-21].http://baike.baidu.com/view/5117297.htm,
[2] 微信公眾平臺開發文檔 [EB/OL]. (2015-03-03).[2015-12-21].http://mp.weixin.qq.com/wiki/,
[3] php:// — Accessing various I/O streams [EB/OL]. (2015-03-16).[2015-12-21].http://php.net/manual/en/wrappers.php.php.