2017年12月版 Androidアプリの課金テスト手順
この記事はリクルートエンジニアアドベントカレンダー17日目の記事です。
目的
Androidアプリ課金について、ネットの情報も古く、網羅的な情報がないので整理する。
- テスト課金の方法
- テスト課金時にローカルでDebugする方法
課金のテストについて
ここでは、実際に決済させずに課金処理を確認するための手順を紹介する。
やらなくてはいけないこと
- Googleアカウントを作成
- 作成ユーザをテスター登録する
- α版 or β版アプリを公開する
- 実際にテストをする(要クレジットカード)
Googleアカウントを作成
普通に作成します。
作成ユーザをテスター登録する
作成したGoogleアカウントで決済無しのテスト課金を行うための設定を行う。
1.Google Play Developer Consoleにログインする。
2.テスト対象のアプリを選択する。
3.左側のメニューより、リリース管理 > アプリのリリースを選択
4.アルファ版 or ベータ版を管理を選択
5.リスト作成を押し、適当な名前のリストを作成し、テスターにしたいアドレスを入力(複数ある場合はCSVも可)し、保存
ここまででGoogle Play Developer Console 上の設定は完了。
6.PCまたはAndroid端末のブラウザで登録したアカウントでログインする。 ※他のアカウントでログインしている場合はログアウトしておく
7.上記手順で登録したアカウントでログインした状態で 下記のオプトインURLを開き、テスター登録を有効にする。 「これでテスターになりました」と表示されたらOKです。
以上にてアカウントの設定は完了。
α版、β版アプリを公開する
課金のテストを行うためには、GooglePlayストアにアルファ版もしくはベータ版公開する必要がある。 メニューのリリース管理からアルファ版 or ベータ版を管理と書かれたボタンを選択し、通常のアップロード手順と同様にapkをアップしリリースする。
注意点
- targetSDKバージョンを上げてα、βにアップしてしまうと本番もあげないといけなくなるので注意。
公開範囲について
クローズドとオープンという公開方法がある。
- クローズドは上記で作成したアカウントリストに公開する。
- オープンは、実際にベータ版アプリが別途ストア公開される。だれでもテストに参加できる。
クローズドα、クローズドβの同時公開はできない。
- クローズドα、オープンβのように公開範囲が異なる場合のみ、αとβの同時公開が可能。
実際にテストを行う
実際に公開したα、βのapkがストアで公開されたら、アプリをダウンロードし、各々アプリの課金の操作を行う。
注意点
下記画像のように実際に課金しない旨がダイアログに出ないと実際に課金される。
テスト課金は返ってくるjsonレスポンスが本番と一部異なる。
実際のjson
{ "autoRenewing": true, "developerPayload": "fa0iojf9032v.aknuf8923jaofewf-021h389vm", "packageName": "アプリパッケージ名", "productId": "test.1month.billing", "purchaseState": 0, "purchaseTime": 1471945711111, "purchaseToken": "mkildfilhdifncioicbofdgg.AO-J1Oy3t6iaEORwlA3MkhUPmc8b6Ypk-KSsDU9dRMDCbMBgNXJ5GnpKm2kPIA07QqlMlad2bzqdKOm5eYOVRPOmuSvjDQhgdbUFs7Em-idcp5IT6kAFtbtxbSuPJvkWoazmADn06yE6bpfgAVfdOnMm-ywc-R1HSg" }
テスト課金は購入商品の有効期限が短縮される。
- 1ヶ月 = 1日
- 買い切り商品は変化無し。
継続課金はユーザが明示的にストアでキャンセルしない限り永遠につづく。
ローカルでデバッグしたいケース
通常アルファ版やベータ版に上げるのはリリースビルドであること、ストアにあげないと課金処理が実行できないことからデバッグはできない。 しかし、実際に課金テストをしているとローカルでブレークポイントを貼ってデバッグしたい需要があるはず。 下記条件が揃っている場合にデバッグが可能となる。
- ローカルでデバッグビルドで起動した時に、アルファ版 or ベータ版に上げたapkと使用している署名が一致している
- デバッグビルド時にアルファ版、ベータ版に同じパッケージ名、versionName、versionCodeのapkが公開されている
つまり諸々の情報を同じにして、リリースビルド用の署名をデバッグでも用いるようにしてあげれば良い。