Steamworks 文献库
Steam 库存网页功能
您可以将用户重新定向至这些结构化网页。

购物车

ItemCart 能将装有一个或多个物品的购物车发送给 Steam,以便通过 Steam 购买。 您需要在您自己的游戏或 UI 中构建并维护该购物车,然后将车中内容发送至 Steam,以便购买并激活这些物品。

您的商店应该让客户端浏览器通过 Web 窗体直接 POST 至 https://store.steampowered.com/itemcart/checkout。 用户随后体验到的购买流程将因浏览器不同而稍有差异:

独立网页浏览器(Chrome、IE 等):

  • 如果钱包币种不匹配,则立即重新定向至返回 URL,并使用结果代码显示不匹配(提供了修改商店的本地币种并继续付款的机会)。
  • 购物车有以用户币种显示的各项物品单价和总价,以及“购买”/“取消”按钮。
  • 若选择“取消”选项,交易将以“用户拒绝”状态取消。
  • 若选择“购买”选项,交易将自动完成。
  • 用户将被重新定向至相应的返回 URL。

Steam 界面/大屏幕网页浏览器:

  • 与标准网页浏览器相同,无需初始登录步骤,用户无法更改帐户。

带 Steamworks API 验证 cookie 的游戏内网页浏览器:

  • 如果钱包币种不匹配,立即重新定向至返回 URL,并使用结果代码显示不匹配。
  • 网页显示通知 ,要求使用 Steam 界面授权购买。
  • Steam 界面将自动激活,并出现“购买/取消”对话框。
  • 界面关闭,用户选择购买或取消后,按标准网页浏览器的流程继续。

HTML 示例

<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 – 为您的 App ID 号。
  • cart – 为逗号分隔的物品定义索引号,并可选用 xN 或 *N 数量后缀。 先后顺序无关紧要。 重复项视为额外数量。
  • total – 为购物车内的预估物品总价。 若此项不匹配,付款将失败。 格式为在大写货币类型(USD、EUR、GBP 等)后加上数字总额。
  • sandbox – 为 1 或 0。 注意,只要您的应用没有在 Steamworks 中特别启用沙盒测试,sandbox=1 将失败。
  • return – 这是购买完成准备结束时,用户将收到的 URL。 后文描述了可选替换字段。
  • auth – 为 HMAC-SHA1 验证码,使用您的 Itemcart 密钥并由序列中的前五个值计算得出,用新行分隔。 参见文末的 PHP 示例。 您可以在您应用的 Steamworks 配置页面的经济体选项卡中查看密钥。
  • lang – 可选的 ICU 语言码(“en”指英语),用于设置付款页面的默认语言。 此可选字段未经过验证。

下列字符串将在返回 URL 中取代:
  • [RESULT] – 结果代码(0 = 成功,1 = 用户拒绝,2 = 币种不符,3 及以上为内部故障代码)。
  • [ORDERID] – 64 位无符号十进制整数,代表 Steam“orderid”,可用于 ISteamMicroTxn/QueryTxn API,验证交易详情。若用户取消,则为空白。 匹配报告由 ISteamMicroTxn/GetReport 生成。
  • [STEAMID] – 64 位无符号十进制整数,代表用户的 Steam ID。 若用户拒绝登录,则为空白。
  • [USERNAME] – 用户选择的显示名称,为 URL 参数进行适当编码。 若用户拒绝登录,则为空白。 警告:显示前先清理,请当心名为 < script> 的用户!
  • [CURRENCY] – 用户钱包的货币代码(USD、EUR 等)。若用户拒绝登录,则为空白。
  • [AUTH] – 整个服务器相关 URL 的 HMAC-SHA1(如,由“/checkout.php”开始)按 [AUTH] 为空白字符串,且其他一切均已替代的情况计算。 HMAC 密钥是您的 Itemcart 密钥。

生成“auth”值的 PHP 示例:
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 );

验证返回 URL 的 PHP 示例:
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']

示例 HTML 表单中的验证码按 Itemcart 密钥均为“1”进行计算(32 个字符长)。 根据其他字段的值 (appid、cart、total、sandbox、return、lang),您应该能够复制 “auth”值;如果您生成的“auth”值不匹配,您的代码可能有误 ,将无法付款。

BuyItem

BuyItem 为简单的结构化网页,允许用户使用简明的 Steam 购买 UI,购买游戏内物品。

URI 构造

按以下格式为您的物品创立一个 URL,并引导玩家前往该链接:https://store.steampowered.com/buyitem/{appid}/{itemdefid}/{quantity}

参数

  • appid:与物品相关联的应用程序的 ID。
  • itemdefid:用于购买的 ItemDef ID。 此物品必须有价格(或 price_category),且必须不能为 store_hidden。 参见物品 Schema。
  • quantity:可选。 可以购买一个物品的多个实例。若不填,默认为 1 。

注意

此简化页面仅能用于销售单个 ItemDef(包括可售捆绑包)的实例。 若需了解功能完备的购物车,请参见 ItemCart。

参见库存 Schema 文档,了解指定物品销售细节的具体内容,包括定价与捆绑包。