task: 完成支付宝共享基础(迁移/WechatConfig/PaymentStore/pkg/alipay)

This commit is contained in:
2026-05-22 12:09:55 +08:00
parent 2768deb0b6
commit 53e95751b1
13 changed files with 342 additions and 4 deletions

36
pkg/alipay/client.go Normal file
View File

@@ -0,0 +1,36 @@
package alipay
import (
"fmt"
"github.com/smartwalle/alipay/v3"
"github.com/break/junhong_cmp_fiber/internal/model"
)
// NewClientFromConfig 从 WechatConfig 构建支付宝 SDK client。
// 校验 ali_app_id、ali_private_key、ali_public_key 必须非空。
// ali_production=true 时使用生产环境,否则使用沙箱环境。
func NewClientFromConfig(cfg *model.WechatConfig) (*alipay.Client, error) {
if cfg.AliAppID == "" {
return nil, fmt.Errorf("支付宝配置缺失ali_app_id 不能为空")
}
if cfg.AliPrivateKey == "" {
return nil, fmt.Errorf("支付宝配置缺失ali_private_key 不能为空")
}
if cfg.AliPublicKey == "" {
return nil, fmt.Errorf("支付宝配置缺失ali_public_key 不能为空")
}
client, err := alipay.New(cfg.AliAppID, cfg.AliPrivateKey, cfg.AliProduction)
if err != nil {
return nil, fmt.Errorf("创建支付宝客户端失败: %w", err)
}
// 加载支付宝公钥(公钥模式验签)
if err := client.LoadAliPayPublicKey(cfg.AliPublicKey); err != nil {
return nil, fmt.Errorf("加载支付宝公钥失败: %w", err)
}
return client, nil
}