Aktivieren von In-App-Käufen von Apps und Add-Ons

In diesem Artikel wird veranschaulicht, wie Mitglieder im Windows.Services.Store-Namespace verwendet werden, um den Kauf der aktuellen App oder eines seiner Add-Ons für den Benutzer anzufordern. Wenn der Benutzer beispielsweise aktuell über eine Testversion der App verfügt, können Sie diesen Vorgang verwenden, um für den Benutzer eine Volllizenz zu erwerben. Alternativ können Sie diesen Prozess auch verwenden, um für den Benutzer ein Add-On wie z. B. ein neues Gamelevel zu erwerben.

Um den Kauf einer App oder eines Add-Ons anzufordern, bietet der Windows.Services.Store Namespace mehrere verschiedene Methoden:

Jede Methode zeigt dem Benutzer eine Standardbenutzeroberfläche für den Einkauf an und führt den Vorgang nach Abschluss der Transaktion asynchron aus. Die Methode gibt ein Objekt zurück, das angibt, ob die Transaktion erfolgreich war.

Hinweis

Der Windows.Services.Store-Namespace wurde in Windows 10, Version 1607, eingeführt und kann nur in Projekten verwendet werden, die Windows 10 Anniversary Edition (10.0; Build 14393) oder eine höhere Version in Visual Studio. Wenn Ihre App für eine frühere Version von Windows 10 geeignet ist, müssen Sie den Windows.ApplicationModel.Store-Namespace anstelle des Windows.Services.Store-Namespace verwenden. hier finden Sie weitere Informationen

Voraussetzungen

Für dieses Beispiel gelten die folgenden Voraussetzungen:

  • Ein Visual Studio-Projekt für eine Universelle Windows-Plattform -App (UWP), die auf Windows 10 Anniversary Edition (10.0) ausgerichtet ist; Build 14393) oder eine spätere Version.
  • Sie haben eine App-Übermittlung im Partner Center erstellt und diese App wird im Store veröffentlicht. Sie können die App optional konfigurieren, damit sie nicht im Store erkannt werden kann, während Sie sie testen. Weitere Informationen finden Sie in unseren Testanleitungen.
  • Wenn Sie In-App-Käufe für ein Add-On für die App aktivieren möchten, müssen Sie auch das Add-On im Partner Center erstellen.

Der Code in diesem Beispiel geht von folgenden Voraussetzungen aus:

  • Die Ausführung des Codes erfolgt im Kontext einer Seite, die einen ProgressRing mit dem Namen workingProgressRing und einen TextBlock mit dem Namen textBlock enthält. Diese Objekte werden verwendet, um anzugeben, dass ein asynchroner Vorgang ausgeführt wird, bzw. um Ausgabemeldungen anzuzeigen.
  • Die Codedatei enthält eine using-Anweisung für den Namespace Windows.Services.Store.
  • Die App ist eine Einzelbenutzer-App, die nur im Kontext des Benutzers ausgeführt wird, der die App gestartet hat. Weitere Informationen finden Sie unter In-App-Käufe und Testversionen.

Hinweis

Wenn Sie über eine Desktopanwendung verfügen, die die Desktop-Brücke verwendet, müssen Sie möglicherweise zusätzlichen Code hinzufügen, der in diesem Beispiel nicht zum Konfigurieren des StoreContext-Objekts angezeigt wird. Weitere Informationen finden Sie unter Verwenden der StoreContext-Klasse in einer Desktopanwendung, die die Desktop-Brücke verwendet.

Codebeispiel

In diesem Beispiel wird die Verwendung der RequestPurchaseAsync-Methode der StoreContext-Klasse veranschaulicht, um eine App oder ein Add-On mit bekannter Store-ID zu erwerben. Eine vollständige Beispielanwendung finden Sie im Store-Beispiel.

private StoreContext context = null;

public async void PurchaseAddOn(string storeId)
{
    if (context == null)
    {
        context = StoreContext.GetDefault();
        // If your app is a desktop app that uses the Desktop Bridge, you
        // may need additional code to configure the StoreContext object.
        // For more info, see https://aka.ms/storecontext-for-desktop.
    }

    workingProgressRing.IsActive = true;
    StorePurchaseResult result = await context.RequestPurchaseAsync(storeId);
    workingProgressRing.IsActive = false;

    // Capture the error message for the operation, if any.
    string extendedError = string.Empty;
    if (result.ExtendedError != null)
    {
        extendedError = result.ExtendedError.Message;
    }

    switch (result.Status)
    {
        case StorePurchaseStatus.AlreadyPurchased:
            textBlock.Text = "The user has already purchased the product.";
            break;

        case StorePurchaseStatus.Succeeded:
            textBlock.Text = "The purchase was successful.";
            break;

        case StorePurchaseStatus.NotPurchased:
            textBlock.Text = "The purchase did not complete. " +
                "The user may have cancelled the purchase. ExtendedError: " + extendedError;
            break;

        case StorePurchaseStatus.NetworkError:
            textBlock.Text = "The purchase was unsuccessful due to a network error. " +
                "ExtendedError: " + extendedError;
            break;

        case StorePurchaseStatus.ServerError:
            textBlock.Text = "The purchase was unsuccessful due to a server error. " +
                "ExtendedError: " + extendedError;
            break;

        default:
            textBlock.Text = "The purchase was unsuccessful due to an unknown error. " +
                "ExtendedError: " + extendedError;
            break;
    }
}

Video

Sehen Sie sich das folgende Video an, um eine Übersicht darüber zu erfahren, wie In-App-Käufe in Ihrer App implementiert werden.