ParseNotifyRequest err: invalid notification, err: validate verify fail serial=[26CCBFEAB833C845E30AEBC2948D092454A389A2] request-id=[] err=certificate[26CCBFEAB833C845E30AEBC2948D092454A389A2] not found in verifier,
这个回调接口传回的serial跟我下单时传入的证书编号不一样,然后导致报错了?
返回头中的Wechatpay-Serial是平台证书序列号
遇到同样的问题,原因在此:
https://github.com/wechatpay-apiv3/wechatpay-go/blob/main/FAQ.md#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%B9%B3%E5%8F%B0%E8%AF%81%E4%B9%A6%E4%B8%8B%E8%BD%BD%E7%AE%A1%E7%90%86%E5%99%A8
如果是真实的微信支付回调,请检查是否在
ParseNotifyRequest
前消费过Request.Body
。Request.Body
定义为io.Reader
,不支持重复读取。代码里, 在前面打印了Body,所以后面的调用就出错了。
body, _ := io.ReadAll(c.Request.Body) fmt.Println(string(body))
解决很简单,把这两行删除就可以了
证书是使用了商户号的证书?微信平台的证书需要单独下载的。
https://pay.weixin.qq.com/wiki/doc/apiv3/apis/wechatpay5_1.shtml