微信公眾號開發-遇到的坑
阿新 • • 發佈:2018-05-16
.py 自己 ash sel 80端口 map __main__ src ***
在配置後端服務器時,報錯 "系統發生錯誤,請稍後重試"
情景:配置如下截圖:
按照要求使用http標準80端口,但是提交就報錯。在服務端抓包,根本沒收到請求。那這個報錯就是微信公眾平臺沒有發送過來呀。
折騰了半個小時!
我去,發現不能在url中指定80端口,就可以成功,如下圖:
這樣不指定端口才正確。微信說明還是不是很明確
在handle模塊,實例代碼是py2代碼,py3中要進行編碼轉換
- 微信開發文檔的代碼,在py3中執行會一直報token驗證錯誤。
# -*- coding: utf-8 -*- # filename: handle.py import hashlib import web class Handle(object): def GET(self): try: data = web.input() if len(data) == 0: return "hello, this is handle view" signature = data.signature timestamp = data.timestamp nonce = data.nonce echostr = data.echostr token = "xxxx" #請按照公眾平臺官網\基本配置中信息填寫 list = [token, timestamp, nonce] list.sort() sha1 = hashlib.sha1() map(sha1.update, list) # 這裏list中的字符串在py2中是符合sha1.update要求的 hashcode = sha1.hexdigest() print "handle/GET func: hashcode, signature: ", hashcode, signature if hashcode == signature: return echostr else: return "" except Exception, Argument: return Argument
- py3修改後的
""" handle.py """ import hashlib import web class Handle(object): def GET(self): try: data = web.input() if len(data) == 0: return "hello, this is handle view" signature = data.signature timestamp = data.timestamp nonce = data.nonce echostr = data.echostr token = "****" # 自己定義的tokent list = [token, timestamp, nonce] list.sort() sha1 = hashlib.sha1() sha1.update(‘‘.join(list).encode(‘utf-8‘)) # 將py3中的字符串編碼為bytes類型 hashcode = sha1.hexdigest() print("handle/GET func: hashcode, signature:", hashcode, signature) if hashcode == signature: return echostr else: return "" except Exception as e: print(e) if __name__ == ‘__main__‘: pass
微信公眾號開發-遇到的坑