|
|
@ -18,23 +18,27 @@ type wxpay struct {
|
|
|
|
Handler *notify.Handler
|
|
|
|
Handler *notify.Handler
|
|
|
|
}
|
|
|
|
}
|
|
|
|
type WxpayConfig struct {
|
|
|
|
type WxpayConfig struct {
|
|
|
|
MchID string // 商户号
|
|
|
|
MchID string // 商户号
|
|
|
|
MchCertificateSerialNumber string // 商户证书序列号
|
|
|
|
MchAPIv3Key string // 商户APIv3密钥
|
|
|
|
MchAPIv3Key string // 商户APIv3密钥
|
|
|
|
PrivateKey string // 私钥
|
|
|
|
PrivateKey string // 私钥
|
|
|
|
PrivateCert string // 私钥证书
|
|
|
|
PrivateCert string // 私钥证书
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// InitWxpay @Title 初始化微信支付
|
|
|
|
// InitWxpay @Title 初始化微信支付
|
|
|
|
func InitWxpay(config WxpayConfig) error {
|
|
|
|
func InitWxpay(config WxpayConfig) error {
|
|
|
|
// 加载私钥证书
|
|
|
|
// 加载私钥
|
|
|
|
privateKey, err := rsa.ParsePrivateKey(config.PrivateKey, rsa.PKCS8)
|
|
|
|
privateKey, err := rsa.ParsePrivateKey(config.PrivateKey, rsa.PKCS8)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return errors.New("私钥错误")
|
|
|
|
return errors.New("私钥错误")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 加载私钥证书
|
|
|
|
|
|
|
|
certificate, err := rsa.ParseCertificate(config.PrivateCert)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return errors.New("证书错误")
|
|
|
|
|
|
|
|
}
|
|
|
|
// 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
|
|
|
|
// 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力
|
|
|
|
opts := []core.ClientOption{
|
|
|
|
opts := []core.ClientOption{
|
|
|
|
option.WithWechatPayAutoAuthCipher(config.MchID, config.MchCertificateSerialNumber, privateKey, config.MchAPIv3Key),
|
|
|
|
option.WithWechatPayAutoAuthCipher(config.MchID, certificate.SerialNumber.String(), privateKey, config.MchAPIv3Key),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Wxpay.Client, err = core.NewClient(context.Background(), opts...)
|
|
|
|
Wxpay.Client, err = core.NewClient(context.Background(), opts...)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|