Gegenstände zum Inventar hinzufügen basierend auf der Xsolla-Lösung

Xsolla bietet eine Lösung für die Implementierung des Spielerinventars basierend auf dem Ingame-Online-Shop-Produkt. Diese Lösung ermöglicht es Ihnen, alle Käufe und Benutzerprämien plattformübergreifend zu synchronisieren.

Sie können dem Spielerinventar Gegenstände hinzufügen, die über das Zahlungsportal eines Drittanbieters (z. B. In-App-Käufe über Google Play) erworben wurden.

Gegenstände werden dem Inventar hinzugefügt, wenn die API-Serverabfrage Grant items to users aufgerufen wird. Wenn Sie Firebase für das Backend der Anwendung verwenden, nutzen Sie die vorgefertigte Cloud-Funktion:

  1. Fügen Sie die Cloud-Funktion zum Firebase-Projekt hinzu.
  2. Implementieren Sie die Logik für den Aufruf der Funktion.

Cloud-Funktion zum Firebase-Projekt hinzufügen

  1. Initialisieren Sie Ihr Firebase-Projekt.
  2. Importieren und konfigurieren Sie die Funktion für das Hinzufügen von Gegenständen zum Inventar, wobei:
    • <MerchantID> der Händler-ID entspricht. Diese finden Sie im Kundenportal unter Projekteinstellungen > Webhooks.
    • <ProjectID> der Projekt-ID entspricht. Diese finden Sie im Kundenportal unter Projekteinstellungen > Projekt-ID.
    • <ApiKey> dem API-Schlüssel entspricht. Diesen finden Sie im Kundenportal unter Firmeneinstellungen > API-Schlüssel.

Funktionscode für das Hinzufügen von Gegenständen zum Inventar:

Copy
Full screen
Small screen
const merchantId = "<MerchantID>";
const projectId = "<ProjectID>";
const apiKey = "<ApiKey>";

exports.redeem = functions.https.onRequest((request, response) => {
  const sku = request.body.sku;
  const quantity = request.body.quantity;
  const userId = request.body.user_id;

  const authHeader = Buffer.from(`${merchantId}:${apiKey}`).toString("base64");

  const postData = JSON.stringify(
      [{
        "comment": "Purchased by Google Pay",
        "platform": "xsolla",
        "user": {
          "id": userId,
        },
        "items": [{
          "sku": sku,
          "quantity": quantity,
        }],
      }]
  );

  const options = {
    hostname: "store.xsolla.com",
    port: 443,
    path: `/api/v2/project/${projectId}/inventory/reward`,
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Content-Length": postData.length,
      "Authorization": `Basic ${authHeader}`,
    },
  };

  const req = https.request(options, (res) => {
    if (res.statusCode == 200) {
      response.status(200).send();
      return;
    }
    if (res.statusCode == 404) {
      response.status(404).send();
      return;
    }
    if (res.statusCode == 401) {
      response.status(401).send();
      return;
    }
    response.status(400).send();

    res.on("data", (d) => {
      process.stdout.write(d);
    });
  });
  req.on("error", (e) => {
    response.status(500).send(e.message);
  });

  req.write(postData);
  req.end();
});

  1. Stellen Sie die Funktion in einer Produktionsumgebung bereit, wie in diesem Beispiel gezeigt.

Funktion aus der Anwendung aufrufen

Um dem Inventar Gegenstände hinzufügen zu können, bedarf es einer Logik, mit der Sie die Funktion aus der Anwendung aufrufen können. Geben Sie redeem als Funktionsnamen an, und übermitteln Sie die Parameter sku, quantity, user_id an die Funktion.

Bei einigen Abrechnungsschnittstellen (z. B. In-App-Käufe über Google Play) muss die Logik für das Hinzufügen eines Gegenstands zum Inventar clientseitig initiiert werden. Implementieren Sie In diesem Fall eine clientseitige Methode zum Aufrufen der redeem-Funktion.

Beispielsweise können Sie für eine Implementierung unter Android das Modul xsolla-googleplay-sdk verwenden. Damit können Sie über Google Play getätigte In-App-Käufe dem Inventar hinzufügen.

So übernehmen Sie das Beispiel für Ihr Projekt:

  1. Starten Sie Android Studio.
  2. Fügen Sie Ihrem Projekt das Modul xsolla-googleplay-sdk hinzu.
  3. Initialisieren Sie die Bibliothek. Fügen Sie dazu die folgende Zeile in den Quellcode Ihres Android-Projekts ein, wobei <your-deployment-host> dem Host der Cloud-Funktions-URL entspricht (z. B.: https://us-central1-xsolla-sdk-demo.cloudfunctions.net):

Copy
Full screen
Small screen
InventoryAdmin.init("<your-deployment-host>")

Die URL der Cloud-Funktion wird in der Firebase-Befehlszeile angezeigt, nachdem die Funktion in der Produktionsumgebung ausgeführt wurde. Die Funktions-URL ist außerdem in der Firebase-Konsole unter Functions > Dashboard zu finden.

  1. Implementieren Sie den Aufruf der Methode InventoryAdmin.grantItemToUser (sku, userId, quantity, callback) entsprechend der Anwendungslogik. Der Rückruf liefert Daten darüber, ob der Gegenstand dem Inventar erfolgreich hinzugefügt wurde.

War dieser Artikel hilfreich?
Vielen Dank!
Gibt es etwas, das wir verbessern können? Nachricht
Das tut uns leid
Bitte erläutern Sie, weshalb dieser Artikel nicht hilfreich ist. Nachricht
Vielen Dank für Ihr Feedback!
Wir werden Ihr Feedback aufgreifen und dazu nutzen, Ihr Erlebnis verbessern.
Diese Seite bewerten
Diese Seite bewerten
Gibt es etwas, das wir verbessern können?

Jetzt nicht

Vielen Dank für Ihr Feedback!
Letztmalig aktualisiert: 21. Oktober 2022

Haben Sie einen Tippfehler oder einen anderen Textfehler gefunden? Wählen Sie den Text aus und drücken Sie Strg+Eingabe.

Problem melden
Wir überprüfen unsere Inhalte ständig. Ihr Feedback hilft uns, sie zu verbessern.
Geben Sie eine E-Mail-Adresse an, damit wir Sie erreichen können
Vielen Dank für Ihr Feedback!