package core import ( "context" "fmt" "github.com/smartwalle/alipay/v3" "github.com/wechatpay-apiv3/wechatpay-go/core" "github.com/wechatpay-apiv3/wechatpay-go/core/option" "github.com/wechatpay-apiv3/wechatpay-go/services/certificates" "github.com/wechatpay-apiv3/wechatpay-go/utils" "log" "qnc-server/config" "qnc-server/global" "qnc-server/model/model" "qnc-server/service" ) var orderService = service.OrderService{} func InitWeChatPay(mchID string, mchCertificateSerialNumber string, mchAPIv3Key string, privateKeyPath string) *core.Client { mchPrivateKey, err := utils.LoadPrivateKeyWithPath(privateKeyPath) if err != nil { log.Fatal("load merchant private key error") } ctx := context.Background() // 使用商户私钥等初始化 client,并使它具有自动定时获取微信支付平台证书的能力 opts := []core.ClientOption{ option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key), } client, err := core.NewClient(ctx, opts...) if err != nil { log.Fatalf("new wechat pay client err:%s", err) } // 发送请求,以下载微信支付平台证书为例 // https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay5_1.shtml svc := certificates.CertificatesApiService{Client: client} resp, result, err := svc.DownloadCertificates(ctx) log.Printf("status=%d resp=%s", result.Response.StatusCode, resp) return client } func InitMPWeChatPay() { mchID := config.ConfigData.WxPay.MchID mchCertificateSerialNumber := config.ConfigData.WxPay.MchCertificateSerialNumber mchAPIv3Key := config.ConfigData.WxPay.MchAPIv3Key privateKeyPath := "merchant/mp/apiclient_key.pem" client := InitWeChatPay(mchID, mchCertificateSerialNumber, mchAPIv3Key, privateKeyPath) global.GlobalData.PayClient = client orderService.RegisterComplaintNotificationURL(client, model.PlatformMPWEIXIN) } func InitMPH5WeChatPay() { mchID := config.ConfigData.WxPay.MchH5ID mchCertificateSerialNumber := config.ConfigData.WxPay.MchH5CertificateSerialNumber mchAPIv3Key := config.ConfigData.WxPay.MchH5APIv3Key privateKeyPath := "merchant/mph5/apiclient_key.pem" client := InitWeChatPay(mchID, mchCertificateSerialNumber, mchAPIv3Key, privateKeyPath) global.GlobalData.PayH5Client = client orderService.RegisterComplaintNotificationURL(client, model.PlatformH5) } func InitAliPay() { client, err := alipay.New(config.ConfigData.AliPay.AppID, config.ConfigData.AliPay.PrivateKey, true) if err != nil { fmt.Println(err) return } err = client.LoadAliPayPublicKey(config.ConfigData.AliPay.PublicKey) if err != nil { fmt.Println(err) return } global.GlobalData.AliPayClient = client fmt.Println("ali pay init success") log.Println("ali pay init success") }