golang:1.23,wechatpay-go:2.20
代码如下:
var (
mchID string = "商户平台提供的" // 商户号
mchCertificateSerialNumber string = "商户api证书序列号,后台查看的" // 商户证书序列号
mchAPIv3Key string = "APIV3秘钥,32位字符串" // 商户APIv3密钥
)
path := "./cert/apiclient_key.pem"
// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
mchPrivateKey, err := utils.LoadPrivateKeyWithPath(path)
if err != nil {
fmt.Println(err)
log.Fatal("load merchant private key error")
}
fmt.Println(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key)
// 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
opts := []core.ClientOption{
option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
}
fmt.Println(opts)
client, err := core.NewClient(c, opts...)
if err != nil {
log.Fatalf("new wechat pay client err:%s", err)
}
根据 https://github.com/wechatpay-apiv3/wechatpay-go/issues/135 文档进行APIV3秘钥重置,依然不能正常初始化客户端
option.WithWechatPayAutoAuthCipher()返回数据为“证书不存在”
重新生成了证书,更换了商户证书序列号,依然提示“证书不存在”
平台证书每五年会过期,需要商户主动更换,为了帮助商户规避未能及时完成平台证书更换或更换过程中出现系统风险影响线上业务,新申请的微信支付商户号需要使用公私钥模式进行接口验签。还请参照:https://developers.weixin.qq.com/community/pay/doc/0002c6a7cf438818df52145b863c01 进行处理
刚写完,看这里吧,新商户号不再签发平台证书了https://developers.weixin.qq.com/community/pay/article/doc/000ca894a20c983cad52242286b813