支付回调通知空指针
这段代码
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 是啥?
handler 如何初始化可以看一下 README.md#回调通知的验签与解密