周功建
摘 要:從微信公眾號的開放應用入手,分析了基于公眾號訂餐平臺系統(tǒng)的基本邏輯結構和前后臺功能模塊;詳述了微信自定義菜單的設置和創(chuàng)建、消息的接收和發(fā)送、圖文消息的后臺管理與動態(tài)更新等功能模塊的實現(xiàn)方法;對系統(tǒng)進行了效益評估,印證了微信訂餐的可行性及商業(yè)價值。
關鍵詞關鍵詞:微信訂餐; 微信公眾平臺; PHP;開發(fā)模式
DOIDOI:10.11907/rjdk.161155
中圖分類號:TP319
文獻標識碼:A 文章編號:1672-7800(2016)008-0074-03
0 引言
微信公眾平臺是騰訊公司在微信的基礎上新增的開放功能模塊,用于實現(xiàn)微信與第三方平臺的對接,提供內容更加豐富、功能更加全面的平臺服務,相當于一個輕量級的開放App[1];開發(fā)者可以基于開放的數(shù)據(jù)接口進行一些應用開發(fā),依托微信擴展商業(yè)應用。借助微信公眾號的多媒體消息群發(fā)功能,可將企業(yè)營銷推廣活動或廣告直接送達到關注用戶手機,從而精準定位營銷,具有開發(fā)簡單、便捷、費用低等特點,應用前景非常廣闊[1]。
1 系統(tǒng)分析
本系統(tǒng)在功能上繼承了傳統(tǒng)PC端的大部分功能,通過與微信公眾號綁定,結合電話訂餐和手機APP的靈活性,商家可以在微信公眾平臺上建立網上餐廳,消費者只需關注微信公眾帳號[5]即可瀏覽某地域范圍內眾多商家網上餐廳的菜品信息,輕松完成下單;系統(tǒng)通過微信公眾賬號的群發(fā)功能,為活動商家推送圖文促銷信息,實現(xiàn)精準營銷。
2 系統(tǒng)設計
2.1 系統(tǒng)邏輯結構
本系統(tǒng)采用典型的C/S網絡架構,由客戶端微信、微信公眾號、開發(fā)者服務器、數(shù)據(jù)庫服務器4部分組成。正常工作時,微信公眾號相當于一個消息轉發(fā)器,微信用戶通過手機、平板等終端發(fā)送請求給微信公眾號,微信公眾號收到用戶請求后將其組裝成XML 格式的數(shù)據(jù),通過POST 方式提交給開發(fā)者服務器[3];開發(fā)者服務器獲取請求后從數(shù)據(jù)庫中提取數(shù)據(jù)并響應給微信公眾號,微信公眾號再將數(shù)據(jù)響應給用戶,從而完成訂餐,如圖1所示。
(1)微信公眾號:作為引流的數(shù)據(jù)入口,一方面為關注用戶提供一個瀏覽界面和訂餐菜單,實現(xiàn)用戶通過移動微信端選擇餐廳、瀏覽菜品、下單;另一方面為商家用戶提供一個在線餐廳展示界面,接受用戶瀏覽和訂餐,并群發(fā)推送促銷信息,實現(xiàn)精準營銷。
(2)開發(fā)者服務器:所有業(yè)務處理模塊全在此實現(xiàn),是整體應用系統(tǒng)建設的基礎保障。一方面接收并處理用戶請求,為用戶提供在線注冊、登陸、購買、下單等功能;另一方面為商家提供管理后臺,在PC端以網頁形式展現(xiàn),包括添加和刪減食物、處理訂單、對注冊用戶進行分組管理、對后臺數(shù)據(jù)庫進行修改和維護等。
(3)數(shù)據(jù)庫服務器:用于存儲各種數(shù)據(jù),如訂單記錄、菜品類型和價格、會員信息、商家信息、配送信息等。
2.2 系統(tǒng)功能模塊設計
2.2.1 前臺顯示功能模塊
前臺顯示功能模塊如圖2所示。
(1)最新美食:按時間順序推薦,展示銷量最高、最新、最熱門等美食,按美食種類分類查看。
(2)用戶中心:主要用于用戶注冊和登錄,可在線修改個人資料,對已訂餐店家進行留言和評論等。
(3)購物車:用戶登錄后,對感興趣美食進行查詢、下單購買。
(4)訂單查詢:用戶登錄后,可查詢已生成的訂單配送及成交情況。
(5)商家加盟:與有意向入駐平臺的商家進行洽談和聯(lián)系。
2.2.2 后臺處理功能模塊
后臺業(yè)務處理功能模塊如圖3所示。
(1)統(tǒng)計功能:統(tǒng)計顯示在某個時間段的營業(yè)額、訂單數(shù)量、顧客數(shù)量、商品銷量額、配送員配送數(shù)量、訪問量。
(2)訂單管理:對未處理訂單、已確認訂單、成功訂單、失敗訂單、已取消訂單查看管理。
(3)店鋪管理:建立店鋪、管理店鋪,對營業(yè)狀態(tài)、配送、店鋪營銷進行管理,訂單提醒管理、商品狀態(tài)管理。
(4)客戶管理:詳細顯示顧客個人信息、積分、充值記錄、累計消費金額等功能;會員設置、會員充值、升級會員、退款、凍結會員等功能;惡意下單顧客移至黑名單功能。
(5)交流回復:顧客消費成功后可對店鋪進行評論打分,商家收到留言評論等信息并及時回復。自動回復功能可編輯關鍵詞、非關鍵詞、圖文素材、鏈接第三方接口。
(6)在線支付:支持會員在線充值、顧客在線付款。主要通過財付通和支付寶的支付端口支付。
(7)應用添加:添加快遞查詢、城市天氣、火車票查詢等應用功能。
(8)營銷推廣:可設置優(yōu)惠券、大轉盤抽獎、簽到和積分等營銷功能。
3 系統(tǒng)實現(xiàn)
3.1 開發(fā)環(huán)境
為了和微信公眾平臺的開放接口對接,采用Apache+Php+Mysql+Linux搭建開發(fā)者服務器, 用PHP5.5 Zend Studio開發(fā)業(yè)務模塊、 MySQL5.5進行數(shù)據(jù)存儲。商家后臺管理需要IE 6.0及以上版本,用戶手機端需要微信6.0及以上版本。
啟用微信公眾平臺的開發(fā)者模式,首先登陸微信公眾平臺進行開發(fā)者服務器網址接入,接入后在開發(fā)者服務器上進行功能實現(xiàn)。
3.2 數(shù)據(jù)庫設計
結合系統(tǒng)分析和功能模塊實際,建立wxShop 數(shù)據(jù)庫,內部主要數(shù)據(jù)見表1。
3.3 微信自定義菜單創(chuàng)建
平臺是對微信公眾號的二次開發(fā)實現(xiàn)。采用POST請求方式(使用https協(xié)議)連接到接口地址:https ://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN ,向微信服務器獲得菜單接口[2]。Access_token對應公眾號是全局唯一的票據(jù),有效期是7200s,官方限制每日調用限額2000次。通過POST的特定結構體,實現(xiàn)在微信客戶端創(chuàng)建自定義菜單,POST 的菜單數(shù)據(jù)為JSON 格式,具體過程詳見官方開發(fā)者文檔。
3.4 微信消息的接收和回復
微信目前支持圖片消息、語音消息、文本消息、視頻消息、鏈接消息、地理位置消息等6種。當用戶向公眾號發(fā)送消息時,微信服務器可自動識別消息種類,將消息按不同的格式包裝成不同的XML數(shù)據(jù)包POST到開發(fā)者服務器上[4]。以圖文消息$ newsTpl模板格式舉例如下:
$newsTpl ="< xml >
< ToUserName > <! [CDATA[% s]] > < /ToUserName >
< FromUserName > <! [CDATA[% s]] > < /FromUserName >
< CreateTime > %s < /CreateTime >
< MsgType > <! [CDATA[news]] > < /MsgType >
< ArticleCount > 1 < /ArticleCount >
< Articles >
< item >
< Title > <! [CDATA[%s]] > < /Title >
< Description > <! [CDATA[% s]] > < /Description >
< PicUrl > <! [CDATA[%s]] > < /PicUrl >
< Url > <! [CDATA[%s]] > < /Url >
< /item >< /xml >"
微信官方提供了基于PHP的接口實現(xiàn)方案,程序員可根據(jù)需要實現(xiàn)消息接口代碼,具體步驟如下:
(1) 接收微信服務器POST的數(shù)據(jù):
$postStr = $GLOBALS["HTTP_RAW_POST_DATA" ];
(2)將$ postStr 載入到對象里:
$ postObj = simplexml_load_string( $ postStr,'SimpleXMLElement',LIBXML_NOCDATA)。
(3)獲取消息:
$from Username = $postObj->From UserName; / /獲取發(fā)送者賬號信息
$toUsername = $postObj->ToUserName; / /獲取開發(fā)者賬號信息
$type = $postObj->MsgType; / /獲取消息類型
$customevent = $postObj->Event; / /獲取事件類型
$keyword = $postObj->Content; / /獲取文本消息內容
開發(fā)者服務器獲取到消息后,可根據(jù)消息類型分發(fā)給不同的功能模塊處理,將結果重新封裝成XML數(shù)據(jù)包格式,通過調用封裝好的消息發(fā)送sendMsg 返回給微信服務器,由微信服務器解析XML數(shù)據(jù)返回給用戶瀏覽。
3.5 圖文消息動態(tài)更新
圖文消息動態(tài)更新的重難點在于圖片的保存和讀取。管理員通過微信公眾號后臺管理界面增加新的圖文消息時,如果有新的圖片上傳,被上傳的圖片url和消息內容將保存到數(shù)據(jù)庫wxshop_news表的content字段中[3]。微信APP前端在讀取遍歷數(shù)據(jù)庫時,需要通過正則表達式從content字段中將圖片url 分離出來。圖文消息動態(tài)更新的關鍵代碼如下:
$result = $mysqli->query( " select id, title,description,content from wxshop_news where pid = 7 orderby id desc limit 1" ) ;
//按id 倒序查詢pid 為7 的最新1 條消息的結果集
$rows = $result->fetch_assoc( ) ; //從結果集中獲取數(shù)據(jù)賦給數(shù)組$ rows
if( preg_match( '/ < img. * src \ s* = \ s* [\ " | \']? \\s* ( [^ > \ " \ '\ s]* ) /i ',$ rows['content '],$ picArr) )
{$ picUrl = str _replace ( array ( " "; " ," '; " ) ,array( " \" " ," '" ) ,$ picArr[0]) ;
$ title = $ rows['title'];$ des = $ rows['description'];$ url = " http://localhost/weixin/index.php/news/detail/id/{ $ rows['id']} " ;}
$ resultStr = sprintf ( $ newsTpl,$ fromUsername, $ toUsername, $ time, $ title,$ des,$ picUrl,$ url) ;
echo $ resultStr
以上代碼可實現(xiàn)1條消息的動態(tài)更新,如需要實現(xiàn)最新幾條消息的動態(tài)更新,只需要在查詢數(shù)據(jù)庫時通過修改limit限制記錄數(shù)重新遍歷結果集即可,在此不再贅述。
4 系統(tǒng)效益評估
系統(tǒng)從消費者自助點擊屏幕下單到商家接收訂單都是全自動對接,有效改善了消費者點餐體驗,節(jié)省了開支,有良好的市場前景,具體體現(xiàn)在:①微信信息訂閱,消息推送及時,增加了店家和平臺的知名度;②改善了餐飲商家的銷售方式和渠道,降低了營銷資源成本;③能為商家留住固有消費者、吸引新進消費者,增加平臺和店家的營售收入;④充分滿足了用戶的訂餐需求,方便快捷的特點提高了消費者的忠誠度;⑤促進了信息資源的整合,提高了訂單的處理效率,降低了店家和消費者的時間成本。
5 結語
本文介紹了基于微信公眾號訂餐系統(tǒng)的基本邏輯結構和前后臺功能板塊、系統(tǒng)關鍵技術,對系統(tǒng)運營進行了效益評估。系統(tǒng)屬于B2C中的經紀人模式,通過收取成交訂單中介費用的方式實現(xiàn)盈利,也可以看作是O2O模式的應用。送餐(物流)由商家自行解決,平臺只負責訂餐功能的實現(xiàn)、更新、升級及售后服務質量監(jiān)控。
通過實際運營發(fā)現(xiàn)系統(tǒng)仍有需完善的地方,主要是安全性問題。目前系統(tǒng)安全是通過一些控制語句去驗證要登陸的用戶身份,沒有對網絡中的數(shù)據(jù)進行加密,這樣就不能對數(shù)據(jù)在傳輸過程中被攻擊或者篡改進行有效防御,因此需要增加高級的安全技術來實現(xiàn)這些功能。只有不斷完善網上訂餐系統(tǒng)功能,才能讓所有客戶在一個互相信任和安全的環(huán)境中享受到訂餐的樂趣。
參考文獻:
[1] 騰訊公布2014 年第二季度及中期業(yè)績[EB/OL].http://tech.qq.com/a/20140813/058951.htm,2014-08-13.
[2] 微信公眾平臺開發(fā)者文檔. 自定義菜單創(chuàng)建接口[EB/OL].http://mp.weixin.qq.com/wiki/index.php?title=自定義菜單創(chuàng)建接口, 2014-08- 11.
[3] 易偉. 微信公眾平臺服務號開發(fā):揭秘九大高級接口[M]. 北京:機械工業(yè)出版社,2014.
[4] 夏凌云,韓立峰,王長慶. 利用微信公眾平臺打造校園信息移動發(fā)布平臺[J]. 信息技術,2014(2):183-185.
[5] 方倍工作室. 微信公眾平臺開發(fā)最佳實踐[M].北京:機械工業(yè)出版社,2014.
(責任編輯:杜能鋼)