Files
junhong_cmp_fiber/pkg/alipay/client.go
2026-05-22 15:54:54 +08:00

39 lines
1.5 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package alipay
import (
"github.com/smartwalle/alipay/v3"
"github.com/break/junhong_cmp_fiber/internal/model"
apperrors "github.com/break/junhong_cmp_fiber/pkg/errors"
)
// 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 == nil {
return nil, apperrors.New(apperrors.CodeNoPaymentConfig, "支付宝配置缺失:未找到启用的支付配置")
}
if cfg.AliAppID == "" {
return nil, apperrors.New(apperrors.CodeNoPaymentConfig, "支付宝配置缺失ali_app_id 不能为空")
}
if cfg.AliPrivateKey == "" {
return nil, apperrors.New(apperrors.CodeNoPaymentConfig, "支付宝配置缺失ali_private_key 不能为空")
}
if cfg.AliPublicKey == "" {
return nil, apperrors.New(apperrors.CodeNoPaymentConfig, "支付宝配置缺失ali_public_key 不能为空")
}
client, err := alipay.New(cfg.AliAppID, cfg.AliPrivateKey, cfg.AliProduction)
if err != nil {
return nil, apperrors.Wrap(apperrors.CodeNoPaymentConfig, err, "支付宝配置不可用:创建客户端失败")
}
// 加载支付宝公钥(公钥模式验签)
if err := client.LoadAliPayPublicKey(cfg.AliPublicKey); err != nil {
return nil, apperrors.Wrap(apperrors.CodeNoPaymentConfig, err, "支付宝配置不可用:加载公钥失败")
}
return client, nil
}