隨着移動互聯網時代的來臨,微信已經成為移動互聯網移動端的主要入口,現在很多的大型企業都有自己的微信服務號,如:銀行業有自己的微銀行,基金公司的公眾服務號。通過微信入口可以方便快速的實現企業提供的服務。
如:上圖招商銀行的公眾服務號,上面的功能的實現是依據“微信”提供的接口開發規范完成的,由於“微信”是運行在互聯網上的,本章節開始我們將結合前面章節發布的新浪“雲”服務來實現微信公眾號的一些功能實例。
20.1. 搭建開發環境
微信公眾號的注冊請參網上相關資料,如參考《微信公眾平台入門到精通》
20.1.1. 用管理員登陸微信公眾平台
開發者中心->服務器配置->修改配置,我們修改結果如下圖:
現在我們點擊提交按鈕,“微信”會提示token驗證失敗的錯誤提示,根據”微信”SDK要求,我們首先要實現一個提供給”微信”服務器的握手請求服務,以便”微信”服務器來校驗我們的服務器是否響應。
20.1.2. 根據配置我們需要實現wechat的url
這里我們在工程中新建一個叫wechat的APP來專門處理與”微信”請求的交互服務,一如前面說的面向對象里的功能內聚的原則。
接下來我們先在wechat的views.py里增加代碼如下:
from django.template import RequestContext
from django.views.decorators.csrf import csrf_exempt
import time
import hashlib TOKEN = "mysaesite" #必須與微信Token一致
@csrf_exempt defwechat(request): if request.method == 'GET': response = HttpResponse(checkSignature(request),content_type="text/plain") return response else: return None def checkSignature(request): global TOKEN signature = request.GET.get("signature", None) timestamp = request.GET.get("timestamp", None) nonce = request.GET.get("nonce", None) echoStr = request.GET.get("echostr",None) token = TOKEN tmpList = [token,timestamp,nonce] tmpList.sort() tmpstr = "%s%s%s" % tuple(tmpList) tmpstr = hashlib.sha1(tmpstr).hexdigest() if tmpstr == signature: return echoStr else: return None
然后,我們修改mysite的urls.py增加wechat url服務。
""" Definition of urls for mysite. """ from django.conf.urls import patterns, include, url # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin.autodiscover() from inventory import views import wechat.views urlpatterns = patterns('', # Examples: # url(r'^$', 'mysite.views.home', name='home'), # url(r'^mysite/', include('mysite.mysite.urls')), # Uncomment the admin/doc line below to enable admin documentation: # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: # url(r'^admin/', include(admin.site.urls)), url(r'^AddInStockBill/$', views.AddInStockBill), url(r'^AddItem/$', views.AddItem), url(r'^success/$', views.success), url(r'^search/$',views.search), url(r'^inventoryQuery/$',views.inventoryQuery), url(r'^getInventoryByItemName/$',views.getInventoryByItemName), url(r'^inventoryQueryExtjs/$',views.inventoryQueryExtjs), url(r'^inventoryQueryBootstrap/$',views.inventoryQueryBootstrap), url(r'^wechat/$',wechat.views.wechat), )
接下來,我們把urls.py文件和wechat app 目錄和文件更新到新浪雲上,我們就可以訪問wechat了,訪問結果如下圖:
現在,我們點擊剛才開發中心修改配置界面的提交按鈕,微信驗證服務通過,如下圖。
20.1.3. 代碼注釋
checkSignature函數功能就是確認GET請求是否來自“微信”服務器,如果請求來至微信服務器,原樣返回echoStr數據則接入生效,否則接入失敗
20.2. 小結
現在我們完成了我們的開發的web服務在微信開發中心的配置,下一章節我們將通過簡單例子來說明如何進行微信公眾服務號的開發。