微信相关能力
This commit is contained in:
85
pkg/wechat/config.go
Normal file
85
pkg/wechat/config.go
Normal file
@@ -0,0 +1,85 @@
|
||||
package wechat
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/ArtisanCloud/PowerWeChat/v3/src/kernel"
|
||||
"github.com/ArtisanCloud/PowerWeChat/v3/src/officialAccount"
|
||||
"github.com/ArtisanCloud/PowerWeChat/v3/src/payment"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/config"
|
||||
"github.com/redis/go-redis/v9"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// NewRedisCache 使用项目现有的 Redis 客户端创建 PowerWeChat 的 Redis Cache
|
||||
func NewRedisCache(rdb *redis.Client) kernel.CacheInterface {
|
||||
return kernel.NewRedisClient(&kernel.UniversalOptions{
|
||||
Addrs: []string{rdb.Options().Addr},
|
||||
Password: rdb.Options().Password,
|
||||
DB: rdb.Options().DB,
|
||||
})
|
||||
}
|
||||
|
||||
// NewOfficialAccountApp 创建微信公众号应用实例
|
||||
func NewOfficialAccountApp(cfg *config.Config, cache kernel.CacheInterface, logger *zap.Logger) (*officialAccount.OfficialAccount, error) {
|
||||
oaCfg := cfg.Wechat.OfficialAccount
|
||||
if oaCfg.AppID == "" || oaCfg.AppSecret == "" {
|
||||
return nil, fmt.Errorf("微信公众号配置不完整:缺少 AppID 或 AppSecret")
|
||||
}
|
||||
|
||||
userConfig := &officialAccount.UserConfig{
|
||||
AppID: oaCfg.AppID,
|
||||
Secret: oaCfg.AppSecret,
|
||||
Cache: cache,
|
||||
}
|
||||
|
||||
// 可选配置:消息验证 Token 和 AESKey
|
||||
if oaCfg.Token != "" {
|
||||
userConfig.Token = oaCfg.Token
|
||||
}
|
||||
if oaCfg.AESKey != "" {
|
||||
userConfig.AESKey = oaCfg.AESKey
|
||||
}
|
||||
|
||||
app, err := officialAccount.NewOfficialAccount(userConfig)
|
||||
if err != nil {
|
||||
logger.Error("创建微信公众号应用失败", zap.Error(err))
|
||||
return nil, fmt.Errorf("创建微信公众号应用失败: %w", err)
|
||||
}
|
||||
|
||||
logger.Info("微信公众号应用初始化成功", zap.String("app_id", oaCfg.AppID))
|
||||
return app, nil
|
||||
}
|
||||
|
||||
// NewPaymentApp 创建微信支付应用实例
|
||||
func NewPaymentApp(cfg *config.Config, cache kernel.CacheInterface, logger *zap.Logger) (*payment.Payment, error) {
|
||||
payCfg := cfg.Wechat.Payment
|
||||
if payCfg.AppID == "" || payCfg.MchID == "" {
|
||||
return nil, fmt.Errorf("微信支付配置不完整:缺少 AppID 或 MchID")
|
||||
}
|
||||
|
||||
userConfig := &payment.UserConfig{
|
||||
AppID: payCfg.AppID,
|
||||
MchID: payCfg.MchID,
|
||||
MchApiV3Key: payCfg.APIV3Key,
|
||||
Key: payCfg.APIV2Key,
|
||||
CertPath: payCfg.CertPath,
|
||||
KeyPath: payCfg.KeyPath,
|
||||
SerialNo: payCfg.SerialNo,
|
||||
NotifyURL: payCfg.NotifyURL,
|
||||
HttpDebug: payCfg.HttpDebug,
|
||||
Cache: cache,
|
||||
}
|
||||
|
||||
app, err := payment.NewPayment(userConfig)
|
||||
if err != nil {
|
||||
logger.Error("创建微信支付应用失败", zap.Error(err))
|
||||
return nil, fmt.Errorf("创建微信支付应用失败: %w", err)
|
||||
}
|
||||
|
||||
logger.Info("微信支付应用初始化成功",
|
||||
zap.String("app_id", payCfg.AppID),
|
||||
zap.String("mch_id", payCfg.MchID),
|
||||
)
|
||||
return app, nil
|
||||
}
|
||||
Reference in New Issue
Block a user