package wechat

import (
	"context"
	"fmt"
	"sundynix-go/global"

	"github.com/wechatpay-apiv3/wechatpay-go/core"
	"github.com/wechatpay-apiv3/wechatpay-go/core/option"
	"github.com/wechatpay-apiv3/wechatpay-go/utils"
)

// GetWxPayClient 初始化微信支付客户端
func GetWxPayClient() (*core.Client, error) {

	//2.加载私钥
	mchPrivateKey, err := utils.LoadPrivateKeyWithPath(global.Config.WechatPay.PrivateKeyPath)
	if err != nil {
		return nil, err
	}
	mchPublicKey, err := utils.LoadPublicKeyWithPath(global.Config.WechatPay.PublicKeyPath)
	if err != nil {
		return nil, err
	}
	ctx := context.Background()
	// 3. 创建客户端配置 使用商户私钥等初始化 client，并使它具有自动定时获取微信支付平台证书的能力
	opts := []core.ClientOption{
		option.WithWechatPayPublicKeyAuthCipher(global.Config.WechatPay.MchId,
			global.Config.WechatPay.MchCertificateSerialNumber,
			mchPrivateKey, global.Config.WechatPay.PublicKeyId, mchPublicKey), // 自动处理签名/验签
	}
	client, err := core.NewClient(ctx, opts...)

	if err != nil {
		fmt.Printf("new wechat pay client err:%s", err)
	}
	return client, err

}
