Golang微信支付V3SDK回调

本文档记录了在使用Golang处理微信支付V3SDK回调时遇到的问题及解决方案。主要问题是回调通知的序列号与本地不一致,原因是混淆了平台证书序列号和商户证书。错误信息涉及证书验证失败。解决关键在于避免在ParseNotifyRequest前读取http数据,防止数据篡改。
摘要由CSDN通过智能技术生成

Go在使用 微信最新的V3sdk时 接收回调通知的记录

这里使用的是官方文档中的方法1

使用时发现 回调header中返回的序列号和本地不一致  

原因是header中的序列号是平台证书序列号 本地证书是商户证书

//读取本地的商户证书私钥
mchPrivateKey, err := utils.LoadPrivateKeyWithPath("/home/apiclient_key.pem")
	ctx := context.Background()
	// 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
	opts := []core.ClientOption{
		option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
	}
	_, err1 := core.NewClient(ctx, opts...)
	fmt.Println(err1)

	// 获取平台证书访问器
	certVisitor := downloader.MgrInstance().GetCertificateVisitor(mchID)
	handler := notify.NewNotifyHandler(mchAPIv3Key, verifiers.NewSHA256WithRSAVerifier(certVisitor))


	transaction := new(payments.Transaction)
	notifyReq, err := handler.ParseNotifyRequest(context.Background(), request, transaction)

获取平台证书后解密报错:

not valid wechatpay notify request: validate verify fail seri

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值