该公众号提供的服务出现故障,请稍后再试

一、问题描述

在微信公众号后台配置好接口配置信息后,以为就万事大吉了,开发的过程中遇到了一个“该公众号提供的服务出现故障,请稍后再试”错误,觉得挺奇怪,但未引起足够重视。直至QA在测试过程中发现该错误,才发现是代码的bug。


image.png

二、解决方案

在寻找问题之前,大脑中先有了一个猜想:既然需要接收并处理微信发送过来的回调消息,那十有八九是接口返回给微信的消息不正确。基于此,在微信开者文档中找到了证据:

微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。详情请见“发送消息-被动回复消息”。

代码是python写的,在处理完消息后,返回了一个None值,下面是错误的写法:

class WeChatWebHook(ApiView):

    def post(self, request, *args, **kwargs):
        # 省略接收到微信回调消息后的业务逻辑处理过程
        return HttpResponse(None)

改正方法很简单,直接返回空字符串即可,如下:

class WeChatWebHook(ApiView):

    def post(self, request, *args, **kwargs):
        # 省略接收到微信回调消息后的业务逻辑处理过程
        return HttpResponse("")

修改完成后,再次给微信公众号发送消息、或者触发扫码关注事件,都不会报错了。

小结

在跟第三方平台进行集成时,极其容易遇到问题,遇到问题时,要冷静地找到自己的解题思路。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容