共用方式為


啟用應用程式內產品購買 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

您的應用程式可以提供讓客戶從應用程式內購買的產品和功能。以下示範如何在應用程式中啟用這些購物選項。

請注意,客戶必須先購買您應用程式的完整版本,才能購買應用程式內產品。

您必須知道的事

技術

先決條件

  • 要新增功能讓客戶購買的 Windows 執行階段應用程式。

指示

步驟 1: 初始化應用程式的授權資訊

在您應用程式進行初始化時,請透過初始化 CurrentAppCurrentAppSimulator 來為應用程式取得 LicenseInformation 物件,以啟用購買應用程式內產品的功能。

function appInit()
{
    // some app initialization functions

        // Get current product object 
        // Execute only one of these statements. 
        // The next line is commented out for testing.
        // currentApp = Windows.ApplicationModel.Store.CurrentApp;

        // The next line is commented out for production/release.
        currentApp = Windows.ApplicationModel.Store.CurrentAppSimulator;

        // We should have either a real or a simulated CurrentProduct object here.

        // Get the license info
        licenseInformation = currentApp.licenseInformation;

    // other app initializations function
}

注意  初次撰寫並測試新應用程式內產品的程式碼時,您必須使用 CurrentAppSimulator 物件,而不是 CurrentApp 物件。如此一來,您就可以利用對授權伺服器進行模擬呼叫來驗證授權邏輯,而不是呼叫使用中的伺服器。若要這樣做,您必須自訂 %userprofile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData 中名為 "WindowsStoreProxy.xml" 的檔案。Microsoft Visual Studio 模擬器會在您第一次執行您的應用程式時建立這個檔案,或者您也可以在執行階段載入自訂的檔案。如需詳細資訊,請參閱 CurrentAppSimulator 文件。

 

步驟 2: 在您的應用程式新增應用程式內的產品購買選項

針對您想要透過應用程式內產品提供的每項功能,建立一個購買選項,然後新增至您的應用程式。

重要  在將您的應用程式送出至市集之前,您必須先把要呈現給客戶的所有應用程式內產品新增至應用程式。如果您想要稍後再新增應用程式內產品,您就必須更新應用程式,然後重新送出新版本。

 

  1. 建立應用程式內的購買選項權杖

    您可以依權杖識別您應用程式中的每個應用程式內產品。這個權杖是您定義的字串,並在應用程式和市集中用來識別特定的應用程式內產品。請指定一個既唯一 (對您的應用程式來說) 又有意義的名稱,以便在撰寫程式碼時,可以快速地識別其正確功能。以下是一些名稱的範例:

    • "SpaceMissionLevel4"
    • "ContosoCloudSave"
    • "RainbowThemePack".
  2. 以條件性區塊來撰寫功能的程式碼

    針對與應用程式內產品關聯的每個功能,您必須將其程式碼放到條件性區塊中來測試,以查看客戶是否擁有可使用該功能的授權。

    下列範例示範如何在授權專屬的條件性區塊中,撰寫 featureName 產品功能的程式碼。featureName 字串是可在應用程式內唯一識別這個產品的權杖,同時也可用來在市集中識別此產品。

    
    if (licenseInformation.productLicenses.lookup("featureName").isActive) 
    {
        // the customer can access this feature
    }
    else 
    {
        // the customer can't access this feature
    }
    
  3. 新增此功能的購買 UI

    您的應用程式也必須提供購買機制,讓客戶能夠購買應用程式內產品所提供的產品或功能。客戶無法透過市集以購買完整應用程式的方式來購買這些產品或功能。

    以下是如何測試以查看客戶是否已經擁有應用程式內產品,如果沒有,就顯示購買對話方塊來讓客戶購買。請以您為購買對話方塊自訂的程式碼取代 "show the purchase dialog" 註解 (例如提供一個含有親切提醒 [購買此應用程式!] 按鈕的頁面)。

    function buyFeature1() {
        if (!licenseInformation.productLicenses.lookup("featureName").isActive)
        {
            // The customer doesn't own this feature, so 
            // show the purchase dialog.
    
            // note: currentApp is a reference to CurrentAppSimulator from a previous declaration
            currentApp.requestProductPurchaseAsync("featureName", false).then(
                function () {
                    //Check the license state to determine if the in-app purchase was successful.
                }, 
                function () {
                    // The in-app purchase was not completed because 
                    // there was an error.
                });
        } 
        else
        {
            // The customer already owns this feature.
        }
    }
    

步驟 3: 將測試程式碼變更成最後呼叫

這個步驟很簡單:在您應用程式的程式碼中,將 CurrentAppSimulator 的每個參考變更成 CurrentApp。您不再需要提供 WindowsStoreProxy.xml 檔案,因此可以將該檔案從您應用程式的路徑中移除 (雖然您可能想要加以儲存,以供在下個步驟中設定應用程式內的購買選項時參考)。

步驟 4: 在市集中設定應用程式內的產品購買選項

在將您的應用程式送出至市集之前,請將每個應用程式內產品新增至 [送出應用程式] 工作流程。您可在此指定應用程式內產品的權杖、價格及功能存留期。請確定在測試時,將它設定為與 WindowsStoreProxy.xml 相同的設定。

步驟 5: 在市集中描述應用程式內產品

將您的應用程式套件上傳至市集之後,您可以在送出您的應用程式時,在 [描述]**** 頁面上輸入每個應用程式內產品的描述。如果您的應用程式支援多種語言,您就必須以應用程式支援的每種語言來描述每個應用程式內產品。

請提供可精確指出應用程式內產品為應用程式新增什麼功能的清楚明確描述。如果您不清楚該產品如何比應用程式本身所提供的功能更具價值,將會使銷售困難。如需有關應用程式內產品描述之特定部分的詳細資料,請參閱您的應用程式描述

備註

如果您想要為客戶提供消費性的應用程式內產品選項,請前往啟用消費性應用程式內產品購買主題。

如果您需要使用收據來確認使用者已購買應用程式內產品,請務必檢閱使用收據確認購買

相關主題

啟用消費性應用程式內產品購買

試用版 app 和 App 內購買範例