Androidのアプリ内課金が動かない件
自作アプリでアプリ内課金が動かない件で、鉄道アラームの作者 @phytoncide_ さんに調査を協力してもらった。その結果、HTC EVO でも動かず。。。
とりあえずGoogleが提供してるサンプルDungeon を動かしてみることにした。
- Dungeon をコピー
- パッケージ名を com.satoshis.dungeons に変更
- 公開鍵を Security.java に貼り付け
- Androidマーケットにアップロード(非公開)
- アプリ内サービスに potions_001 と sword_001 を登録(公開)
- dungeons.apk をテスト用の IS05にインストール(adb install dungeons.apk)
- テストアカウントを確認
- Dungeon を起動してポーションを購入!
約50秒ほど待たされた後に、注文がキャンセルされた。
そこで、Dungeon で android.test.purchaged を購入してみた。こちらは無事に購入できた。
なにが違う?
Eclipse の LogCat に出てるログを丁寧に読んでみたら、BillingServiceがRequestPurchaseを送信してFinskyのタグで
PurchaseFragment.onStateChange: Finished purchase with ID http://android.clients.google.com/fdfe/purchaseStatus?doc=inapp:com.satoshis.dungeons:...
って出るところまでは同じなんだけど、そこから先が違う。
成功している方は、すぐ(100ms以内)にBillingReceiverから
notifyId: android.test.purchased
出力されて購入処理を継続してるけど、Googleウォレットで支払いをしようとすると、約48秒待たされた後に、Finskyのタグで
PurchaseInitiator.switchToError: Error when purchasing document inapp:com.satoshis.dungeons:potion_001 ...
と出力されてエラーダイアログが表示される。
待ち時間はクレジットカードを変更しても同じ。
ここを見ると機種依存っぽいけど、IS05はOKってなってる。が、うちのIS05ではNG。
https://groups.google.com/forum/#!topic/android-group-japan/i5eJ0ug0Ie8
参考までに、うちのIS05のスペック。
どこが悪いんだろー。
2012/03/06 追記
解決しました。
≫続・Androidマーケットでアプリ内課金がキャンセルされる件 - 今日の役に立たない一言 − Today’s Trifle! −