Productos de Desarrollador

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Un producto de desarrollador es un artículo o habilidad que un usuario puede comprar más de una vez, como moneda del juego, munición o pociones.

Crear un producto de desarrollador

Para crear un producto de desarrollador:

  1. Ve a Creaciones y selecciona un juego.
  2. Ve a MonetizaciónProductos de desarrollador.
  3. Haz clic en Crear producto de desarrollador.
  4. Sube una imagen para mostrar como el icono del producto. Asegúrate de que la imagen no exceda los 512x512 píxeles, no incluya detalles importantes fuera de sus límites circulares y esté en formato .jpg, .png o .bmp.
  5. Ingresa un nombre y una descripción para el producto.
  6. Selecciona una categoría para el producto. La categoría se usa para organizar los artículos en tu tienda del juego.
  7. Establece el precio del producto en Robux. El precio mínimo es 1 Robux, y el precio máximo es de 1 mil millones de Robux.
  8. Haz clic en Guardar cambios.

Obtener el ID del producto de desarrollador

Para usar scripting, necesitas un ID de producto de desarrollador. Para obtener el ID del producto:

  1. Ve a MonetizaciónProductos de desarrollador.

  2. Pasa el cursor sobre la miniatura de un producto, haz clic en el botón y selecciona Copiar ID de activo en el menú contextual.

Vender un producto de desarrollador

Antes de vender productos de desarrollador, asegúrate de que estás procesando correctamente los recibos de ventas y otorgando a los usuarios los productos que compraron. Para hacerlo, debes:

  • Usar la API ProcessReceipt para verificar los recibos de compra. ProcessReceipt lee y reconoce automáticamente que un usuario ha comprado un producto fuera del juego.
  • Validar cada recibo por User ID, Developer Product ID y el estado del recibo.
  • Si el recibo tiene un estado de Abierto, otorga al usuario los artículos de desarrollador que ha comprado.
  • Responder a la API ProcessReceipt con un mensaje reconociendo el recibo y validando que los artículos comprados fueron otorgados.

Puedes vender productos de desarrollador de dos maneras:

Dentro de tu juego

Para implementar y vender un producto de desarrollador dentro de un juego, llama a las funciones de MarketplaceService.

Usa GetProductInfo para recuperar información sobre un producto de desarrollador, como nombre y precio, y luego mostrar ese producto a los usuarios. Puedes vender el producto dentro del mercado de tu juego, por ejemplo. Para productos de desarrollador, el segundo parámetro debe ser Enum.InfoType.Product.


local MarketplaceService = game:GetService("MarketplaceService")
-- Reemplaza el ID de marcador de posición con tu ID de producto de desarrollador
local productId = 000000
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- Muestra la información del producto
-- Reemplaza las declaraciones de impresión con código de UI para mostrar el producto
print("Nombre del Producto de Desarrollador: " .. productInfo.Name)
print("Precio en Robux: " .. productInfo.PriceInRobux)
print("Descripción: " .. productInfo.Description)
end

Usa GetDeveloperProductsAsync para recuperar todos los productos de desarrollador asociados con tu juego. Esta función devuelve un objeto Pages que puedes inspeccionar y filtrar para crear cosas como una tienda del juego o una GUI de lista de productos.


local MarketplaceService = game:GetService("MarketplaceService")
local success, developerProducts = pcall(function()
return MarketplaceService:GetDeveloperProductsAsync()
end)
if success and developerProducts then
local firstPage = developerProducts:GetCurrentPage()
for _, developerProduct in firstPage do
-- Reemplaza la declaración de impresión con código de UI para mostrar el producto
print(field .. ": " .. value)
end
end

Usa PromptProductPurchase para solicitar compras de productos dentro de tu juego. Puedes llamar a esta función cuando un usuario realiza acciones como presionar un botón o hablar con un NPC vendedor.


local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Reemplaza el ID de marcador de posición con tu ID de producto de desarrollador
local productId = 000000
local function promptProductPurchase()
local success, errorMessage = pcall(function()
MarketplaceService:PromptProductPurchase(player, productId)
end)
if success then
print("Se mostró el aviso de compra correctamente")
end
end

También puedes combinar funciones dentro de un LocalScript. Por ejemplo, puedes crear un elemento de UI como un botón o un NPC vendedor, luego usar GetProductInfo() para conectar un producto de desarrollador existente a ese elemento, verificar si el producto está a la venta, y usar PromptProductPurchase() para solicitar una compra cada vez que el usuario haga clic en él.


local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
-- Reemplaza el ID de marcador de posición con tu ID de producto de desarrollador
local productId = 000000
-- Obtiene la información del producto cuando el usuario hace clic en el botón de la UI
button.MouseButton1Click:Connect(function()
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- Verifica si el producto está a la venta
if productInfo.IsForSale then
print("Este está a la venta")
-- Solicita la compra del producto
MarketplaceService:PromptProductPurchase(player, productId)
else
-- Notifica que el producto no está a la venta
print("Este producto no está actualmente a la venta.")
end
else
print("Error al recuperar la información del producto: " .. tostring(productInfo))
end
end)

Fuera de tu juego

Para habilitar compras de productos de desarrollador fuera de tu juego, debes trabajar con la API ProcessReceipt. Después de que un usuario realice una compra en la pestaña de Tienda de la página de detalles de tu juego, debes usar ProcessReceipt para confirmar su compra y otorgarles sus artículos una vez que entren en tu juego.

Modo de prueba

La función de modo de prueba te ayuda a validar tu flujo de compra simulando una compra de productos de desarrollador fuera de tu juego. Debes usar el modo de prueba para asegurarte de que has implementado ProcessReceipt correctamente antes de habilitar las ventas externas de productos de desarrollador.

Los productos de desarrollador que pongas a la venta en modo de prueba solo podrán ser vistos por ti y por miembros de tu grupo. No son visibles para los usuarios.

Para probar tu implementación:

  1. En el Hub del Creador, ve a MonetizaciónProductos de Desarrollador.
  2. Haz clic en el menú y selecciona Configuraciones de Compra Externa.
  3. En la página de Configuraciones de Compra Externa, haz clic en Habilitar modo de prueba.
  4. Una vez que el modo de prueba esté activo, regresa a la página de Productos de Desarrollador y selecciona un producto para probar.
  5. En la página de Configuraciones Básicas, selecciona la casilla Permitir compras externas y guarda tus cambios.
  6. Ve a la pestaña de Tienda de la página de detalles del juego y compra el producto que pusiste a la venta.
  7. Entra al juego y confirma que has recibido el producto que compraste. El estado del recibo de la API ProcessReceipt debería actualizarse a Cerrado.

Después de probar tu implementación, Roblox verifica que la prueba se haya completado con éxito y te permite activar completamente la función para vender productos de desarrollador fuera de tus juegos.

Para más información sobre la API ProcessReceipt y su implementación, consulta la página ProcessReceipt.

Habilitar ventas externas

Para habilitar ventas externas:

  1. Ve a la página de Configuraciones de Compra Externa.
  2. Activa las Compras Externas.
  3. Regresa a la página de Productos de Desarrollador y selecciona los productos que deseas vender fuera de tu juego.
  4. En la página de Configuraciones Básicas, selecciona la casilla Permitir compras externas y guarda tus cambios.
  5. Confirma que los productos ahora están disponibles para compra en la pestaña de Tienda de la página de detalles del juego.

Para deshabilitar la venta externa de un producto de desarrollador, selecciona el producto en la página de Productos de Desarrollador y desmarca la casilla Permitir compras externas.

Limitaciones

  • Los artículos a la venta en modo de prueba cuestan Robux reales. Se recomienda probar productos de desarrollador de bajo costo.
  • Los artículos a la venta en modo de prueba solo pueden ser vistos por ti o por miembros de tu grupo.
  • Para ser vendidos externamente, tus productos de desarrollador deben tener una miniatura.
  • No deberías vender lo siguiente fuera de tu juego:
    • Artículos aleatorios de pago
    • Artículos que están limitados a cantidades, tiempo, lugar o configuraciones y roles de usuario específicos.

Manejar la compra de un producto de desarrollador

Después de que un usuario compra un producto de desarrollador, debes manejar y registrar la transacción. Para hacer esto, usa un Script dentro de ServerScriptService usando la función ProcessReceipt.

Para más información sobre la API ProcessReceipt y su implementación, consulta la página ProcessReceipt.


local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local productFunctions = {}
-- Ejemplo: el ID del producto 123123 devuelve al usuario a plena salud
productFunctions[123123] = function(receipt, player)
local character = player.Character
local humanoid = character and character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = humanoid.MaxHealth
-- Indica una compra exitosa
return true
end
end
-- Ejemplo: el ID del producto 456456 otorga 100 monedas de oro al usuario
productFunctions[456456] = function(receipt, player)
local leaderstats = player:FindFirstChild("leaderstats")
local gold = leaderstats and leaderstats:FindFirstChild("Gold")
if gold then
gold.Value += 100
return true
end
end
local function processReceipt(receiptInfo)
local userId = receiptInfo.PlayerId
local productId = receiptInfo.ProductId
local player = Players:GetPlayerByUserId(userId)
if player then
-- Obtiene la función manejadora asociada con el ID del producto de desarrollador e intenta ejecutarla
local handler = productFunctions[productId]
local success, result = pcall(handler, receiptInfo, player)
if success then
-- El usuario ha recibido sus artículos
-- Devuelve "PurchaseGranted" para confirmar la transacción
return Enum.ProductPurchaseDecision.PurchaseGranted
else
warn("Error al procesar el recibo:", receiptInfo, result)
end
end
-- No se pudieron otorgar los artículos al usuario
-- Devuelve "NotProcessedYet" y lo intenta nuevamente la próxima vez que el usuario se una al juego
return Enum.ProductPurchaseDecision.NotProcessedYet
end
-- Establece el callback
-- Esto solo puede hacerse una vez por un script del lado del servidor
MarketplaceService.ProcessReceipt = processReceipt

Personaliza tu tienda en el juego

Puedes usar las API de inteligencia de productos para clasificar y recomendar productos de desarrollador a los usuarios. Personalizar tu tienda en el juego ayuda a presentar los artículos más relevantes a cada usuario, aumentando la participación y los ingresos. Al adaptar los productos de desarrollador a las preferencias del usuario, puedes mejorar su descubrimiento, aumentar las tasas de conversión y desbloquear nuevas oportunidades de monetización.

Clasifica productos de desarrollador para la venta

RankProductsAsync toma una lista de IDs de productos y devuelve una lista ordenada personalizada de esos productos. Puedes usar este método para proporcionar a tus usuarios recomendaciones de artículos personalizadas en tu tienda del juego.

Ejemplo: Tres artículos "Poderes" clasificados para el usuario
Tres artículos clasificados para el usuario.

local MarketplaceService = game:GetService("MarketplaceService")
-- Crea un array de productos que deseas clasificar
local productIdentifiers = {
{InfoType = Enum.InfoType.GamePass, Id = 123},
{InfoType = Enum.InfoType.Product, Id = 456},
{InfoType = Enum.InfoType.Product, Id = 789}
}
-- Haz una llamada protegida para manejar errores
local success, rankedProducts = pcall(function()
return MarketplaceService:RankProductsAsync(productIdentifiers)
end)
if not success then
error("Error al clasificar productos")
end
-- Carga los artículos devueltos en la tienda
for i, rankedItem in ipairs(rankedProducts) do
local productIdentifier = rankedItem.ProductIdentifier
local productInfo = rankedItem.ProductInfo
-- ...
-- Lógica para agregar productos a la tienda
end

Muestra tus mejores productos de desarrollador

RecommendTopProductsAsync toma un array de valores de InfoType y devuelve hasta 50 artículos con los que un usuario es más probable que interactúe y compre. Puedes usar este método para crear una sección de "Selecciones Principales" en tu tienda del juego.

Si no se pueden determinar recomendaciones, RecommendTopProductsAsync devuelve 0 artículos.

En raras ocasiones, las llamadas al modelo de clasificación pueden ser lentas. Para ayudar a prevenir la carga adicional para los usuarios, recomendamos usar task.spawn para hacer que la llamada a RecommendTopProducts no bloqueante.

Ejemplo: Una pestaña de "Selecciones Principales" en una tienda del juego
Pestaña de Selecciones Principales de una tienda del juego.

local MarketplaceService = game:GetService("MarketplaceService")
-- Crea un array de tipos de productos que deseas incluir en las recomendaciones -- Este ejemplo incluye productos de pases y de desarrollador
local productTypes = {Enum.InfoType.GamePass, Enum.InfoType.Product}
-- Haz una llamada protegida para manejar errores
local success, topRankedItems = pcall(function()
return MarketplaceService:RecommendTopProductsAsync(productTypes)
end)
if not success then
error("Error al clasificar productos")
end
-- Carga los artículos devueltos en la tienda
-- Asegúrate de filtrar cualquier artículo no elegible de topRankedItems, como productos de desarrollador que el usuario ya no puede comprar
for i, rankedItem in ipairs(topRankedItems) do
local productIdentifier = rankedItem.ProductIdentifier
local productInfo = rankedItem.ProductInfo
-- ...
-- Lógica para agregar productos a la tienda
end

Análisis de productos de desarrollador

Usa el análisis de productos de desarrollador para analizar el éxito de productos individuales, identificar tendencias y prever posibles ganancias futuras.

Con análisis, puedes:

  • Ver tus mejores productos de desarrollador durante un período de tiempo seleccionado.
  • Mostrar hasta ocho artículos más vendidos en un gráfico de series temporales para analizar ventas totales y ganancias netas.
  • Monitorear tu catálogo y clasificar artículos por ventas y ganancias netas.

Para acceder al análisis de productos de desarrollador:

  1. Ve a Creaciones y selecciona un juego.
  2. Ve a MonetizaciónProductos de Desarrollador.
  3. Selecciona la pestaña Análisis.
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.