再度、購入しようとしてみたところ「エラー 指定したアイテムは購入できません。」と出た。公開しないといけないらしい(参考)。公開といっても製品版でなければ、テストユーザー内に公開ということになる。
公開できない理由を見ながら、すべての項目を埋めていく。アイコンの用意などがあるので、これらはフリー素材を借りてリサイズした。公開が完了するまでには数分から数時間かかる。
公開が完了したが、依然としてエラーは解消されない。
閑話
再度、英語の手順を確認してみると「IInAppBillingService.aidl」を追加しなければいけないとある。AIDLとはAndroid Interface Definition Languageの略で、これがGoogle Playサービスへのインターフェースを定義しているとのことだ。
ただこのAIDLはサンプルのTrivialDriveには既に含まれており、自作のアプリを作った際はこのサンプルのAIDLをコピーして使う方法について書かれているだけである。
言い始めれば、このGoogleのトレーニングはTrivialDriveを通してアプリ内課金の方法を理解するものではなく、自作のアプリにTrivialDriveのAIDLを使ってアプリ内課金を実装するものだったようだ。
尚、「IInAppBillingService.aidl」は下図の場所にあった。Googleがアプリ内課金で提供しているメソッドが書いてあった。
閑話休題
アプリを「クローズドアルファ版テスト」で公開したのだが、テストアカウントをリストに登録するだけでは不十分で、オプトインURLにアクセスする必要があった。
テストしたいアカウントでオプトインURLにアクセスすると次のように表示され、これでようやくコンソール(アプリ内アイテム)の更新が反映されることとなった。
有効になったテストアカウントで購入をしようとすると、次のように表示される。この時点で既にテスト用の注文であることが表示されてくれる。
尚、iPhone移行前に使っていたアカウントだと次のように表示された。
「Buy Gas」で"gas"の購入。「Upgrade My Car」で"premium"の購入(車が青から赤になるらしい)。「Get Infinite Gas」で"infinite_gas_monthly"か"infinite_gas_yearly"の購入のようだ。
尚、コンソールにアイテムが登録されていない場合でも「認証が必要です。Googleアカウントにログインしてください。」と表示されるようだった。実体とエラー文が異なるのでかなり注意。
このときAndroid Device Monitorに表示されるErrorを含むログは次の2文。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10-31 12:09:21.992: I/Finsky(3588): [1] com.google.android.finsky.billing.lightpurchase.PurchaseFragment.a(28697): Error: PurchaseError{type=2 subtype=0} | |
10-31 12:09:21.992: I/Finsky(3588): [1] com.google.android.finsky.billing.lightpurchase.PurchaseFragment.a(37142): Purchase failed: PurchaseError{type=2 subtype=0} |