0

當使用StoreContext.RequestPurchaseAsync()從WPF桌面應用程序執行應用程序內購買時,Windows.services.Store命名空間帶有擴展錯誤消息的StorePurchaseResult 「值不在預期的範圍內。」Windows應用商店購買問題「價值不符合預期範圍」

我們的應用程序已發佈並可從Windows應用商店下載。

它使用DesktopAppConverter工具轉換。我們根據Store(Identity Name,Publisher ...)中的描述設置manifest.appx。

我們按照下面提供的說明,使用C#從使用桌面橋接器的Windows桌面應用程序的UI線程中進行應用內購買。

https://docs.microsoft.com/en-us/windows/uwp/monetize/in-app-purchases-and-trials https://docs.microsoft.com/en-us/windows/uwp/monetize/enable-in-app-purchases-of-apps-and-add-ons

在我們的應用程序的代碼,我們聲明IInitializeWithWindow接口:

[ComImport] 
[Guid("3E68D4BD-7135-4D10-8018-9FB6D9F33FA1")] 
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 
public interface IInitializeWithWindow 
{ 
    void Initialize(IntPtr hwnd); 
} 

然後,當我們的應用程序啓動時,我們得到了StoreContext(存儲到storeContext_屬性),使用單用戶方式:

// Init the store context 
storeContext_ = StoreContext.GetDefault(); 
IInitializeWithWindow initWindow = (IInitializeWithWindow)(object)storeContext_; 
initWindow.Initialize(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle); 

在此之後,我們設法檢索S toreLicense(存儲到storeLicense_屬性),並列出相關的店內產品沒有任何錯誤

// Get the current user license 
storeLicense_ = await storeContext_.GetAppLicenseAsync(); 
if (storeLicense_ == null) 
{ 
    MessageBox.Show("An error occurred while retrieving the license.", "StoreLicenseApp Error"); 
    return; 
} 

// Create a filtered list of the product AddOns I care about 
string[] filterList = new string[] { "Durable" }; 

// Get list of Add Ons this app can sell, filtering for the types we know about 
StoreProductQueryResult addOns = await storeContext_.GetAssociatedStoreProductsAsync(filterList); 
if (addOns.ExtendedError != null) 
{ 
    MessageBox.Show("Impossible to retreive the list of the products on the store.\n" + addOns.ExtendedError.Message, 
           "Get Associated Store Products Error"); 
} 

一旦產品的店鋪ID是從商店retreived,我們等待用戶點擊購買按鈕調用下面的回調。

private async void PurchaseButton_Clicked(object sender, RoutedEventArgs e) 
{ 
    StorePurchaseResult result = await storeContext_.RequestPurchaseAsync(selectedStoreId); 

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

       [...] 
} 

RequestPurchaseAsync()返回一個錯誤,而不是顯示用於購買產品的Metro接口。 這裏是擴展錯誤返回:

消息=「價值不在預期的範圍內」。

的HResult = -2147024809

如何解決這個問題的任何線索?

+0

就根據此錯誤信息,我們不能查找原因爲發生故障的請求。如果可能,你能否提供你提供的產品ID(對於父應用程序和IAP產品)? –

+0

嗨Mattew,這裏是父應用程序一個9NFMR9KZRHTV和IAP是9PHL59JKBHNC – jarne

+0

您可以運行** WSCOLLECT **並提供商店日誌嗎? –

回答

0

RequestPurchaseAsync()叫我們PurchaseButton_Clicked()函數返回一個錯誤,因爲我們在應用程序啓動時正在初始化另一個函數中的存儲上下文。

我們通過將商店的上下文初始化在PurchaseButton_Clicked()說明如下解決這個問題:

public async void PurchaseSelectedProduct(ProductModel product){ 
    if (product == null){ 
     MessageBox.Show("Product not valid", "PurchaseInApp Error"); 
     return; 
    } 

    // Init store context for purchase 
    IInitializeWithWindow initWindow = (IInitializeWithWindow)(object)storeContext_; 
    initWindow.Initialize(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle); 

    // Buy through in app purchase sdk 
    StorePurchaseResult result = null; 
    try { result = await product.StoreProduct.RequestPurchaseAsync(); } 
} 
0

下面是使用WSCOLLECT.exe收集到的應用程序內購買任務類別的錯誤日誌:

1)信息窗口::服務::商店:: StoreContext :: RequestPurchaseAsync(9PMRHM0MJ85K)調用。 (CV:+ hcSKxR9 + UGX7BQ/1.3) 功能的Windows ::服務::商店:: StoreContext :: RequestPurchaseAsync 錯誤代碼-1 來源\ storecontext.cpp 行號1194

2)消息:ChkHr (hrGetTicket) 函數:Windows :: Services :: Store :: PurchaseOperation :: _ PromptForPasswordAndEnterOrderWithRetry 錯誤代碼:-2147024809 來源:\ purchaseoperation。CPP 行號506

3)消息:ChkHr(_PromptForPasswordAndEnterOrderWithRetry(fPromptForCredentials)) 功能:視窗::服務::商店:: PurchaseOperation :: _ ProceedToPurchase 錯誤代碼:-2147024809 來源:\ purchaseoperation.cpp 行號:630

4)消息:ChkHr(_ProceedToPurchase(needsToSignIn)) 功能:視窗::服務::商店:: PurchaseOperation :: _採購 錯誤代碼:-2147024809 來源:\ purchaseoperation.cpp 線號碼:792

5)信息ChkHr(_hresultOfOperation) 功能的Windows ::服務::商店:: RequestPurchaseOperation :: DoWork的 錯誤代碼-2147024809 來源\ requestpurchaseoperation.cpp 行號115

+0

如何解決此問題的任何線索? – jarne

相關問題