From 8fd4ff479f3cd68d3acbbf14ad2a96c58b0d3d95 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 8 Sep 2016 11:26:40 +0800 Subject: [PATCH] python3 compatible --- README.md | 2 +- wechat/crypt.py | 7 +++++-- wechat/models.py | 11 ++++++++++- wechat/official.py | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b3149a0..8f41011 100644 --- a/README.md +++ b/README.md @@ -193,7 +193,7 @@ on_xxx函数需要返回一个WxResponse的子类实例。WxResponse的子类及 from flask import Flask app = Flask(__name__) - @app.route('/wechat') + @app.route('/wechat', methods=['GET', 'POST']) def wechat(): app = WxApp() return app.process(request.args, request.data) diff --git a/wechat/crypt.py b/wechat/crypt.py index 283598d..a690008 100644 --- a/wechat/crypt.py +++ b/wechat/crypt.py @@ -10,8 +10,11 @@ import xml.etree.cElementTree as ET import sys import socket -reload(sys) -sys.setdefaultencoding('utf-8') +try: + reload(sys) + sys.setdefaultencoding('utf-8') +except: + pass WXBizMsgCrypt_OK = 0 WXBizMsgCrypt_ValidateSignature_Error = -40001 diff --git a/wechat/models.py b/wechat/models.py index d2a2491..e57aa90 100644 --- a/wechat/models.py +++ b/wechat/models.py @@ -7,6 +7,12 @@ def kv2element(key, value, doc): ele = doc.createElement(key) + + try: # python3 compatible + unicode + except: + unicode = str + if isinstance(value, str) or isinstance(value, unicode): data = doc.createCDATASection(value) ele.appendChild(data) @@ -47,7 +53,10 @@ def __init__(self, xml=None): class WxResponse(object): def __init__(self, request): - self.CreateTime = long(time.time()) + try: + self.CreateTime = long(time.time()) + except: + self.CreateTime = int(time.time()) self.ToUserName = request.FromUserName self.FromUserName = request.ToUserName self.Extra = {} diff --git a/wechat/official.py b/wechat/official.py index 32caf6b..c171977 100644 --- a/wechat/official.py +++ b/wechat/official.py @@ -36,7 +36,7 @@ def is_valid_params(self, params): sign_ele = [self.token, timestamp, nonce] sign_ele.sort() - if(signature == sha1(''.join(sign_ele)).hexdigest()): + if(signature == sha1(''.join(sign_ele).encode('utf-8')).hexdigest()): return True, echostr else: return None