77 lines
2.7 KiB
Go
77 lines
2.7 KiB
Go
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")
|
||
}
|