アプリ内課金実装周りで躓いたこと

アプリ内課金の実装にはUnityIAPを使用しています。
実装方法は、詳しい記事が色々とあるので、そちらをご参考下さい。
参考までに私が参考にした記事を1つ挙げておきます。

techtechnolog.com

ただ、こちらの参考サイトでStart()で呼んでいるものをAwakeにしたほうが良いと思います。
理由は下記に。

UnityIAP初期化されない時がある問題

UnityIAPが、なぜか初期化されないことがありました。かと言って初期化失敗のコールバックが呼ばれているわけでもない。

色々とググッていたら、Startに書いている初期化をAwakeにしてみろ的なコメントを見つけました。
試してみたところ、それでうまくいきました。

Android版で課金しようとすると「認証が必要です。Googleのアカウントにログインしてください」っと出る。

英語版だと「Authentication is required. You need to sign into your Google Account.」
これ、色々と発生する可能性がありまして、ググると、

Google Developer Consoleにアップした直後だと駄目だから、ちょっと待て

とか

新しく追加したアカウントの場合は、端末を初期化しないと駄目だ

とか、

書かれています。

しかし、自分は、そのどれにも当てはまらず。

Google Developer Consoleではchatで相談に乗ってくれるので、質問してみました。

そうすると直ぐに解決。
購入商品が「有効」になっていなかったから
でした。

Google Developer Consoleの、「ストアでの表示」->「アプリ内サービス」にあります。
f:id:wkpn:20170518143706p:plain
このスクショの右の方のやつですね。

こんなんに数時間ハマってしまった。