アプリ内課金の実装にはUnityIAPを使用しています。
実装方法は、詳しい記事が色々とあるので、そちらをご参考下さい。
参考までに私が参考にした記事を1つ挙げておきます。
ただ、こちらの参考サイトで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の、「ストアでの表示」->「アプリ内サービス」にあります。
このスクショの右の方のやつですね。
こんなんに数時間ハマってしまった。