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:如有錯誤,請留言,我會及時糾正。

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