服务器能收到消息。 提示hashcode 和 signature不想等。是加密算法的问题么?
服务器信息:
接口信息:
程序:
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
print("signature ",signature)
print("timestamp ",timestamp)
print("nonce ",nonce)
print("echostr ",echostr)
token = "dong"
list = [token, timestamp, nonce]
list.sort()
sha1 = hashlib.sha1()
map(sha1.update, list)
hashcode = sha1.hexdigest()
#print("hanle/GET func:hashcode,signature: "%(hashcode,signature))
#print "handle/GET func: hashcode, signature: ", hashcode, signature
if hashcode == signature:
return echostr
else:
print("not equal,hashcode=%s,signature=%s"%(hashcode,signature))
return ""
except Exception as e:
print("exception current:",e)
return ""
------------------------------------------------------------------------------------------------
已经暂时解决:
首先,我将域名直接换成了ip地址
此时,还是不能验证通过,服务器上依旧提示,hashcode和signature不相等。
然后,我强制返回echostr
就配置成功了。
如果不将域名改成ip地址,直接返回echostr也是不能成功
域名状态在审核中,不知道这个有什么影响?
已经尝试强制返回echostr,还是验证失败
sha1.update(list[0].encode('utf-8'))
sha1.update(list[1].encode('utf-8'))
sha1.update(list[2].encode('utf-8'))