1. 程式人生 > >ASP微信公眾平臺介面開發

ASP微信公眾平臺介面開發

微信最近開放第三方API介面,申請地址:http://mp.weixin.qq.com/cgi-bin/callbackprofile?t=wxm-callbackapi&type=info&lang=zh_CN

  從微信公眾平臺開通自定義回覆後,就一直在關注微信介面這一塊,很想用自定義回覆這塊做個站長工具的查詢,例如PR查詢,備案查詢等,輸入網址資訊,就能自動獲取PR,獲取備案資訊,應該是一個不錯的想法。不過以前一直不支援自定義API,只能是一些固定的資訊回覆。最近微信公眾平臺終於開放第三方介面了,也就是說,可以根據使用者提交的資訊,來自定義回覆內容,非常方便。

  站長幫手網官方微信第一時間開通了自定義回覆,大家可以新增站長幫手網微信賬號linkhelper來看看自定義介面的方便性,輸入網址,就能自動回覆網站的PR值。截圖如下:

  看到了微信的自定義第三方介面的強大後,下面我們來講講怎麼實現自定義回覆。

  首先我們進入第三方介面的頁面進行註冊,地址:http://mp.weixin.qq.com/cgi-bin/callbackprofile?t=wxm-callbackapi&type=info&lang=zh_CN

  URL為你以後的微信自定義回覆生成的地址。Token你可以隨便輸,主要是用來校驗當前的資訊是否為微信提交過來的資訊。

  如果你的微信介面頁面沒有做好,提交儲存的時候,會提示:驗證Token失敗。這個錯誤是因為,你的介面頁面還沒有反饋正確的資訊給微信介面。微信在教程方面還做得不夠成熟,就一個PHP示例,還是有問題的,在下篇文章我會講到這個錯誤在哪。微信官方也沒有跟大家說清楚怎麼才能是token驗證成功。下面我將給出示例告訴大家如何通過token驗證。

  譬如:站長幫手網的微信介面頁面是http://wx.linkhelper.cn 預設頁面是default.asp,我們只需要把default.asp的程式碼改為:

  <%

        response.write request("echostr")

       %>

  然後再在官方提交下儲存,提示“驗證token成功”。到此為止,第一步我們完成了介面的申請。

  上面給大家講了如何申請微信公眾平臺自定義介面,這篇文章講通過例項,為大家講述如何實現Hello World的一個簡單的自定義回覆。微信官方不提供ASP程式碼例項。

  微信官方提供的PHP程式碼示例,$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);通過該程式碼可以獲知微信平臺提交過來的資訊是一個XML物件。對應的ASP程式碼的實現是:

set xml_dom = Server.CreateObject("MSXML2.DOMDocument")
xml_dom.load request
FromUserName=xml_dom.getelementsbytagname("FromUserName").item(0).text

  該程式碼可以獲取到提交過來的使用者。其他的接收者,微信內容都可以該方法獲取到。

  這裡交大家一個除錯技巧,因為微信介面程式碼不好除錯,我們可以通過寫檔案的方式,把我們程式碼獲取到的內容寫入一個檔案,以除錯程式碼是否正確。程式碼如下:

filepath=server.mappath(".")&"\wx.txt"
Set fso = Server.CreateObject("scripting.FileSystemObject")
set fopen=fso.OpenTextFile(filepath, 8 ,true)
fopen.writeline(FromUserName)
set fso=nothing
set fopen=Nothing

  最後我們重新組合,並生成對應的XML字串,反饋給微信公眾平臺,使用者就能接受到自定義回覆內容了。相關程式碼如下:

strresponse="<xml>"
strresponse=strresponse&"<ToUserName><![CDATA["&fromusername&"]]></ToUserName>"
strresponse=strresponse&"<FromUserName><![CDATA["&tousername&"]]></FromUserName>"
strresponse=strresponse&"<CreateTime>"&now&"</CreateTime>"
strresponse=strresponse&"<MsgType><![CDATA[text]]></MsgType>"
strresponse=strresponse&"<Content><![CDATA[Hello World]]></Content>"
strresponse=strresponse&"<FuncFlag>0<FuncFlag>"
strresponse=strresponse&"</xml>"
response.write strresponse

  另外請大家注意,ASP檔案需要以UTF-8的格式儲存,包括頁面編碼也要用UTF-8的格式,否則有可能自定義回覆出現亂碼。

至此,我們就完成了ASP微信公眾平臺自定義介面的一個簡單的自定義回覆。下面是應用例項,文章的最後是原始碼程式 

l 微信會員管理系統(利用微信開發最成功的商業大牛)

下面給大家介紹一個微信公眾平臺開發最成功的“大牛神”—--深圳一卡易公司的微信會員管理系統,讓人耳目一新,目前是我看到微信公眾平臺利用最成功的軟體了。下面給大家介紹一下他的功能。讓大家以後做開發的時候能有個很好的思路。

----------------------下面介紹如何體驗微信會員------------------------------

本微信會員連鎖管理系統適合服務行業的會員連鎖軟體。具有給會員發簡訊功能,能連鎖管理店鋪。遠端在家也能管理您的店鋪情況,會員也可以通過智慧手機終端或者微信,檢視自己的會員積分情況,儲值情況,還可以檢視店鋪打折資訊,商品資訊,促銷資訊等,還能遠端下單等等,功能非常強大。

----------------------------------------------------以下是原始碼--------------------------------------------------------

<%@Language="VBScript" CodePage="65001"%> 

<%

'**************注意,以下兩行程式碼是為了通過微信介面驗證的。驗證前,請把註釋,兩個單引號去掉。驗證通過後,把兩行程式碼刪除或者註釋掉。**************

'response.write request("echostr")

'response.end 

'**********注意結束*************

%>

<%

set   xml_dom   =   Server.CreateObject("MSXML2.DOMDocument")     

xml_dom.load request

'strxml=xml_dom.xml

FromUserName=xml_dom.getelementsbytagname("FromUserName").item(0).text '傳送者微信賬號

ToUserName=xml_dom.getelementsbytagname("ToUserName").item(0).text '接收者微信賬號。即我們的公眾平臺賬號。

content=xml_dom.getelementsbytagname("Content").item(0).text '微信內容

strEventType=xml_dom.getelementsbytagname("Event").item(0).text '微信事件

'**************以下程式碼為我們組織一個XML輸出,反饋給微信藉口

strsend="Hello World"

if strEventType="subscribe" then '表示訂閱微信公眾平臺

strsend="Welcome" '定義傳送內容。

end if

strresponse="<xml>"

strresponse=strresponse&"<ToUserName><![CDATA["&fromusername&"]]></ToUserName>"   'tousername是指接受的微信賬號。即前面我們獲取到的傳送者賬號

strresponse=strresponse&"<FromUserName><![CDATA["&tousername&"]]></FromUserName>" 'FromUserName是傳送者賬號,即我們的工種平臺賬號。

strresponse=strresponse&"<CreateTime>"&now&"</CreateTime>"  '時間。

strresponse=strresponse&"<MsgType><![CDATA[text]]></MsgType>"  '傳送型別。text是文字型。具體可以參考微信幫助手冊

strresponse=strresponse&"<Content><![CDATA["&strsend&"]]></Content>" '傳送內容

strresponse=strresponse&"<FuncFlag>0<FuncFlag>"

strresponse=strresponse&"</xml>"

response.write strresponse

'*************輸出結束*******************

'*************注意,以下程式碼只是為了除錯作用的,可以刪除*********************

filepath=server.mappath(".")&"\wx.txt"

Set fso = Server.CreateObject("Scripting.FileSystemObject")

set fopen=fso.OpenTextFile(filepath, 8 ,true)

fopen.writeline(strresponse)

set fso=nothing

set fopen=Nothing

'****************注意結束************************

%>