Documentação do Steamworks
Inventário Steam: Funções web
Páginas web estruturadas para as quais é possível redirecionar um usuário.

ItemCart (carrinho de itens)

A página ItemCart pode ser usada para enviar um carrinho com um ou mais itens para ser comprado pelo Steam. Será necessário montar e manter o carrinho dentro do jogo ou interface de usuário e depois enviar o conteúdo do mesmo ao Steam para compra e ativação dos itens.

A sua loja deve fazer com que o navegador do cliente chame o método POST https://store.steampowered.com/itemcart/checkout por meio de um formulário web. A partir daí, dependendo do navegador, o usuário passará por fluxos de compra ligeiramente diferentes:

Navegador web dedicado (Chrome, Internet Explorer, etc):

  • Se a moeda informada não for igual à da Carteira, redireciona imediatamente ao URL de retorno com código de resultado indicando não correspondência (oferece oportunidade de modificar a moeda local da loja e continuar com a finalização do pedido);
  • Carrinho de compras com a listagem do custo de cada item na moeda local, com botões "Comprar" / "Cancelar";
  • Se Cancelar for selecionado, a transação será cancelada com estado "usuário recusou";
  • Se Comprar for selecionado, a transação será finalizada automaticamente;
  • O usuário será redirecionado ao URL de retorno apropriado.

Navegador web do Painel Steam / Big Picture:

  • Idem aos navegadores dedicados, mas sem etapa de início de sessão; o usuário não pode trocar de conta.

Navegador web do jogo com cookie de autenticação da API do Steamworks:

  • Se a moeda informada não for igual à da Carteira, redireciona imediatamente ao URL de retorno com código de resultado indicando não correspondência;
  • Página web exibe aviso para usar o Painel Steam para autorizar a compra;
  • O Painel Steam será ativado automaticamente com uma janela de compra/cancelamento;
  • Painel é fechado, o fluxo continua como navegador web dedicado depois do usuário selecionar Comprar ou Cancelar.

HTML de exemplo

<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 — AppID do aplicativo.
  • cart — Números de índice de definição de item, separados por vírgulas, com sufixo opcional de quantidade xN ou *N. A ordem não importa. Duplicatas são tratadas como uma quantidade adicional;
  • total — O valor total esperado do carrinho. A finalização do pedido falhará se não corresponder ao valor real. O formato é o código da moeda em maiúsculas (USD, EUR, GBP, BRL etc.) seguido pelo total numérico;
  • sandbox — 1 ou 0. Observe que sandbox=1 falhará sempre que o modo de testes não estiver ativado para o aplicativo no Steamworks;
  • return — O URL ao qual o usuário será encaminhado quando a finalização do pedido estiver pronta para ser finalizada. Campos opcionais de substituição descritos abaixo;
  • auth — O código de autenticação HMAC-SHA1 computado a partir dos cinco valores precedentes em ordem, separados por quebras de linha, usando a sua chave secreta para ItemCart. Consulte o código PHP de amostra no fim do documento. A sua chave secreta pode ser consultada na aba Economia da página de configuração do aplicativo no Steamworks;
  • lang — Código ICU de idioma opcional ("en" para inglês, "pt" para português) na página de finalização de pedido. Esse campo opcional não é autenticado.

As strings a seguir serão substituídas no URL de retorno:
  • [RESULT] — código de resultado ( 0 = sucesso, 1 = usuário recusou, 2 = moeda errada, 3 para cima são códigos de falha internos );
  • [ORDERID] — Número inteiro decimal sem sinal de 64 bits que representa o "orderid" do Steam; pode ser usado com a API ISteamMicroTxn/QueryTxn para verificar os detalhes da transação — vazio se cancelado pelo usuário. Igual ao relatório gerado pela API ISteamMicroTxn/GetReport;
  • [STEAMID] — Inteiro decimal sem sinal de 64 bits que representa o ID Steam do usuário. Vazio se o usuário se recusou a iniciar a sessão;
  • [USERNAME] — O apelido escolhido pelo usuário, codificado de forma apropriada para um parâmetro de URL. Vazio se o usuário se recusou a iniciar a sessão; CUIDADO: trate o apelido para exibição — cuidado com usuários de nome <script>!
  • [CURRENCY] — Código de moeda para a Carteira do usuário (USD, EUR, BRL etc.) — vazio se o usuário se recusou a iniciar a sessão;
  • [AUTH] — O HMAC-SHA1 do URL completo relativo ao servidor (ex.: começando com "/checkout.php") computado como se [AUTH] fosse uma string vazia e o resto com os valores no lugar. A chave HMAC é a sua chave secreta para ItemCart.

PHP de exemplo para geração do valor "auth":
define( 'CHAVE_SECRETA_ITEMCART', '11111111111111111111111111111111' ); $appid = '234560'; $carrinhostring = '1001,1006*2'; $totalstring = 'USD499'; $sandbox = '0'; // ou '1' $urlretorno = '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$carrinhostring\n$totalstring\n$sandbox\n$urlretorno", CHAVE_SECRETA_ITEMCART );

PHP de exemplo para validação do URL de retorno:
hash_hmac( "sha1", str_replace( $_GET['AUTH'], "", $_SERVER["REQUEST_URI"] ), CHAVE_SECRETA_ITEMCART ) === $_GET['AUTH'];

O código de autenticação no formulário HTML de exemplo é computado com uma chave secreta para ItemCart composta apenas pelo algarismo 1 (32 caracteres de comprimento). Dados os valores dos outros campos (appid, carrinho, total, sandbox, retorno) você terá como replicar o valor do campo "auth"; se o valor "auth" gerado por você não for igual ao informado pelo Steam, é possível que o seu código contenha erros que impedirão o funcionamento da finalização do pedido.

BuyItem

BuyItem é uma página web estruturada simples que permite que um usuário compre um item do jogo por meio de uma interface de usuário de compra simples do Steam.

Construção do URI

Construct a URI for your item as follows, and direct the player to it: https://store.steampowered.com/buyitem/{appid}/{itemdefid}/{quantity}

Parâmetros

  • appid: O ID do aplicativo associado ao item;
  • iddefinicaoitem: O ID da definição de item a exibir para compra. Deve conter uma propriedade price (ou price_category) e não conter a propriedade store_hidden. Consulte a documentação sobre esquema de inventário para detalhes;
  • qtd: Optional. É possível comprar várias instâncias de um item; se não informado, o valor 1 será usado.

Observações

Esta página simplificada só pode ser usada para vender instâncias de uma única definição de item (incluindo bundle). Para um carrinho de compras completo, use ItemCart.

Consulte a documentação sobre esquema de inventário para detalhes de como especificar itens para venda, incluindo preços e conjuntos.