Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird veranschaulicht, wie Sie Elemente im Namespace Windows.Services.Store nutzen, um für den Benutzer den Kauf der aktuellen App oder eines ihrer Add-Ons zu beantragen. Wenn der Benutzer beispielsweise derzeit über eine Testversion der App verfügt, können Sie diesen Prozess verwenden, um eine Volllizenz für den Benutzer zu erwerben. Alternativ können Sie diesen Prozess verwenden, um ein Add-On zu erwerben, z. B. ein neues Spiellevel für den Benutzer.
Um den Kauf einer App oder eines Add-Ons anzufordern, stellt der Windows.Services.Store-Namespace mehrere verschiedene Methoden bereit:
- Wenn Sie die Store-ID- der App oder des Add-Ons kennen, können Sie die RequestPurchaseAsync- Methode der StoreContext Klasse verwenden.
- Wenn Sie bereits über ein StoreProduct-, StoreSku-oder StoreAvailability- Objekt verfügen, das die App oder das Add-On darstellt, können Sie die RequestPurchaseAsync- Methoden dieser Objekte verwenden. Beispiele für verschiedene Möglichkeiten, ein StoreProduct- aus Ihrem Code abzurufen, finden Sie unter Abrufen von Produktinformationen für Apps und Add-Ons.
Jede Methode stellt dem Benutzer eine standardmäßige Einkaufs-UI vor und schließt dann asynchron ab, nachdem die Transaktion abgeschlossen ist. 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 auf Windows 10 Anniversary Edition abzielen (10.0; Build 14393) oder einer höheren Version in Visual Studio. Wenn Ihre App auf eine frühere Version von Windows 10 ausgerichtet ist, müssen Sie den Windows.ApplicationModel.Store Namespace anstelle des Windows.Services.Store Namespace verwenden. Weitere Informationen finden Sie in diesem Artikel.
Voraussetzungen
In diesem Beispiel sind die folgenden Voraussetzungen erfüllt:
- Ein Visual Studio-Projekt für eine UWP-App (Universelle Windows-Plattform), die auf Windows 10 Anniversary Edition ausgerichtet ist (10.0; Build 14393) oder einer höheren Version.
- Sie haben eine App-Einreichung im Partner Center erstellt, und diese App ist im Store veröffentlicht. Sie können die App optional so konfigurieren, dass sie beim Testen nicht im Store auffindbar ist. Weitere Informationen finden Sie in unserem Testleitfaden.
- 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 Centererstellen.
Der Code in diesem Beispiel geht davon aus:
- Der Code wird im Kontext einer Page ausgeführt, die einen ProgressRing mit dem Namen
workingProgressRing
und einen TextBlock mit dem NamentextBlock
enthält. Diese Objekte werden verwendet, um anzugeben, dass ein asynchroner Vorgang stattfindet, beziehungsweise um Ausgabemeldungen anzuzeigen. - Die Codedatei enthält eine mit der-Anweisung für den Windows.Services.Store-Namespace.
- 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 dem Abschnitt In-App-Käufe und Testversionen.
Hinweis
Wenn Sie über eine Desktopanwendung verfügen, die die Desktop bridgeverwendet, müssen Sie möglicherweise zusätzlichen Code hinzufügen, der in diesem Beispiel nicht gezeigt wird, um das StoreContext--Objekt zu konfigurieren. Weitere Informationen finden Sie unter Verwenden der StoreContext-Klasse in einer Desktopanwendung, die die Desktop-Brückeverwendet.
Codebeispiel
In diesem Beispiel wird veranschaulicht, wie Sie die RequestPurchaseAsync Methode der StoreContext Klasse verwenden, um eine App oder ein Add-On mit einer bekannten Store-IDzu 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;
}
}