微信服務器接入流程
1. 創建django項目,創建app,創建wechat路由
2. 寫路由對應的視圖函數,不能使用csrf_token驗證,兩種方式:
1)取消該項目所有視圖函數csrf_token的驗證
2)使用@csrf_exemp修飾器修飾該函數
3. 如果需要使用到數據庫,後臺管理等,需要將數據庫連接配置好,收集後臺使用的靜態文件,上傳項目至自己服務器
4. 將服務器的nginx默認80端口改爲其他端口
修改nginx默認端口
1.進入cd /etc/nginx/sites-enabled
2.編輯default文件 vim default
5. 將該項目部署到服務器的80或者443端口,參考之前講的django項目部署,保證在瀏覽器中可以正常訪問該項目
6. 微信開發的基本配置
7. 填寫配置
url填寫:http://服務器外網IP:端口號/wechat 例如:http://116.122.112.48/wechat http的端口號固定使用80,不可填寫其他。
Token:自主設置,這個token用於驗證開發者服務器。
8. 修改後臺視圖函數wechat的代碼
# 定義一個用於驗證微信請求的處理函數
def checkSignature(request):
# 全局變量
global TOKEN
# 捕獲異常
try:
# 從request中提取參數
signature = request.GET['signature']
echostr = request.GET['echostr']
timestamp = request.GET['timestamp']
nonce = request.GET['nonce']
# 1.將token、timestamp、nonce三個參數進行字典序排序
tmpList = [TOKEN,timestamp,nonce]
tmpList.sort()
# 2.將三個參數字符串拼接成一個字符串進行sha1加密
tmpstr = '%s%s%s'%tuple(tmpList)
tmpstr = hashlib.sha1(tmpstr).hexdigest()
# 3.開發者獲得加密後的字符串可與signature對比,標識該請求來源於微信
if tmpstr == signature:
# 返回隨機字符串
return echostr
except:
# 返回None表示驗證失敗
return None
在wechat視圖函數中調用該函數,將request作爲參數傳入
@csrf_exempt
def wechat(request):
# 判斷請求類型
if request.method == 'GET':
# 執行驗證函數
result = checkSignature(request)
return HttpResponse(result,content_type='text/plain')
Ps: 重新在服務器中運行項目
9. 在微信基本配置中,提交配置信息,如果出現提交成功,表示連接成功