python3.6微信公众号开发-配置api接入流程

接入流程很简单,我这边使用tornado实现的

微信服务器会请求你的接口,附带4个参数,分别是 timestamp、nonce、signature、echostr

我们将自己输入的token(验证接口的时候你自己输入的)、timestamp、nonce放入一个列表中并sort()下,接下来拼接成字符串,使用hashlib.sha1()把拼接的字符串加密下,在跟signature这个字段的值进行比较,一致后原样将echostr返回即可,如果想要省事就不用做这些验证的流程了,直接将ehcostr返回即可。上代码.....

from tornado.web import RequestHandler


class BaseHander(RequestHandler):

    def __init__(self, application, request, **kwargs):
        super().__init__(application, request, **kwargs)

    def args_to_dict(self):
        data = dict()
        if self.request.body.decode():
            try:
                data.update(json.loads(self.request.body.decode()))
            except json.decoder.JSONDecodeError:
                for i in self.request.body.decode().split('&'):
                    k = i.split('=')[0]
                    v = i.split('=')[1].decode()
                    data[k] = v
            except Exception as e:
                self.write(ReturnMsg.Server_Inner_Error['resMsg'])
        elif self.request.arguments:
            for k in self.request.arguments:
                data[k] = self.get_argument(k)
            return data
        else:
            return data
        return data


class authentiCation(BaseHander):
    def get(self, *args, **kwargs):
        data = self.args_to_dict()
        import hashlib
        token = 'lsxboy'
        timestamp = data['timestamp']
        nonce = data['nonce']
        signature = data['signature']
        echostr = data['echostr']
        resu = [token, timestamp, nonce]
        resu.sort()
        re = ''.join(resu)
        sha = hashlib.sha1(re.encode('utf-8'))
        re = sha.hexdigest()
        if re == signature:
            return self.write(echostr)

 

ps:如有错误,请留言,我会及时纠正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章