fix: 修复微信支付容器内 mkdir 权限错误,新增 wechat_v2 支付渠道
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m11s

- NewPaymentAppFromConfig 加 Log.Stdout=true,禁止 PowerWeChat SDK 在容器
  工作目录创建 wechat/ 日志文件夹(Permission denied 根因)
- 新增 ProviderTypeWechatV2 = wechat_v2 常量,与 wechat(v3) 独立区分
- 新增 PaymentV2Service:直连统一下单 v2 接口,XML + MD5 签名
- newPaymentProvider 按 ProviderType 分支路由到对应版本
This commit is contained in:
2026-03-31 12:12:13 +08:00
parent 4e65cf95d1
commit 5b283285a2
4 changed files with 247 additions and 2 deletions

View File

@@ -44,6 +44,20 @@ func (w *wechatPaymentProvider) CreateJSAPIPayment(ctx context.Context, orderNo,
return extractPaymentResult(result.PayConfig), nil
}
// wechatV2PaymentProvider 微信支付 v2 适配器。
type wechatV2PaymentProvider struct {
paymentService *wechat.PaymentV2Service
}
// CreateJSAPIPayment 创建微信 v2 JSAPI 预下单。
func (w *wechatV2PaymentProvider) CreateJSAPIPayment(ctx context.Context, orderNo, description, openID string, amount int) (*PaymentResult, error) {
result, err := w.paymentService.CreateJSAPIOrder(ctx, orderNo, description, openID, amount)
if err != nil {
return nil, err
}
return extractPaymentResult(result.PayConfig), nil
}
// fuiouPaymentProvider 富友支付适配器。
type fuiouPaymentProvider struct {
client *fuiou.Client
@@ -92,6 +106,12 @@ func (s *Service) newPaymentProvider(config *model.WechatConfig, appID, appType
return nil, errors.Wrap(errors.CodeFuiouPayFailed, err, "创建富友客户端失败")
}
return &fuiouPaymentProvider{client: client, appID: appID, tradeType: tradeType}, nil
case model.ProviderTypeWechatV2:
svc, err := wechat.NewPaymentV2ServiceFromConfig(config, appID, s.logger)
if err != nil {
return nil, errors.Wrap(errors.CodeWechatPayFailed, err, "创建微信支付 v2 应用失败")
}
return &wechatV2PaymentProvider{paymentService: svc}, nil
default:
cache := wechat.NewRedisCache(s.redis)
paymentApp, err := wechat.NewPaymentAppFromConfig(config, appID, cache, s.logger)