feat(commerce): Hyperswitch LIVE_MODE configuration
- config: HyperswitchLiveMode (HYPERSWITCH_LIVE_MODE) - routes_marketplace: warn when production + LiveMode=false - docker-compose.prod: HYPERSWITCH_LIVE_MODE env var
This commit is contained in:
parent
30bc31f3a6
commit
cc9fbf4f24
3 changed files with 18 additions and 8 deletions
|
|
@ -164,6 +164,7 @@ services:
|
|||
- HYPERSWITCH_API_KEY=${HYPERSWITCH_API_KEY:-}
|
||||
- HYPERSWITCH_WEBHOOK_SECRET=${HYPERSWITCH_WEBHOOK_SECRET:-}
|
||||
- HYPERSWITCH_ENABLED=${HYPERSWITCH_ENABLED:-false}
|
||||
- HYPERSWITCH_LIVE_MODE=${HYPERSWITCH_LIVE_MODE:-false}
|
||||
- CHECKOUT_SUCCESS_URL=${CHECKOUT_SUCCESS_URL:-https://veza.fr/purchases}
|
||||
- ENABLE_CLAMAV=true
|
||||
- CLAMAV_REQUIRED=true
|
||||
|
|
@ -216,6 +217,7 @@ services:
|
|||
- HYPERSWITCH_API_KEY=${HYPERSWITCH_API_KEY:-}
|
||||
- HYPERSWITCH_WEBHOOK_SECRET=${HYPERSWITCH_WEBHOOK_SECRET:-}
|
||||
- HYPERSWITCH_ENABLED=${HYPERSWITCH_ENABLED:-false}
|
||||
- HYPERSWITCH_LIVE_MODE=${HYPERSWITCH_LIVE_MODE:-false}
|
||||
- CHECKOUT_SUCCESS_URL=${CHECKOUT_SUCCESS_URL:-https://veza.fr/purchases}
|
||||
- ENABLE_CLAMAV=true
|
||||
- CLAMAV_REQUIRED=true
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@ package api
|
|||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"veza-backend-api/internal/config"
|
||||
"veza-backend-api/internal/core/marketplace"
|
||||
"veza-backend-api/internal/handlers"
|
||||
"veza-backend-api/internal/services"
|
||||
|
|
@ -20,6 +22,10 @@ func (r *APIRouter) setupMarketplaceRoutes(router *gin.RouterGroup) {
|
|||
storageService := services.NewTrackStorageService(uploadDir, false, r.logger)
|
||||
opts := []marketplace.ServiceOption{}
|
||||
if r.config.HyperswitchEnabled && r.config.HyperswitchAPIKey != "" && r.config.HyperswitchURL != "" {
|
||||
if r.config.SentryEnvironment == config.EnvProduction && !r.config.HyperswitchLiveMode {
|
||||
r.logger.Warn("Hyperswitch is enabled in production but HYPERSWITCH_LIVE_MODE=false; using test keys",
|
||||
zap.String("hint", "Set HYPERSWITCH_LIVE_MODE=true and use live API keys for production payments"))
|
||||
}
|
||||
hsClient := hyperswitch.NewClient(r.config.HyperswitchURL, r.config.HyperswitchAPIKey)
|
||||
hsProvider := hyperswitch.NewProvider(hsClient)
|
||||
opts = append(opts,
|
||||
|
|
|
|||
|
|
@ -134,11 +134,12 @@ type Config struct {
|
|||
CookiePath string // Cookie path (généralement "/")
|
||||
|
||||
// Hyperswitch Payment (Phase 2)
|
||||
HyperswitchEnabled bool // Enable Hyperswitch payments (default false in dev)
|
||||
HyperswitchURL string // Hyperswitch router URL (e.g. http://hyperswitch:8080)
|
||||
HyperswitchAPIKey string // API key for Hyperswitch
|
||||
HyperswitchEnabled bool // Enable Hyperswitch payments (default false in dev)
|
||||
HyperswitchLiveMode bool // Use live API keys (HYPERSWITCH_LIVE_MODE). If false in production, test keys are used.
|
||||
HyperswitchURL string // Hyperswitch router URL (e.g. http://hyperswitch:8080)
|
||||
HyperswitchAPIKey string // API key for Hyperswitch
|
||||
HyperswitchWebhookSecret string // Webhook signature verification secret
|
||||
CheckoutSuccessURL string // URL to redirect after successful payment (e.g. /checkout/success)
|
||||
CheckoutSuccessURL string // URL to redirect after successful payment (e.g. /checkout/success)
|
||||
|
||||
// Email & Jobs
|
||||
EmailSender *email.SMTPEmailSender
|
||||
|
|
@ -344,11 +345,12 @@ func NewConfig() (*Config, error) {
|
|||
CookiePath: getEnv("COOKIE_PATH", "/"),
|
||||
|
||||
// Hyperswitch Payment Configuration
|
||||
HyperswitchEnabled: getEnvBool("HYPERSWITCH_ENABLED", false),
|
||||
HyperswitchURL: getEnv("HYPERSWITCH_URL", "http://localhost:18081"),
|
||||
HyperswitchAPIKey: getEnv("HYPERSWITCH_API_KEY", ""),
|
||||
HyperswitchEnabled: getEnvBool("HYPERSWITCH_ENABLED", false),
|
||||
HyperswitchLiveMode: getEnvBool("HYPERSWITCH_LIVE_MODE", false),
|
||||
HyperswitchURL: getEnv("HYPERSWITCH_URL", "http://localhost:18081"),
|
||||
HyperswitchAPIKey: getEnv("HYPERSWITCH_API_KEY", ""),
|
||||
HyperswitchWebhookSecret: getEnv("HYPERSWITCH_WEBHOOK_SECRET", ""),
|
||||
CheckoutSuccessURL: getEnv("CHECKOUT_SUCCESS_URL", ""),
|
||||
CheckoutSuccessURL: getEnv("CHECKOUT_SUCCESS_URL", ""),
|
||||
|
||||
// Log Files Configuration
|
||||
// En développement, utiliser ./logs si /var/log n'est pas accessible
|
||||
|
|
|
|||
Loading…
Reference in a new issue