您可以将用户重新定向至这些结构化网页。
购物车
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 文档,了解指定物品销售细节的具体内容,包括定价与捆绑包。