qnc-server-old/core/pay.go
2024-09-14 10:48:09 +08:00

77 lines
2.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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")
}