fix: usar region_id en vez de currency_code para precios de Medusa

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.
This commit is contained in:
2026-08-12 02:01:49 -05:00
parent c9b376c4e6
commit 60072cfcbe
2 changed files with 18 additions and 2 deletions
+2
View File
@@ -24,6 +24,8 @@ spec:
value: medusa value: medusa
- name: MEDUSA_BACKEND_URL - name: MEDUSA_BACKEND_URL
value: http://medusa-svc:9000 value: http://medusa-svc:9000
- name: MEDUSA_REGION_ID
value: reg_01KZT86WPAH7A7ZZRDSX3350V2
envFrom: envFrom:
- secretRef: - secretRef:
name: commerce-storefront name: commerce-storefront
@@ -258,6 +258,14 @@ function backendUrl(): string {
return value.replace(/\/$/, ""); 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<T>( async function medusaFetch<T>(
path: string, path: string,
searchParams?: URLSearchParams, searchParams?: URLSearchParams,
@@ -515,7 +523,10 @@ async function fetchProducts(
): Promise<Product[]> { ): Promise<Product[]> {
const params = new URLSearchParams({ const params = new URLSearchParams({
limit: String(limit), 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: fields:
"+metadata,+images,+tags,+categories,+collection,+variants.inventory_quantity,+variants.calculated_price,+variants.options", "+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({ const params = new URLSearchParams({
handle: slug, handle: slug,
limit: "1", 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: fields:
"+metadata,+images,+tags,+categories,+collection,+variants.inventory_quantity,+variants.calculated_price,+variants.options", "+metadata,+images,+tags,+categories,+collection,+variants.inventory_quantity,+variants.calculated_price,+variants.options",
}); });