Documentación de Steamworks
Funciones web de inventario de Steam
Estas son páginas web estructuradas a las que se puede redireccionar al usuario.

Carro de artículos

ItemCart puede usarse para enviar un carro de la compra con uno o varios artículos para su adquisición a través de Steam. El carro se debe crear y mantener en tu juego o IU y, después, enviar su contenido a Steam para comprar y activar esos artículos.

Tu tienda debe dirigir el navegador del cliente a POST directamente a https://store.steampowered.com/itemcart/checkout utilizando un formulario web. A partir de ahí, el usuario puede encontrarse con distintos flujos de compra dependiendo del navegador:

Navegador web independiente (Chrome, Internet Explorer, etc.):

  • Si la divisa de la cartera no es la adecuada, se redirigirá inmediatamente a la URL de retorno con el código de resultado que indica la discordancia (ofrece la oportunidad de modificar la divisa local de la tienda y continuar con el pago).
  • El carro de la compra con precio en una línea individual en la divisa del usuario, coste total en la divisa del usuario y los botones "Comprar/Cancelar".
  • Si se selecciona Cancelar, la transacción se cancela con el estado Denegado por el usuario.
  • Si se selecciona Comprar, la transacción se finalizará automáticamente.
  • El usuario será redirigido a la URL de retorno apropiada.

Navegador web de la interfaz de Steam o Big Picture:

  • Igual que con el navegador independiente, sin el paso de inicio de sesión; el usuario no puede cambiar de cuenta.

Navegador del juego con cookie de autenticación de la API de Steamworks:

  • Si la divisa de la cartera no es la adecuada, se redirigirá inmediatamente a la URL de retorno con el código de resultado que indica la discordancia.
  • La página web muestra un aviso para usar la interfaz de Steam para autorizar la compra.
  • La interfaz de Steam se activa automáticamente con un cuadro de diálogo para comprar o cancelar.
  • Cuando el usuario selecciona comprar o cancelar, la interfaz se cierra y el flujo continúa como en el navegador independiente.

HTML de ejemplo

<form action="https://store.steampowered.com/itemcart/checkout" method="post"> <input type="hidden" name="appid" value="234560"> <input type="hidden" name="cart" value="1001,1006*2"> <input type="hidden" name="total" value="USD499"> <input type="hidden" name="sandbox" value="0"> <input type="hidden" name="return" value="http://mystore.com/checkout.php?fromsteam=1&cartid=BA13522FE31&result=[RESULT]&orderid=[ORDERID]&steamid=[STEAMID]&name=[USERNAME]&cc=[CURRENCY]&auth=[AUTH]"> <input type="hidden" name="auth" value="9a38954f503bf38a16024a9ae9328e8fa780f5be"> <input type="hidden" name="lang" value="en"> <input type="image" src="checkout.png" alt="Checkout"> </form>

  • appid: Número de identificador de tu aplicación.
  • cart: Números de índice de definición de elemento separados por comas, con el sufijo de cantidad xN o *N opcional. El orden no importa. Los duplicados se tratan como cantidad adicional.
  • total: Valor total esperado del carro. El pago fallará si esto no coincide. El formato es el tipo de moneda en mayúsculas (USD, EUR, GBP, etc.) seguido del total numérico.
  • sandbox: es 1 o 0. Ten en cuenta que sandbox=1 fallará cuando las pruebas sandbox no estén específicamente activadas para tu aplicación en Steamworks.
  • return: URL al que se enviará al usuario cuando la compra se complete y esté lista para ser finalizada. A continuación se describen los campos de sustitución opcionales.
  • auth: Código de autenticación HMAC-SHA1 calculado a partir de los cinco valores anteriores en orden, separados por saltos de línea, usando tu clave secreta de ItemCart. Mira el ejemplo de PHP que hay al final del documento. La clave secreta se puede ver en la pestaña Economía de la página de configuración de la aplicación en Steamworks.
  • lang: Código de idioma ICU opcional ("es" para el español) que establece el idioma predeterminado de la página de pago. Este campo opcional no se autentica.

Las siguientes cadenas se sustituirán en la URL de retorno:
  • [RESULT]: código de resultado (0 = correcto; 1 = denegado por el usuario; 2 = discordancia de divisas; 3 o más son códigos de error interno).
  • [ORDERID]: número decimal sin signo de 64 bits, que representa el "orderid" de Steam. Se puede usar con al API ISteamMicroTxn/QueryTxn para verificar los detalles de la transacción. Estará blanco si el usuario la cancela. Coincide con el informe generado por ISteamMicroTxn/GetReport.
  • [STEAMID]: número decimal sin signo de 64 bits, que representa el id. de Steam del usuario. En blanco si el usuario rechaza el inicio de sesión.
  • [USERNAME]: nombre para mostrar elegido por el usuario, codificado adecuadamente como parámetro de URL. En blanco si el usuario rechaza el inicio de sesión. CUIDADO: ten cuidado con los usuarios llamados < script>
  • [CURRENCY]: código de divisa para la cartera del usuario (USD, EUR, etc.). En blanco si el usuario rechaza el inicio de sesión.
  • [AUTH]"": HMAC-SHA1 de toda la URL relativa del servidor (es decir, comenzando con "/checkout.phpquot"), computada como si [AUTH] fuera una cadena vacía y todo lo demás ya se hubiera sustituido. La clave HMAC es la clave secreta de ItemCart.

Ejemplo de PHP para generar un valor "auth":
define( 'SECRET_ITEMCART_KEY', '11111111111111111111111111111111' ); $appid = '234560'; $cartstring = '1001,1006*2'; $totalstring = 'USD499'; $sandbox = '0'; // or '1' $returnurl = 'http://mystore.com/checkout.php?fromsteam=1&cartid=BA13522FE31&result=[RESULT]&orderid=[ORDERID]&steamid=[STEAMID]&name=[USERNAME]&cc=[CURRENCY]&auth=[AUTH]'; $auth = hash_hmac( "sha1", "$appid\n$cartstring\n$totalstring\n$sandbox\n$returnurl", SECRET_ITEMCART_KEY );

PHP de muestra para validar la URL de retorno:
hash_hmac( "sha1", str_replace( $_GET['AUTH'], "", $_SERVER[;crwdn;ht;4;ht;crwdn;REQUEST_URI;crwdn;ht;5;ht;crwdn;] ), SECRET_ITEMCART_KEY ) === $_GET['AUTH']

El código de autenticación en el formulario PHP de muestra se calcula como si la clave secreta de ItemCart estuviera enteramente compuesta por unos (32 caracteres de largo). Contando con los demás valores de campo (AppId, cart, total, sandbox, return, lang), debería ser posible reproducir el valor auth; si el valor auth generado no coincide, lo más probable es que el código contenga errores y el pago no proseguirá.

BuyItem

BuyItem es una página web de estructura simple que permite al usuario comprar un artículo del juego mediante una sencilla interfaz de adquisiciones de Steam.

Construcción del identificador URI

Construye un URI para tu artículo de la siguiente manera y dirige al jugador hacia él: https://store.steampowered.com/buyitem/{appid}/{itemdefid}/{quantity}

Parámetros

  • appid: ID de la aplicación asociada con el elemento.
  • itemdefid: ID de ItemDef que se presenta para la compra. Este artículo debe tener un precio (o price_category) y no debe ser store_hidden. Véase el esquema de artículo.
  • quantity: Opcional. Es posible comprar varias instancias de un artículo; si no se incluye este parámetro, la cantidad predeterminada será 1.

Notas

Esta página simplificada solo sirve para vender instancias de un solo ItemDef, que también puede ser un lote a la venta. Para usar un carro de la compra con toda su funcionalidad, véase ItemCart.

Consulta la documentación del esquema de inventario para obtener detalles sobre la especificación de artículos para la venta, incluidos los precios y los paquetes.