Automatische Katalogaktualisierung über API

Mithilfe von In-Game Store-API-Aufrufen ist es möglich, Kataloge automatisiert zu erstellen und zu aktualisieren. Dadurch können Sie Ihren Katalog ohne viel Zeitaufwand auf dem neuesten Stand halten. Mit der Katalogautomatisierung können Sie sowohl Artikel als auch Werbeaktion erstellen und aktualisieren sowie Daten aus externen Systemen importieren.

Dies reduziert den Zeitaufwand für die Pflege und Aktualisierung von:

  • Katalogen mit einer Vielzahl von Artikeln
  • Werbeaktionen jeglicher Art
  • länderspezifischen Preisen

Achtung

Damit die Nutzerinteraktionsrate nicht einbricht, ist es wichtig, den Artikelkatalog nach der Erstellung aufseiten von Xsolla aktuell zu halten. Wir empfehlen, den Katalog bei Xsolla zu aktualisieren, wenn Sie Ihrerseits Aktualisierungen vorgenommen haben, z. B. Produkte hinzugefügt oder Preise geändert haben.

Sie können:

Die Basisauthentifizierung wird für API-Aufrufe genutzt, um Artikel und Werbeaktionen zu erstellen und zu aktualisieren. Übermitteln Sie Authorization:Basic <your_authorization_basic_key>, wobei <your_authorization_basic_key> das gemäß dem Base64-Standard kodierte Paar Händler-ID:API-Schlüssel ist. Die Parameter finden Sie im Kundenportal:

  • Die Händler-ID finden Sie:
    • 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>.

  • Der API-Schlüssel wird im Kundenportal nur einmal angezeigt, nämlich dann, wenn er erstellt wird. Sie sind selbst dafür verantwortlich, den Schlüssel zu speichern. Einen neuen Schlüssel können Sie in den folgenden Abschnitten erstellen:
    • Firmeneinstellungen > API-Schlüssel
    • Projekteinstellungen > API-Schlüssel

Artikel erstellen und aktualisieren

Wenn Sie eine Vielzahl von Artikeln erstellen müssen, können Sie ein Skript erstellen, das die API-Methode des gewünschten Artikeltyps dementsprechend oft aufruft.

Achtung

Die Liste der Parameter, die als Antwort auf die Artikelabfrage zurückgegeben wird, unterscheidet sich von der Liste der Parameter, die Sie beim Aktualisieren des Katalogs übermitteln müssen. Übermitteln Sie zusätzlich zu den erforderlichen und aktualisierten Parametern in der Artikelaktualisierungsmethode die Parameter, die als Antwort auf die Artikelanfrage zurückgegeben werden.

Beispiel:

In der Methode Virtuelle Gegenstände abrufen wird ein limits-Objekt mit den Benutzerlimit-Daten zurückgegeben. Wenn Sie nur den Preis oder den Namen des Gegenstands aktualisieren möchten, übermitteln Sie die aktuellen Daten des limits-Objekts in der Methode Virtuellen Gegenstand aktualisieren. Wird das limits-Objekt nicht übermittelt, werden die Limitdaten gelöscht, wenn der Artikel mit der Methode Virtuellen Gegenstand aktualisieren aktualisiert wird.

Virtuelle Gegenstände

So aktualisieren Sie den Katalog:

  1. Rufen Sie die Daten aus dem Katalog mithilfe der API-Methode Virtuellen Gegenstand abrufen oder Liste aller virtuellen Gegenstände abrufen ab.
  2. Übermitteln Sie die neuen Parameterwerte mithilfe der API-Methode Virtuellen Gegenstand aktualisieren.

Verwenden Sie die API-Methode Virtuellen Gegenstand erstellen, um einen virtuellen Gegenstand zu erstellen.

Bundles

So aktualisieren Sie den Katalog:

  1. Rufen Sie die Daten aus dem Katalog mithilfe der API-Methode Liste der Bundles abrufen ab.
  2. Übermitteln Sie die neuen Parameterwerte mithilfe der API-Methode Bundles aktualisieren.

Verwenden Sie die API-Methode Bundle erstellen, um ein Bundle zu erstellen.
Wie Sie Spielschlüssel, Länderbeschränkungen oder Preise den Bundles hinzufügen, erfahren Sie in dieser Anleitung.

Werbeaktionen erstellen und aktualisieren

Achtung
Die Liste der Parameter, die von den “Abrufen”-Methoden zurückgegeben wird, unterscheidet sich von den Parametern, die Sie in den Werbeaktionsaktualisierungsmethoden übermitteln. Neben den erforderlichen und aktualisierten Parametern müssen Sie auch die Parameter aus der “Aktualisieren”-Methode, die in der Antwort auf die Anfrage zurückgegeben werden, an die Methode übermitteln, mit der Sie die Liste der Werbeaktionen abrufen.

Gutscheine

Hinweis
Damit Gutscheinaktionen korrekt funktionieren, müssen Sie zunächst eine Werbeaktion erstellen und dann die Codes für diese Werbeaktion generieren.

So aktualisieren Sie eine Werbeaktion:

  1. Rufen Sie die Daten aus dem Katalog mithilfe der API-Methode Gutscheinaktion abrufen oder Liste der Gutscheinaktionen abrufen ab.
  2. Übermitteln Sie die neuen Parameterwerte mithilfe der API-Methode Gutscheinaktion aktualisieren.
  3. Aktivieren Sie die Werbeaktion mithilfe der API-Methode Gutscheinaktion aktivieren.

Verwenden Sie zunächst die API-Methode Gutscheinaktion erstellen und dann Gutscheincode erstellen, um eine Werbeaktion samt eigenen Gutscheincodes zu erstellen. Alternativ können Sie mithilfe der API-Methode Gutscheincodes generieren zufällige Gutscheincodes generieren.
Mit der API-Methode Gutscheinaktion deaktivieren können Sie eine Werbeaktion deaktivieren.

Promocodes

Hinweis
Damit Promocode-Aktionen korrekt funktionieren, müssen Sie zunächst eine Werbeaktion erstellen und dann die Codes für diese Werbeaktion generieren.

So aktualisieren Sie eine Werbeaktion:

  1. Rufen Sie die Daten aus dem Katalog mithilfe der API-Methode Promocode-Aktion abrufen oder Liste der Promocode-Aktionen abrufen ab.
  2. Übermitteln Sie die neuen Parameterwerte mithilfe der API-Methode Promocode-Aktion aktualisieren.
  3. Aktivieren Sie die Werbeaktion mithilfe der API-Methode Promocode-Aktion aktivieren.

Verwenden Sie zunächst die API-Methode Promocode-Aktion erstellen und dann Code für Promocode-Aktion erstellen, um eine Werbeaktion samt eigenen Promocodes zu erstellen. Alternativ können Sie mithilfe der API-Methode Codes für eine Promocode-Aktion generieren zufällige Promocodes generieren.
Mit der API-Methode Promocode-Aktion deaktivieren können Sie eine Werbeaktion deaktivieren.

Rabatte

So aktualisieren Sie eine Werbeaktion:

  1. Rufen Sie die Daten aus dem Katalog mithilfe der API-Methode Artikelaktion abrufen oder Liste der Artikelaktionen abrufen ab.
  2. Übermitteln Sie die neuen Parameterwerte mithilfe der API-Methode Artikelaktion aktualisieren.
  3. Aktivieren Sie die Werbeaktion mithilfe der API-Methode Werbeaktion aktivieren.

Verwenden Sie die API-Methode Rabattaktion für Artikel erstellen, um eine Werbeaktion zu erstellen.
Mit der API-Methode Werbeaktion deaktivieren können Sie eine Werbeaktion deaktivieren.

Boni

So aktualisieren Sie eine Werbeaktion:

  1. Rufen Sie die Daten aus dem Katalog mithilfe der API-Methode Bonusaktion abrufen oder Liste der Bonusaktionen abrufen ab.
  2. Übermitteln Sie die neuen Parameterwerte mithilfe der API-Methode Bonusaktion aktualisieren.
  3. Aktivieren Sie die Werbeaktion mithilfe der API-Methode Werbeaktion aktivieren.

Verwenden Sie die API-Methode Bonusaktion erstellen, um eine Werbeaktion zu erstellen.
Mit der API-Methode Werbeaktion deaktivieren können Sie eine Werbeaktion deaktivieren.

Artikel automatisch über API erstellen

Wenn Sie eine Vielzahl von Artikeln auf der Grundlage von Daten aus Ihrem System erstellen müssen, können Sie den Vorgang mithilfe der API automatisieren.

Dazu müssen Sie:

Wenn Sie Gegenstandsgruppen verwenden möchten, müssen Sie diese im Voraus im Kundenportal erstellen.

Wenn Sie mehrere Artikeltypen verwenden möchten, sollten diese in der folgenden Reihenfolge erstellt werden:

  1. Gegenstandsgruppen im Kundenportal
  2. virtuelle Währungen
  3. virtuelle Gegenstände
  4. virtuelle Währungspakete
  5. Bundles

Nachfolgend sehen Sie ein Beispielskript, das wiederholt die Methode Virtuellen Gegenstand erstellen aufruft, um virtuelle Gegenstände zu erstellen.

Das Skript wurde mit JavaScript und Node.js, der JavaScript-Laufzeitumgebung, entwickelt.

  1. Importieren Sie die fetch-Funktion des Moduls “node-fetch”, um HTTP-Anfragen an den Xsolla-Server senden zu können.
Copy
Full screen
Small screen
import fetch from "node-fetch";
  1. Legen Sie die für die Anfrageautorisierung benötigten Konstanten fest. Fügen Sie anstelle von <your project_id from PA> und <your api key from PA> Ihre Werte für die Projekt-ID und den API-Schlüssel ein, die für die spätere Verwendung in API-Anfragen mit Base64 kodiert werden.
Copy
Full screen
Small screen
const projectId = <your project_id from PA>;

const apiKey = <your api key from PA>;

const buff = new Buffer(`${projectId}:${apiKey}`);

const basicAuth = buff.toString('base64')
  1. Implementieren Sie die Hilfsfunktion sleep. Diese dient dazu, das Senden von Anfragen zu verzögern. Das ist notwendig, um die Ratenbegrenzung bei API-Anfragen nicht zu überschreiten.
Copy
Full screen
Small screen
function sleep(ms) {

   return new Promise(resolve => setTimeout(resolve, ms));

}
  1. Implementieren Sie die Funktion getItems, um Artikeldaten aus Ihrem System abzurufen.
Copy
Full screen
Small screen
async function getItems() {

   // receive items from the original system or read from a pre-prepared file

   return items;

}
  1. Implementieren Sie die für Ihr System spezifische Funktion prepareData, um die Artikeldaten gemäß dem erforderlichen Datenformat des API-Aufrufs Virtuellen Gegenstand erstellen zu formatieren.
Copy
Full screen
Small screen
function prepareData(items) {

   // format items in accordance with API requirements

   return formattedItems;

}
  1. Ergänzen Sie die Funktion createItem. Diese Funktion sendet eine POST-Anfrage an die Xsolla-API, um einen virtuellen Gegenstand zu erstellen.
Copy
Full screen
Small screen
async function createItem(item) {

   const url = `https://store.xsolla.com/api/v2/project/${projectId}/admin/items/virtual_items`;



   return await fetch(url, {

       method: "POST",

       headers: {

           Authorization: "Basic " + basicAuth,

           "Content-Type": "application/json"

       },

       body: JSON.stringify(item),

   });

}
  1. Ergänzen Sie die Funktion checkItemExist, um zu prüfen, ob ein virtueller Gegenstand mit der angegebenen SKU existiert. Die Funktion sendet eine GET-Anfrage an die Xsolla-API:
    • Enthält die Antwort den HTTP-Statuscode 404, wurde der Gegenstand mit der angegebenen SKU nicht gefunden und muss erstellt werden.
    • Enthält die Antwort den HTTP-Statuscode 200, wurde der Gegenstand mit der angegebenen SKU gefunden und muss nicht erstellt werden.
Copy
Full screen
Small screen
async function checkItemExist(sku) {

   const url = `https://store.xsolla.com/api/v2/project/${projectId}/admin/items/virtual_items/sku/${sku}`;

   const response = await fetch(url, {

       method: "GET",

       headers: {

           Authorization: "Basic " + basicAuth

       }

   });

   return response.status !== 404;

}
  1. Ergänzen Sie die Funktion createItems, die die Liste der Gegenstände durchgeht und prüft, ob es aufseiten von Xsolla einen Gegenstand mit einer SKU aus Ihrem System gibt. Wurde kein Gegenstand mit einer solchen SKU gefunden, erstellt die Funktion einen Gegenstand. Der Fortschritt wird in der Konsole angezeigt.
Copy
Full screen
Small screen
async function createItems(items) {

   let success = 0;

   let alreadyCreated = 0;

   for (let i = 0; i < items.length; i++) {

       const item = items[i];

       if (item['sku'] === undefined) {

           console.log(`${i} Field "sku" not specified`);

           continue;

       }

       const sku = item['sku'];

       if (await checkItemExist(sku)) {

           console.log(`${i} Item with sku "${sku}" already created`);

           alreadyCreated++;

           continue;

       }

       const response = await createItem(item);

       if (response.status === 201) {

           console.log(`${i} Item with sku "${sku}" successfully created`)

           success++;

       } else {

           const jsonData = await response.json();

           console.log(`${i} An error occurred while creating the items with sku "${sku}"`);

           console.log(jsonData);

       }

       // add a delay so as not to run into rate limits

       await sleep(500);

   }

   console.log(`${success} items out of ${items.length} created. ${alreadyCreated} items already existed`);

}
  1. Ergänzen Sie die Funktion run. Diese Funktion ruft alle oben genannten Funktionen in der richtigen Reihenfolge auf.
Copy
Full screen
Small screen
async function run() {

 const items = await getItems();

 const formattedItems = prepareData(items);

 await createItems(formattedItems);

}

Der vollständige Code:

Copy
Full screen
Small screen
import fetch from "node-fetch";

const projectId = <your project_id from PA>;
const apiKey = <your api key from PA>;
const buff = new Buffer(`${projectId}:${apiKey}`);
const basicAuth = buff.toString('base64')

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function getItems() {
    // receive items from the original system or read from a pre-prepared file
    return items;
}

function prepareData(items) {
    // format items in accordance with API requirements
    return formatedItems;
}

async function createItem(item) {
    const url = `https://store.xsolla.com/api/v2/project/${projectId}/admin/items/virtual_items`;

    return await fetch(url, {
        method: "POST",
        headers: {
            Authorization: "Basic " + basicAuth,
            "Content-Type": "application/json"
        },
        body: JSON.stringify(item),
    });
}

async function isItemExisted(sku) {
    const url = `https://store.xsolla.com/api/v2/project/${projectId}/admin/items/virtual_items/sku/${sku}`;
    const response = await fetch(url, {
        method: "GET",
        headers: {
            Authorization: "Basic " + basicAuth
        }
    });
    return response.status !== 404;
}

async function createItems(items) {
    let success = 0;
    let alreadyCreated = 0;
    for (let i = 0; i < items.length; i++) {
        const item = items[i];
        if (item['sku'] === undefined) {
            console.log(`${i} Field "sku" not specified`);
            continue;
        }
        const sku = item['sku'];
        if (await isItemExisted(sku)) {
            console.log(`${i} Item with sku "${sku}" already created`);
            alreadyCreated++;
            continue;
        }
        const response = await createItem(item);
        if (response.status === 201) {
            console.log(`${i} Item with sku "${sku}" successfully created`)
            success++;
        } else {
            const jsonData = await response.json();
            console.log(`${i} An error occurred while creating the items with sku "${sku}"`);
            console.log(jsonData);
        }
        // add a delay so as not to run into rate limits
        await sleep(500);
    }
    console.log(`${success} items out of ${items.length} created. ${alreadyCreated} items already existed`);
}

async function run() {
  const items = await getItems();
  const formattedItems = prepareData(items);
  await createItems(formattedItems);
}

run(); 

Aktualisieren durch den Import aus externen Systemen

Befolgen Sie die Anweisungen für den Import von Daten aus externen Systemen wie z. B. PlayFab oder Google Play.
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.
Letztmalig aktualisiert: 8. November 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!