Automatisch endendes Abo

So funktioniert's

Ein automatisch endendes Abo ist ein Premium-Bonus und Einmalkauf. Der Benutzer muss es also nach Ablauf erneut erwerben.

Hauptmerkmale:

  • Das Abonnement kann beliebig oft erworben werden.
  • Wenn der Benutzer das Abonnement erneut kauft, bleibt die Anzahl der Gegenstände im Inventar unverändert, jedoch verlängert sich die Zeit bis zum Ablauf des Abonnements.
  • Das Ablaufdatum des Abonnements lässt sich im Kundenportal konfigurieren.

Einschränkungen:

  • Sie können das automatisch endende Abo nur vonseiten des Spielservers verwalten.

Für wen ist es

  • Partner, die den Ingame-Online-Shop integriert haben und einen neuen Gegenstandstyp (Abonnments) einrichten möchten.
  • Partner, die Season Pass, Battle Pass oder sonstige Typen von Gegenständen verkaufen möchten, mit denen Benutzer Vorteile oder weitere Inhalte für eine begrenzte Dauer erhalten.

Wie komme ich dazu

Voraussetzungen

Wenn Sie Xsolla-Online-Shop noch nicht integriert haben, gehen Sie wie folgt vor:

  1. Registrieren Sie sich im Xsolla-Kundenportal.
  2. Navigieren Sie zu Projekte, und klicken Sie auf die Schaltfläche Projekt erstellen.
  3. Geben Sie einen Projektnamen an, und klicken Sie auf Erstellen.
  4. Navigieren Sie zu Projekteinstellungen > Integrationseinstellungen, und prüfen Sie, ob der Umschalter Commerce API integrieren auf Ein gestellt ist.

  1. Verknüpfen Sie den Online-Shop mit Ihrem Projekt.
  2. Verknüpfen Sie das Modul Virtuelle Gegenstände.

Integrationsablauf

  1. Erstellen Sie eine Gegenstandsgruppe.
  2. Erstellen Sie Gegenstände:
    1. Wählen Sie beim Erstellen eines neuen Gegenstands unter Gegenstandseigenschaften die Option Automatisch endendes Abo.
    2. Geben Sie das Ablaufdatum an.

  1. Implementieren Sie den Abruf von Abonnements aus dem Katalog.
  2. Implementieren Sie den Abruf von Abonnements aus dem Inventar.
  3. Implementieren Sie die Methoden für den Kauf eines Abonnements.

Abrufen von Abonnements aus dem Katalog

Implementieren Sie die API-Methode Get virtual items list, um sich die komplette Liste der zu Ihrem Online-Shop hinzugefügten virtuellen Gegenstände anzeigen zu lassen.

BEISPIEL

Copy
Full screen
Small screen
var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/items/virtual_items?locale=en");

xhr.send(data);

//RESPONSE

"items": [
    {
      "attributes": [],
      "description": "Conquer your foes with vindication using the Basic Blaster! ",
      "groups": [
        "all",
        "featured",
        "Xsolla",
        "weapons"
      ],
      "image_url": "https://cdn.xsolla.net/img/misc/images/0c59a7698d4f66c1008b27ee752089b7.png",
      "is_free": false,
      "name": "Xsolla Basic Blaster 1",
      "order": 1,
      "price": {
        "amount": "0.9950000000000000",
        "amount_without_discount": "1.9900000000000000",
        "currency": "USD"
      },
      "sku": "gun_1",
      "type": "virtual_good"

Abrufen von Abonnements aus dem Inventar

Nutzen Sie die Methode Get the current user's subscriptions im Benutzerinventar, um Benutzern Zugriff auf weitere Funktionen zu gewähren.

Kauf von Abonnements

Nach dem ersten Kauf wird das Abonnement dem Inventar hinzugefügt.

Nach dem zweiten und weiteren Käufen gilt Folgendes:

  1. Bei aktivem Abonnement wird die Abodauer zur Restlaufzeit addiert.
  2. Bei inaktivem Abonnement läuft das Abonnement wie voreingestellt aus.

Implementieren Sie folgende Methoden, um ein Abonnement kaufen zu können.

Get cart

Implementieren Sie für den Kauf von virtuellen Gegenständen die API-Methode Get cart by ID oder Get current user’s cart. Die Cart ID wird genutzt, um Gegenstände hinzuzufügen bzw. zu entfernen.

BEISPIEL

Copy
Full screen
Small screen
var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/cart/custom_id?locale=en&currency=USD");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

//RESPONSE

{
  "cart_id": "custom_id",
  "is_free": true,
  "items": [],
  "price": null
}

Note
Um den Schnellkauf von Gegenständen (d. h. ohne einen Warenkorb anzulegen) zu aktivieren, nutzen Sie die API-Methode Create order with specified item.

Create order with all items

  1. Implementieren Sie eine der folgenden API-Methoden:
    1. Create order with all items from particular cart, wenn Sie den Warenkorb mittels ID abgerufen haben.
    2. Create order with all items from current cart, wenn Sie den aktuellen Warenkorb abgerufen haben.

Die angelegte Bestellung erhält den Status New.

  1. Um das Zahlungsportal in einem neuen Fenster zu öffnen, nutzen Sie folgenden Link: https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN, wobei ACCESS_TOKEN der Token ist, den Sie beim Anlegen der Bestellung erhalten haben.
  2. So testen Sie den Zahlungsvorgang:
    1. Nutzen Sie folgende URL: https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN.
    2. Legen Sie in der Anfrage als Wert für den sandbox parameter true fest.
    3. Werfen Sie einen Blick in die Liste der Bankkarten, die für Testzwecke verwendet werden können.

BEISPIEL

Copy
Full screen
Small screen
var data = JSON.stringify({
  "currency": "USD",
  "locale": "en",
  "sandbox": false
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://store.xsolla.com/api/v2/project/44056/payment/cart/custom_id");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

//RESPONSE  

{
  "order_id": 641,
  "token": "f4puMEFFDZcx9nv5HoNHIkPe9qghvBQo"
}

Get order

Implementieren Sie die API-Methode Get order, um festzustellen, ob der Kauf bereits abgewickelt wurde. Folgende Bestellungsstatus sind möglich:

  • New: Bestellung ist angelegt, wurde aber nicht bezahlt
  • Paid: Bestellung wurde bezahlt
  • Cancelled: Bestellung ist storniert
  • Done: Bestellung wurde bezahlt und der Gegenstand dem Inventar hinzugefügt

Note
Die Statusprüfung sollte in regelmäßigen Abständen erfolgen, da eine einmalige Prüfung jederzeit erfolgen kann, bevor einer Bestellung der Status "Neu" zugeordnet wird.

BEISPIEL

Copy
Full screen
Small screen
var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/order/656");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

//RESPONSE

{
  "content": {
    "is_free": false,
    "items": [
      {
        "is_free": false,
        "price": {
          "amount": "0.9950",
          "amount_without_discount": "1.9900",
          "currency": "USD"
        },
        "quantity": 123,
        "sku": "gun_1"
      }
    ],
    "price": {
      "amount": "122.3850",
      "amount_without_discount": "122.3850",
      "currency": "USD"
    }
  },
  "order_id": 656,
  "status": "new"
}

Serverseitige Abonnementverwaltung

Gewähren

Der Spielserver kann den Abogegenstand den Benutzern über die Methode Grant gewähren.

Die Berechnung des Ablaufdatums des Abos erfolgt genauso wie beim Kauf von Abonnements.

Widerrufen

Der Spielserver kann den Gegenstand eines Benutzers über die Methode Revoke widerrufen. Das Widerrufen des Gegenstands hat zur Folge, dass er vollständig aus dem Benutzerinventar gelöscht wird.

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: 17. Juni 2021

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!