0

ユーザーがこのマシンで購入を行い、別のマシンで機能を実行するには、このような場合に対処したいと思います。

領収書を確認する必要があることはわかっています。私は疑問に思っていました、これはそうする正しい方法ですか?署名チェックをバイパスすることに注意してください。として、現時点では考慮したくないバックエンド システムをセットアップする必要があります。Windows 8 ストア アプリは System.Security.Cryptography API を提供していないため、ローカルで署名チェックを実行することさえできません。

私は、次のコード スニペットがほとんどのケースを処理するのに十分であるかどうか疑問に思っていました。コードをテストするには、新しいバージョンを公開する必要があるため、コードをテストできないことに注意してください。

private async void history_Click(object sender, RoutedEventArgs e)
{
    bool OK = true;

    // The next line is commented out for production/release.       
    LicenseInformation licenseInformation = CurrentApp.LicenseInformation;
    if (!licenseInformation.ProductLicenses["PremiumFeatures"].IsActive)
    {
        try
        {
            // The customer doesn't own this feature, so 
            // show the purchase dialog.

            String receipt = await CurrentApp.RequestProductPurchaseAsync("PremiumFeatures", true);
            // the in-app purchase was successful

            licenseInformation = CurrentApp.LicenseInformation;
            if (licenseInformation.ProductLicenses["PremiumFeatures"].IsActive || receipt.Length > 0)
            {
                // In some situations, you may need to verify that a user made an in-app purchase. 
                // For example, imagine a game that offers downloaded content. If the user who 
                // purchased the content wants to play the game on another PC, you need to verify 
                // that the user purchased the content.
                //
                // Receipt is used to handle such situation.
                //
                // Validate receipt is complicated, as it requires us to setup a backend system.
                // http://msdn.microsoft.com/en-US/library/windows/apps/jj649137
                //
                // I will just assume non empty receipt string means valid receipt.
                OK = true;
            }
            else
            {
                OK = false;
            }
        }
        catch (Exception)
        {
            // The in-app purchase was not completed because 
            // an error occurred.
            OK = false;
        }
    }
    else
    {
        // The customer already owns this feature.
        OK = true;
    }

    if (OK)
    {
        // Launch premium feature.
        Frame.Navigate(typeof(HistoryPage));
    }
}
4

1 に答える 1

0

の代わりにCurrentAppSimulatorを使用してコードをテストできますCurrentApp。私には問題ないように見えます。

于 2012-12-24T09:40:29.843 に答える