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 In-Game Store-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 Benutzern Artikel gewähren 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 zum Hinzufügen von Artikeln zum Inventar, wobei:

    • <MerchantID> die Händler-ID ist. Diese finden Sie im Kundenportal:
      • unter Firmeneinstellungen > Firma.
      • in der URL in der Adresszeile des Browsers auf einer beliebigen Seite im Kundenportal. Die URL weist das folgende Format auf: https:​//publisher.xsolla.com/<merchant ID>/<Publisher Account section>.

    • <ProjectID> die Projekt-ID ist. Diese finden Sie im Kundenportal:
      • neben dem Namen Ihres Projekts.
      • unter Projekteinstellungen > Projekt-ID.

    • <ApiKey> der API-Schlüssel ist. Diesen finden Sie im Kundenportal unter Firmeneinstellungen > API-Schlüssel oder Projekteinstellungen > API-Schlüssel.
Achtung

Weitere Informationen über die Arbeit mit API-Schlüsseln finden Sie in der API-Referenz.

Wichtige Empfehlungen:

  • Sie sind selbst dafür verantwortlich, den generierten API-Schlüssel zu speichern. Der API-Schlüssel wird im Kundenportal nur einmal angezeigt, nämlich dann, wenn er erstellt wird.
  • Halten Sie Ihren API-Schlüssel geheim. Er gewährt den Zugang zu Ihrem persönlichen Konto und Ihren Projekten im Kundenportal.
  • Der API-Schlüssel muss auf Ihrem Server gespeichert sein, niemals in Binärdateien oder im Frontend.

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: 22. Januar 2024

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!