只做记录没有进行详细的探究。
背景:使用微信服务号进行支付,服务器通过另一台有外网权限的服务器的NGINX代理访问腾讯的服务器。访问 https://api.weixin.qq.com/sns/oauth2/access_token获取用户的openID,之前一切正常。
事故描述:突然有一天系统的公众号支付失败了,系统什么也没有动,查看日志发现腾讯一直连接超时,然后把请求拿出来直接在服务器curl试试,发现返回
{“errcode”:41004,“errmsg”:“req id: fNmCha0262ns30, appsecret missing”}
这个41004表示用户的秘钥没传,但是明显的传了。然后机缘巧合下在curl的时候添加了http请求头发现请求成功了,在网上查询通过NGINX转发的时候消息的头可能会被过滤,因此紧急处理在NGINX那边做了请求头的处理,问题得到解决。
总结:如果遇到这个类似的问题,可以考虑检查一下http请求头。这个微信应该是升级了后台做了校验吧。
之后又出现了这个问题,在公众平台重新生成了appsecret ,然后就好了。腾讯666