Edited at

UnityでAndroid In App Billing Pluginを使った課金テストで詰まったポイント

More than 3 years have passed since last update.

Unityで開発中のアプリで、アプリ内課金を実装してテストした際に詰まったところのメモ

アセットストアの「Android In App Billing Plugin」を使っています。

主にGoogle Developer Consoleの設定周りでの出来事です。

■アプリ内アイテムのタブで各アイテムのステータスを「有効」にしていなかった

 アイテムごとに有効にする必要があります。

■アプリを公開中にしていなかった

 ベータ版テストかアルファ版テストにAPKをアップして

 「公開中」のステータスにしないと課金テストが出来ません。

■アプリをアップする際に50MBを超えてしまった

 50MB未満に落とす必要があります。やり方は複数ありますが

 リソース類を全て削ってビルドを行い、アプリとしては動かない成果物(apk)を

 アップしても課金テストは行えました。

 一度Bundle Identifer・証明書が整ったアプリを上げてしまえば

 GooglePlayからアプリをダウンロードしなくてもテストは可能です。

■アプリが送信するRSA鍵が間違っていた

 これが詰まった。RSA鍵が異なっていてもGooglePlayの課金完了画面までは到達してしまう。

 実際は課金がSuccessしていないので、これ以降に失敗した課金のキューが溜まってしまい、

 PluginのqueryInventoryメソッドで以下のエラーでこけてしまい、商品リストがとれなくなった。

 (response: -1003:Purchase signature verification failed)

 RSA鍵を正しくすれば解決したが、今まで失敗したアカウントに関してはキューを消化する術が見つからず工場出荷状態にするしかない模様…

■GooglePlayDeveloperConsoleのアカウントの詳細で、「テスト用のアクセス権がある Gmail アカウント」に対象のGmailアカウントを登録していなかった。

 登録していなかった上に、登録しても数時間は反映されなかった…

■(追加)BundleIdentiferが異なるビルドだった…

 AndroidでBundleIdentiferが署名と異なる場合、課金しようとした時にGooglePlayが出すダイアログでは

 「このバージョンでは課金できません」的な文言が出る。

 てっきりバージョンかと思ったが、このメッセージは署名に不備がある場合などでも出る模様なので注意。

 (ビルドジョブが複数ある関係でIdentiferも複数あったため起こった)

上記の箇所に順番につまって最終的には課金テストが成功しました。

他にも詰まったところがあった気がするので思い出したら備忘録的に追加します。

それにしてもAndroidの課金テストはやりづらい…