From 60072cfcbe4b51a36a2dac7779400442b2cc7e20 Mon Sep 17 00:00:00 2001 From: Cristian Felipe Cruz Buitron Date: Wed, 12 Aug 2026 02:01:49 -0500 Subject: [PATCH] fix: usar region_id en vez de currency_code para precios de Medusa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El validador de /store/products (StoreGetProductsParams, .strict()) solo acepta region_id/country_code/province/cart_id para resolver contexto de precio -- currency_code como campo plano no existe y rompía con 400 "Unrecognized fields: 'currency_code'" en cada carga de /catalog. country_code tampoco alcanza: probado en vivo, devuelve "Missing required pricing context to calculate prices - region_id". Se necesita region_id explícito. Se agrega MEDUSA_REGION_ID (env var) apuntando a la región "Colombia" (COP) creada vía Admin API, ya que no existía ninguna región configurada en el backend. --- workloads/ecommerce/frontend.yaml | 2 ++ .../ecommerce/lib/headless/providers/medusa.ts | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/workloads/ecommerce/frontend.yaml b/workloads/ecommerce/frontend.yaml index e7b98e8..05889b2 100644 --- a/workloads/ecommerce/frontend.yaml +++ b/workloads/ecommerce/frontend.yaml @@ -24,6 +24,8 @@ spec: value: medusa - name: MEDUSA_BACKEND_URL value: http://medusa-svc:9000 + - name: MEDUSA_REGION_ID + value: reg_01KZT86WPAH7A7ZZRDSX3350V2 envFrom: - secretRef: name: commerce-storefront diff --git a/workloads/ecommerce/lib/headless/providers/medusa.ts b/workloads/ecommerce/lib/headless/providers/medusa.ts index c0586d8..9ca8839 100644 --- a/workloads/ecommerce/lib/headless/providers/medusa.ts +++ b/workloads/ecommerce/lib/headless/providers/medusa.ts @@ -258,6 +258,14 @@ function backendUrl(): string { return value.replace(/\/$/, ""); } +function regionId(): string { + const value = process.env.MEDUSA_REGION_ID; + if (!value) { + throw new Error("MEDUSA_REGION_ID no está configurado."); + } + return value; +} + async function medusaFetch( path: string, searchParams?: URLSearchParams, @@ -515,7 +523,10 @@ async function fetchProducts( ): Promise { const params = new URLSearchParams({ limit: String(limit), - currency_code: "cop", + // El validador de /store/products no acepta currency_code (400 + // "Unrecognized fields"); el precio calculado solo se resuelve con + // region_id. + region_id: regionId(), fields: "+metadata,+images,+tags,+categories,+collection,+variants.inventory_quantity,+variants.calculated_price,+variants.options", }); @@ -543,7 +554,10 @@ export const medusaCatalogProvider: CatalogProvider = { const params = new URLSearchParams({ handle: slug, limit: "1", - currency_code: "cop", + // El validador de /store/products no acepta currency_code (400 + // "Unrecognized fields"); el precio calculado solo se resuelve con + // region_id. + region_id: regionId(), fields: "+metadata,+images,+tags,+categories,+collection,+variants.inventory_quantity,+variants.calculated_price,+variants.options", }); -- 2.54.0