关于微信公众号/服务号自动回消息问题(python)

天呐!!!!!真的忙活了好久,终于在将近凌晨两点的时候解决了问题。

 

进入正题。

 

是的,没有错,如果你怀疑微信那边给的示例有问题那是对的,至少其给的示例在python3上有问题(我测试是如此哈, python3.9),需要改动一下填充方式,不能按照官方示例去填充,否则最后的AES加密结果会有问题。那么废话不多说,我把我改后的代码附下:

random_str   = self .get_random_str().encode(  "utf-8" )
msg_bytes   = text.encode(  "utf-8" )
msg_len_bytes   = struct.pack(  '>I' ,   len (msg_bytes))

full_str   = (
    random_str   +
    msg_len_bytes   +
    msg_bytes   +
    appid.encode(  "utf-8" )
)

padded_data   = pad(full_str, AES.block_size)

cryptor  = AES.new( self .key,  self .mode,  self .key[: 16 ])
ciphertext  = cryptor.encrypt(padded_data)

其中上面的text为需要向微信返回的内容,类似: "<xml><ToUserName><![CDATA[oia2TjjewbmiOUlr6X-1crbLOvLw]]></ToUserName><FromUserName><![CDATA[gh_7f083739789a]]></FromUserName>........</xml>"

 

 

好的,然后其他的东西(指官方示例)实际上就是encode和decode操作操作(其实也就说明Java的示例理论上来说没问题,虽然我会Java,但我懒得去研究,哈哈哈,python的flask一下就很好上线测试,代码写的也不用这么多(不是     )

 

鸣谢AI帮我把Java的代码快速的转成Python代码,因此最终才解决QWQ

 

 

 

 

 

 

 

好了,结算信息------------------------------->

感谢你阅读我的文章,感恩!

如有其他问题,可以私信我交流    ps:当然,最好是你实在解决不了:)

 

 

posted @ 2025-10-11 02:15  晓星晨曦  阅读(22)  评论(0)    收藏  举报