wechatpay-go icon indicating copy to clipboard operation
wechatpay-go copied to clipboard

支付回调通知空指针

Open chenyangguang opened this issue 2 years ago • 1 comments

这段代码

func ExampleHandler_ParseNotifyRequest_transaction() {
	var handler notify.Handler
	var request *http.Request

	content := new(payments.Transaction)
	notifyReq, err := handler.ParseNotifyRequest(context.Background(), request, content)
	if err != nil {
		fmt.Println(err)
		return
	}

	// 处理通知内容
	fmt.Println(notifyReq.Summary)
	fmt.Println(content)
}
notifyReq, err := handler.ParseNotifyRequest(context.Background(), request, content)

这行会导致空指针

  • Go 版本:golang 1.17
  • wechatpay-go 版本:v0.2.16

并且用 http.request替代里面的值之后。报错:

unsupported Wechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048

一看是这个算法套件没初始化,

// NewRSANotifyHandler 创建一个 RSA 的通知处理器,它包含 AES-GCM 解密能力 func NewRSANotifyHandler(apiV3Key string, verifier auth.Verifier) (*Handler, error) { c, err := aes.NewCipher([]byte(apiV3Key)) if err != nil { return nil, err } aesgcm, err := cipher.NewGCM(c) if err != nil { return nil, err }

return NewEmptyHandler().AddRSAWithAESGCM(verifier, aesgcm), nil

}

但是这个算法怎么用?方便透露一个栗子么

` // Package auth 微信支付 API v3 Go SDK 安全验证相关接口 package auth

import "context"

// Verifier 数字签名验证器 type Verifier interface { Verify(ctx context.Context, serial, message, signature string) error // 对签名信息进行验证 }

` 请问这个 messsge 是啥?

chenyangguang avatar Jun 14 '23 04:06 chenyangguang

handler 如何初始化可以看一下 README.md#回调通知的验签与解密

EmmetZC avatar Jun 14 '23 06:06 EmmetZC