Steamworks-Dokumentation
Steam-Inventar: Webfunktionen
Hierbei handelt es sich um strukturierte Webseiten, auf die Sie den Nutzer umleiten können.

Warenkorb

Mit ItemCart übertragen Sie einen oder mehrere Artikel in einem Warenkorb an den Kaufabwicklungsprozess von Steam. Den Warenkorb müssen Sie selbst in Ihrem Spiel bzw. in Ihrer UI erstellen und warten. Sie übertragen nur den Inhalt des Warenkorbs an Steam, damit die betreffenden Gegenstände verkauft und aktiviert werden können.

Ihr Shop sollte den Clientbrowser anweisen, mithilfe eines Webformulars direkt auf https://store.steampowered.com/itemcart/checkout zu POSTEN. Dort hängt es dann vom jeweiligen Browser ab, wie der Kaufprozess für den Benutzer aussieht:

Eigenständige Webbrowser (Chrome, Internet Explorer usw.):

  • Wenn Guthabenwährung nicht übereinstimmt, sofortige Weiterleitung an Rückgabe-URL mit Fehlercode, der auf mangelnde Übereinstimmung hinweist – mit Möglichkeit, die lokale Währung zu ändern und den Bezahlvorgang fortzusetzen.
  • Warenkorb mit Preisen der Einzelposten in Benutzerwährung, Gesamtpreis in Benutzerwährung und Schaltflächen für „Kaufen“ und „Abbrechen“.
  • Bei „Abbrechen“ wird die Transaktion mit dem Status „vom Benutzer abgelehnt“ abgebrochen.
  • Bei „Kaufen“ wird die Transaktion abgeschlossen.
  • Der Nutzer wird an die entsprechende Rückgabe-URL weitergeleitet.

Steam-Overlay-Webbrowser und Big Picture:

  • Wie bei Standard-Webbrowser, aber keine Anmeldung zu Beginn; Benutzer kann den Account nicht wechseln.

Spielinterner Webbrowser mit Authentifizierungscookie für Steamworks-APIs:

  • Wenn Guthabenwährung nicht übereinstimmt, sofortige Weiterleitung an Rückgabe-Url mit Fehlercode, der auf mangelnde Übereinstimmung hinweist.
  • Webseite zeigt Hinweis auf die Verwendung des Steam-Overlays an, um den Kauf zu genehmigen.
  • Das Steam-Overlay aktiviert automatisch ein Kaufen/Abbrechen-Dialogfeld.
  • Das Overlay wird geschlossen und der Ablauf wird im Standard-Webbrowser fortgesetzt, wenn der Benutzer „Kaufen“ oder „Abbrechen“ wählt.

Beispiel-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: Ihre App-ID-Nummer.
  • cart: Durch Kommas getrennte Gegenstandsdefinitionsindexnummern mit optionalem Mengensuffix xN oder *N. Die Reihenfolge spielt keine Rolle. Duplikate werden als zusätzliche Mengenangabe behandelt.
  • total: Der erwartete Gesamtpreis des Warenkorbs. Bei mangelnder Übereinstimmung schlägt die Bezahlung fehl. Das Format ist Währung in Großbuchstaben (USD, EUR, GBP usw.), gefolgt vom Gesamtwert als Zahl.
  • sandbox: 1 oder 0. Beachten Sie, dass sandbox = 1 einen Fehler auslöst, wenn Sandbox-Tests für Ihre App nicht explizit in Steamworks aktiviert wurden.
  • return: Die URL, an die der Benutzer weitergeleitet wird, wenn der Bezahlvorgang bereit zum Abschluss ist. Optionale Ersatzfelder siehe unten.
  • auth: Der HMAC-SHA1-Authentifizierungscode, berechnet aus 5 vorhergehenden Werten in festgelegter Reihenfolge anhand Ihres ItemCart-Geheimschlüssels, getrennt durch Zeilenumbrüche. Siehe Beispiel-PHP am Ende des Dokuments. Sie finden Ihren Geheimschlüssel auf dem Tab 'Wirtschaft' Ihrer Steamworks-Konfigurationsseite.
  • lang: Optionaler ICU-Sprachcode (en für Englisch) zum Festlegen der Standardsprache auf der Kassenseite. Dieses optionale Feld wird nicht identifiziert.

Die folgenden Strings werden in der Rückgabe-URL ersetzt:
  • [RESULT]: Ergebniscode (0 = Erfolg, 1 = vom Benutzer abgelehnt, 2 = nicht übereinstimmende Währungen, 3 und höher = interne Fehlercodes).
  • [ORDERID]: 64-Bit-Dezimalinteger ohne Vorzeichen für die Steam-Bestell-ID); kann mit der API ISteamMicroTxn/QueryTxn zur Prüfung der Transaktionsdetails verwendet werden. Leer, wenn vom Benutzer abgebrochen. Entspricht dem von ISteamMicroTxn/GetReport generierten Bericht.
  • [STEAMID]: 64-Bit-Dezimalinteger ohne Vorzeichen für die Steam-ID des Benutzers. Leer, wenn der Benutzer sich nicht angemeldet hat.
  • [USERNAME]: Der vom Benutzer gewählte Anzeigename, entsprechend kodiert für einen URL-Parameter. Leer, wenn der Benutzer sich nicht angemeldet hat. ACHTUNG: Achten Sie auf Angemessenheit – hüten Sie sich vor Benutzer(n) mit dem Namen < script>!
  • [CURRENCY]: Währungscode des Benutzerguthabens (USD, EUR usw). Leer, wenn der Benutzer sich nicht angemeldet hat.
  • [AUTH]: Der HMAC-SHA1 der gesamten serverrelativen URL (beginnend mit /checkout.php); wird so berechnet, als ob ein leerer String und alles Andere bereits ersetzt worden wäre. Der HMAC-Schlüssel ist Ihr ItemCart-Geheimschlüssel.

Beispiel-PHP zur Generierung des „auth“-Wertes:
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 );

Beispiel-PHP zur Validierung der Rückgabe-URL:
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']

Der Authentifizierungscode im Beispiel-HTML-Formular wird so berechnet, als ob der ItemCart-Geheimschlüssel nur aus Einsen bestehen würde (32 Zeichen lang). Anhand der übrigen Feldwerte (appid, cart, total, sandbox, return, lang) sollten Sie den Wert für „auth“ replizieren können. Falls Ihr Wert für „auth“ nicht übereinstimmt, weist Ihr Code wahrscheinlich Fehler auf, die die ordnungsgemäße Funktion des Bezahlvorgangs verhindern.

BuyItem

BuyItem ist eine einfach strukturierte Webseite, auf der die Benutzer über eine simple Steam-Kaufoberfläche einen spielinternen Gegenstand erwerben können.

URI-Aufbau

Bauen Sie den URI für Ihren Artikel folgendermaßen auf und leiten Sie den Spieler an ihn weiter: https://store.steampowered.com/buyitem/{appid}}/{itemdefid}/{quantity}.

Parameter

  • appid: Die ID der Anwendung, auf die sich der Gegenstand bezieht.
  • itemdefid: Die Gegenstandsdefinitions-ID, die für den Kauf vorgelegt wird. Dieser Gegenstand muss einen Preis (oder eine price_category) besitzen und darf nicht auf "store_hidden" gesetzt sein. Weitere Informationen finden Sie im Gegenstandsschema.
  • quantity: Optional. Es können mehrere Instanzen des Gegenstands gekauft werden. Wenn nicht angegeben, wird der Standardwert 1 angenommen.

Hinweise

Diese vereinfachte Seite kann nur zum Verkauf von Instanzen einer einzigen ItemDef (einschl. verkäufliche Bündel) genutzt werden. Anweisungen zur Implementierung eines voll funktionsfähigen Warenkorbs finden Sie in der Beschreibung von ItemCart.

Details dazu, wie Sie Gegenstände verkäuflich machen, sowie zu Preisen und Bündeln finden Sie in der Dokumentation des Inventarschemas.