qnc-server-old/core/pay.go

77 lines
2.7 KiB
Go
Raw Permalink Normal View History

2024-09-14 10:48:09 +08:00
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")
}