質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

1709閲覧

【Unity】アプリ内課金の初期化がエラーになる

nakamu

総合スコア82

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/03/20 06:11

編集2020/03/20 08:55

iOSの課金テストを行っているんですが下記のようなエラーになります。
製品IDはmodelで登録したので間違っていません。

イメージ説明
イメージ説明

C#

1using System; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.Purchasing;x 5 6 7public class Purchase : MonoBehaviour, IStoreListener 8{ 9 // 購入実行に使用 10 private static IStoreController m_StoreController; 11 // リストア処理など拡張機能で使用 12 private static IExtensionProvider m_StoreExtensionProvider; 13 14 // 消費型アイテムのID 15 public static string kProductIDConsumable = "life_max"; 16 17 // 非消費型アイテムのID 18 public static string kProductIDNonConsumable = "model"; 19 20 // ios AppのBundleId 21 private static string kProductNameAppleSubscription = "com.test.Game"; 22 23 // Android AppのBundleId 24 private static string kProductNameGooglePlaySubscription = "com.test.Game"; 25 26 void Start() 27 { 28 if (m_StoreController == null) 29 { 30 InitializePurchasing(); 31 } 32 } 33 34 public void InitializePurchasing() 35 { 36 if (IsInitialized()) 37 { 38 return; 39 } 40 41 // builderを作成しプロダクトを登録する。 42 var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); 43 44#if UNITY_ANDROID 45 builder.Configure<IGooglePlayConfiguration>().SetPublicKey("公開鍵"); 46 kProductIDNonConsumable = "model"; 47#endif 48 // プロダクト(アイテム)の登録 49 //builder.AddProduct(kProductIDConsumable, ProductType.Consumable); 50 51 builder.AddProduct(kProductIDNonConsumable, ProductType.NonConsumable); 52 //builder.AddProduct(kProductIDNonConsumable, ProductType.NonConsumable, new IDs { 53 // //{ "jp.hogehoge.android.1yen", GooglePlay.Name }, 54 // { kProductIDNonConsumable, AppleAppStore.Name } 55 //}); 56 57 // IAP初期化 58 UnityPurchasing.Initialize(this, builder); 59 } 60 61 62 private bool IsInitialized() 63 { 64 return m_StoreController != null && m_StoreExtensionProvider != null; 65 } 66 67 68 public void BuyConsumable() 69 { 70 BuyProductID(kProductIDConsumable); 71 } 72 73 // アプリ内での購入ボタンを押したときなどの処理(非消費型) 74 public void BuyNonConsumable() 75 { 76 BuyProductID(kProductIDNonConsumable); 77 } 78 79 80 81 void BuyProductID(string productId) 82 { 83 if (IsInitialized()) 84 { 85 Product product = m_StoreController.products.WithID(productId); 86 87 if (product != null && product.availableToPurchase) 88 { 89 // 登録したプロダクト(アイテム)で購入をかける 90 Debug.Log(string.Format("Purchasing product asychronously: '{0}'", product.definition.id)); 91 m_StoreController.InitiatePurchase(product); 92 } 93 else 94 { 95 Debug.Log("BuyProductID: FAIL. Not purchasing product, either is not found or is not available for purchase"); 96 } 97 } 98 // Otherwise ... 99 else 100 { 101 102 Debug.Log("BuyProductID FAIL. Not initialized."); 103 } 104 } 105 106 107 public void RestorePurchases() 108 { 109 if (!IsInitialized()) 110 { 111 return; 112 } 113 114 if (Application.platform == RuntimePlatform.IPhonePlayer || 115 Application.platform == RuntimePlatform.OSXPlayer) 116 { 117 118 var apple = m_StoreExtensionProvider.GetExtension<IAppleExtensions>(); 119 apple.RestoreTransactions((result) => 120 { 121 122 123 Debug.Log("RestorePurchases continuing: " + result + ". If no further messages, no purchases available to restore."); 124 }); 125 } 126 // Otherwise ... 127 else 128 { 129 Debug.Log("RestorePurchases FAIL. Not supported on this platform. Current = " + Application.platform); 130 } 131 } 132 133 // 初期化成功イベント 134 public void OnInitialized(IStoreController controller, IExtensionProvider extensions) 135 { 136 // 成功すると購入やリストアに使用するインターフェースが返ってくるので保持 137 Debug.Log("OnInitialized: PASS"); 138 m_StoreController = controller; 139 m_StoreExtensionProvider = extensions; 140 } 141 142 // 初期化、接続処理失敗の時(ネットーワーク不良等) 143 public void OnInitializeFailed(InitializationFailureReason error) 144 { 145 Debug.Log("OnInitializeFailed InitializationFailureReason:" + error); 146 } 147 148 // 決済成功時 149 public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) 150 { 151 Debug.Log(args.purchasedProduct.receipt); 152 if (String.Equals(args.purchasedProduct.definition.id, kProductIDNonConsumable, StringComparison.Ordinal)) 153 { 154 // UnityIAP上のID 155 Debug.Log(string.Format("ProcessPurchase: PASS. Product: '{0}'", args.purchasedProduct.definition.id)); 156 } 157 else 158 { 159 Debug.Log("PurchaseProcessingResult Else"); 160 } 161 return PurchaseProcessingResult.Pending; 162 } 163 164 // 決済失敗時 165 public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason) 166 { 167 Debug.Log(string.Format("OnPurchaseFailed: FAIL. Product: '{0}', PurchaseFailureReason: {1}", product.definition.storeSpecificId, failureReason)); 168 } 169} 170 171

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問