- 删除 PaymentConfig 结构体和 WechatConfig.Payment 字段(YAML 方案已废弃) - 删除 wechat.payment 配置节和 NewPaymentApp() 函数 - 删除 validateWechatConfig 中所有 wechatCfg.Payment.* 校验代码 - pkg/constants/wallet.go: Card* 前缀统一重命名为 Asset*,旧名保留废弃别名 - pkg/constants/redis.go: 新增 RedisWechatConfigActiveKey() - pkg/errors/codes.go: 新增错误码 1170-1175 - go.mod: 新增 golang.org/x/text 依赖(富友支付 GBK 编解码) Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
52 lines
1.5 KiB
Go
52 lines
1.5 KiB
Go
package wechat
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/ArtisanCloud/PowerWeChat/v3/src/kernel"
|
|
"github.com/ArtisanCloud/PowerWeChat/v3/src/officialAccount"
|
|
"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
|
|
}
|