「駅すぱあと for Android」〜課金に四苦八苦〜

2014年10月9日木曜日 kawazoe


こんにちは。ヴァル研究所のkawazoeです。

2014/9/24に「駅すぱあと for Android」の有料機能を付け加えたものを無事リリースさせていただきました。

私は課金部分の開発を担当しました。
その際実装中に思わず「あっ・・・」と声をあげてしまうような挙動がありましたので、これからAndroidの課金開発をするDeveloperの皆様のお役に立てればと思いご紹介させていただきます。

※「駅すぱあと for Android」はGooglePlay InAppBilling(API ver3)を使っています。商品タイプは定期購読のものになります。



1. 定期購読のorderIdに引っかかりました。



アプリ内決済が完了するとJSONで書かれた購入情報が取得できます。
(※リファレンスはここのページのINAPP_PURCHASE_DATAの部分となります。)

orderIdの説明に、「A unique order identifier for the transaction. This corresponds to the Google Wallet Order ID.」と英語で記載されています。

この一文を私は、ここ の「Payment Processing and Policies」の部分と読みあわせて
定期購読が更新されるたびに、JSONのorderIDが変わるんだ!と思ってました。

変わらなかったです。

GoogleWallet上では確かに更新があるたびに、orderIDが変わっていました。
しかしアプリ内からの取得では、まったく変わっている様子がありませんでした。

orderIdで何かしようと考えている方は注意が必要かもしれません。

私の乏しい英語力が招いた結果かもしれませんが、ご参考までに。

2. お試し期間を終了して実課金に遷移したときの偶然遭遇したバグ



定期購読タイプの商品は、設定したお試し期間中にキャンセルを行わなければ
定期購読タイプでは自動で実課金となる仕様となっています。

お試し期間終了→実課金で正常に課金状態がアプリ内より取得できるか確認していたところ
まったく購入情報が取れなくなってしまいました。

(※この問題は2014/08中にGoogle内で起きたバグであり現在は正常に動作しているとのことです。)

GooglePlayのキャッシュが古い情報のままなのかな?とおもいキャッシュをクリアしましたが、それでも解決しませんでした。
本来起こりうるはずの無いバグかもしれませんが、
ユーザーの購入情報が正常にとれない→アプリの課金状態即解除は反感を買いかねないので、
あらゆるケースを想定したほうがいいのかもしれません。

以上が特に困った挙動となります。Developerの皆様のお役に立てれば幸いです。

それでは皆様、良き開発ライフを。