Документация Steamworks
Веб-функции инвентаря Steam
Далее приводятся веб-страницы, на которые можно перенаправлять пользователей.

ItemCart

Функция ItemCart используется для отправки пользователю корзины с одним или несколькими предметами для покупки через Steam. Вам потребуется собрать и поддерживать состояние корзины внутри игры или пользовательского интерфейса, а затем отправить её содержимое в Steam для покупки и активации этих предметов.

Ваш магазин должен направить браузер клиента методом POST прямо на https://store.steampowered.com/itemcart/checkout, используя веб-форму. После этого пользователю, в зависимости от браузера, будет показан тот или иной сценарий покупки:

Отдельный браузер (Chrome, Internet Explorer и проч.):

  • Если валюта кошелька не соответствует, немедленно перенаправляет пользователя по обратной ссылке с кодом результата, указывающего на несоответствие (как следствие, у вас есть возможность изменить локальную валюту магазина и возобновить процесс расчёта).
  • В корзине пользователю показываются цены отдельных предметов и общая стоимость корзины в его валюте, а также кнопки «Купить» и «Отмена».
  • Если пользователь нажмёт «Отмена», транзакция отменяется со статусом «пользователь отклонил».
  • Если пользователь нажмёт «Купить», транзакция автоматически завершается.
  • Пользователь перенаправляется по соответствующей обратной ссылке.

Браузер в оверлее Steam или в режиме Big Picture:

  • То же, что и в обычном браузере, но без шага авторизации пользователя. Кроме того, пользователь не может сменить аккаунт

Внутриигровой браузер с cookie-файлом аутентификации :

  • Если валюта кошелька не соответствует, немедленно перенаправляет пользователя по обратной ссылке с кодом результата, указывающего на несоответствие
  • Веб-страница показывает уведомление об использовании оверлея 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 — это номер приложения.
  • cart — список номеров itemdefid, разделённых запятыми. Опционально добавляется xN или *N в качестве суффикса, указывающего на количество предметов. Порядок не важен. Дубликаты трактуются как дополнительные предметы.
  • total — ожидаемая общая стоимость корзины. Оплата не пройдёт, если это значение не соответствует. Формат — тип валюты заглавными буквами (USD, EUR, GBP и проч.), за которым следует число.
  • sandbox — 1 или 0. Обратите внимание, что sandbox=1 даст сбой, если тестирование с помощью функции sandbox не включено для вашего приложения в Steamworks.
  • return — ссылка, по которой пользователь будет перенаправлен, когда оплата совершена и готова к завершению. Опциональные поля описаны ниже.
  • auth — код аутентификации HMAC-SHA1, вычисленный на основе пяти предыдущих значений, разделенных знаком перехода на новую строку, с использованием секретного ключа ItemCart. Пример PHP приведён в конце документа. Секретный ключ находится на вкладке «Экономика» раздела «Сообщество» страницы управления данными приложения.
  • lang — опциональный код языка ICU ('en' для английского), который устанавливает язык на странице покупки по умолчанию. Это опциональное поле не проходит проверку подлинности.

Следующие строки подставляются в обратной ссылке.
  • [RESULT] — код результата ( 0 = успех, 1 = пользователь отклонил, 2 = несовпадение валют, 3 или выше — внутренний код сбоя).
  • [ORDERID] — 64-битное десятеричное целое число без знака, представляющее собой номер заказа. Оно может использоваться с функцией ISteamMicroTxn/QueryTxn для проверки параметров транзакции. Пустое, если пользователь отклонил транзакцию. Соответствует отчёту, генерируемому ISteamMicroTxn/GetReport
  • [STEAMID] - 64-битное десятеричное целое число без знака, Steam ID пользователя. Пусто, если пользователь отказался войти в аккаунт.
  • [USERNAME] — имя профиля пользователя, закодированное для корректного отображения в качестве параметра ссылки. Пусто, если пользователь отказался войти в аккаунт. ВНИМАНИЕ: обрабатывайте имена для отображения и опасайтесь пользователей, которые имеют < script> в имени!
  • [CURRENCY] код валюты кошелька пользователя (USD, EUR и проч.). Пусто, если пользователь отказался войти в аккаунт.
  • [AUTH] — HMAC-SHA1 всей ссылки, относительной к серверу (к примеру, начинающейся с /checkout.php), вычисленной как если бы [AUTH] был пустой строкой, а все остальные значения уже подставлены. Ключ HMAC — секретный ключ ItemCart.

Пример PHP для генерации значения 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 для проверки обратной ссылки.
hash_hmac( "sha1", str_replace( $_GET['AUTH'], "", $_SERVER["REQUEST_URI"] ), SECRET_ITEMCART_KEY ) === $_GET['AUTH']

Код аутентификации в простой форме HTML рассчитывается, как если бы секретный ключ ItemCart состоял только из единиц и его длина составляла 32 знака. С учётом значений других полей (appid, cart, total, sandbox, return, lang) вы должны воспроизвести значение auth. Если сгенерированное вами значение auth не совпадает, в вашем коде, вероятно, есть ошибки, которые приведут к сбоям при покупке.

BuyItem

BuyItem — простая структурированная веб-страница, позволяющая пользователю купить внутриигровой предмет, используя простой интерфейс покупки в Steam.

Создание URI

Сгенерируйте URI для предмета по следующему шаблону и перенаправьте туда игрока: https://store.steampowered.com/buyitem/{appid}/{itemdefid}/{quantity}

Параметры

  • appid: номер приложения, к которому относится предмет.
  • itemdefid: номер определения покупаемого предмета. Для этого предмета должны быть определены значения полей price или price_category, а поле store_hidden не должно быть true. См. раздел «Схема инвентаря».
  • quantity: необязательно. Можно приобретать несколько одинаковых предметов. Если поле не заполнено, по умолчанию равно 1.

Примечания

Эта упрощённая страница используется только для продажи одной или нескольких копий одного предмета (включая типа bundle). Использование полноценной корзины описано в разделе ItemCart.

Подробно информация об определениях предметов, включая цены и наборы, приведена в разделе «Схема инвентаря».