【解決したい課題】
・Unity IAPを使ったローカルでのレシート検証
【詳細】
・https://docs.unity3d.com/ja/current/Manual/UnityIAPValidatingReceipts.html
Q1・上記のサイトを参考に、CrossPlatformValidator を利用しスクリプトを組み上げました。
実装時にGooglePlayTangle.DataとAppleTangle.Dataにエラーが出ていて、存在しないとのことでした。
そこで、Window > Unity IAP > IAP Receipt Validation Obfuscator から、Google Play Consoleにあるアプリのライセンスキーを入れ、
生成したところ無事エラーは消え実装することができました。
ここでわからないことがこざいまして、入れたのはGoogleのキーのみですが、Appleのキーはどちらから入れればよろしいのでしょうか。
また、以下のスクリプトのみで検証したことにはなっているのでしょうか。
他に検証したほうがいい項目等
ございましたら教えていただけると助かります。
public PurchaseProcessingResult ProcessPurchase (PurchaseEventArgs e) { bool validPurchase = true; // R.V. のないプラットフォームに有効です // Unity IAP の検証ロジックはこれらのプラットフォームにのみ含まれます。 # if UNITY_ANDROID || UNITY_IOS || UNITY_STANDALONE_OSX // エディターの難読化ウィンドウで準備した機密を持つ // バリデーターを準備します。 var validator = new CrossPlatformValidator(GooglePlayTangle.Data(), AppleTangle.Data(), Application.bundleIdentifier); try { // Google Play で、result は 1 つの product ID を取得します // Apple stores で、receipts には複数のプロダクトが含まれます var result = validator.Validate(e.purchasedProduct.receipt); // 情報提供の目的で、ここにレシートをリストします Debug.Log("Receipt is valid. Contents:"); foreach (IPurchaseReceipt productReceipt in result) { Debug.Log(productReceipt.productID); Debug.Log(productReceipt.purchaseDate); Debug.Log(productReceipt.transactionID); } } catch (IAPSecurityException) { Debug.Log("Invalid receipt, not unlocking content"); validPurchase = false; } # endif if (validPurchase) { // 適当なコンテンツをここにアンロックします } return PurchaseProcessingResult.Complete; }
Q2・UnityのIAP Buttonを使用することで、コードを書かずに実装できますが、
これを使ってしまうとレシート検証はできなくなってしまう気がしています。この件に関しても合わせてご回答いただけると助かります。
【作業環境】
・Unity 2017.3.1p4
・Windows 10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/28 08:10