https://github.com/wechatpay-apiv3/wechatpay-go
使用了官方这个包,初始化错误:
wxCtx := context.Background()
opts := []core.ClientOption{
option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
}
client, err := core.NewClient(wxCtx, opts...)
if err != nil {
log.Printf("new wechat pay client err:%s", err)
}
2024/11/03 21:42:47 new wechat pay client err:init client setting err:error http response:[StatusCode: 404 Code: "RESOURCE_NOT_EXISTS"
Message: 无可用证书,请先确保已有API证书,再在商户平台-API安全申请使用微信支付公钥用于验签。可查看指引https://pay.weixin.qq.com/docs/merchant/products/platform-certificate/wxp-pub-key-guide.html
问题是,商户后台API安全都已开通了完毕了。
有遇到的吗?如何解,谢谢!
如果是新申请的微信支付商户号出现「无可用证书,请先确保已有API证书」的报错,这是因为新申请的商户号需要使用公钥模式,具体还请参照:https://developers.weixin.qq.com/community/pay/doc/0002c6a7cf438818df52145b863c01 进行处理
你需要用公钥模式而不是去初始化平台证书,可以参考https://developers.weixin.qq.com/community/develop/article/doc/000ca894a20c983cad52242286b813
// 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力 opts := []core.ClientOption{ option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key), }
用的上面这个还是 下面这套代码呢opts := []core.ClientOption{
option.WithWechatPayPublicKeyAuthCipher(
mchID,
mchCertificateSerialNumber, mchPrivateKey,
wechatpayPublicKeyID, wechatpayPublicKey),