(Japanese only)
 
本日のライブ放送のアウトラインをこちらに記載いたします。
 
----------------------------------------
Android での Google Play 課金 API 活用法
(In-app Billing と Subscription について)

松内 良介  Ryosuke Matsuuchi
Android デベロッパーリレーションズ デベロッパーアドボケイト
吉嗣 浩隆  Hirotaka Yoshitsugu
Android コンテンツ開拓担当 日本統括マネージャー

2012年8月28日


----------------------------------------
1. In-app Billing APIs for Google Play

1.1. Google I/O 2012 : Android Apps in Google Play
https://developers.google.com/events/io/sessions/gooio2012/123/

1.2. 主な機能追加
2011.03.29 In-app Billing
2012.03.22 日次販売レポート
2012.03.29 マルチアカウント対応
2012.05.24 Subscription (月額課金・年額課金)

1.3. 日本、韓国での売上の伸びが著しい
背景: フィーチャーフォンからスマートフォンへの移行

1.4. Google Play 全体の売上の 50%以上がアプリ内課金
有料アプリ販売よりも今後有望?
正式版への「アップグレード」をアプリ内課金で販売するという例も


----------------------------------------
2. もういちど規約

2.1. 超重要規約
Developer Distribution Agreement (DDA)
http://www.android.com/us/developer-distribution-agreement.html
Google Play Developer Program Policies
http://play.google.com/about/developer-content-policy.html
※ 8/1/2012 に より判りやすくするために改訂

(抜粋)
有料アプリと無料アプリ
アプリの購入: デベロッパーは、Google Play で提供するアプリやダウンロードに課金する場合、Google Play の決済システムを使用して課金を行わなければなりません。
アプリ内購入: デベロッパーは、Google Play からダウンロードされたアプリ内で追加のコンテンツ、サービス、機能を提供する場合、以下の場合を除き、支払い方法として Google Play の決済システムを使用しなければなりません:
支払いが主に物理的な商品またはサービスに対するものである場合(例: 映画チケットの購入の場合や、出版物の購入で紙の出版物の代金も料金に含まれている場合)
支払いがアプリ自体の外で消費できるデジタル コンテンツまたは商品に対するものである場合(例: 他の音楽プレーヤーで再生できる楽曲の購入)
デベロッパーは、自身が販売するアプリについて、またアプリ内サービス、商品、コンテンツ、機能について、ユーザーの誤解を招く説明を行ってはなりません。


----------------------------------------
3. IN_APP_NOTIFY / PURCHASE_STATE_CHANGED が届かない?

3.1. Ten Things Game Developers Should Know.  Dan Galpin, Ian Lewis.  6/29/2012.
https://developers.google.com/events/io/sessions/gooio2012/110/
[再生時刻 00:36:35 付近を参照]

3.2. 多くのケースで じつはアプリ側の対策が必要です

3.3. 背景
3.3.1. CONFIRM_NOTIFICATIONS 受信まで Google Play は通知を再送 (ただし 再送間隔は exponential backoff)
3.3.2. 全く問題ないアプリを問題のあるアプリがある
各種アプリについて CONFIRM_NOTIFICATIONS 受信までの時間を計測して調査
3.3.3. Google Play の UI への遷移直後に Activity 終了 → 受信失敗、が疑われる

3.4. 推奨事項
3.4.1. どんな状態でも受信すること
BroadcastReceiver → CONFIRM_NOTIFICATIONS 送信の流れは頑丈に作る。 Activity がなくても動くように。
3.4.2. 一旦受信したらそのデータを失わないように工夫 (一旦ファイルに書き込む、など)

ひきつづき Google 側でも調査中


----------------------------------------
4. 決済が頻繁にキャンセルされています。なぜですか?

4.1. キャリア決済の月額利用上限額
4.2. 不審な利用パターンが検出された (不正防止)
参考: 購入者の不正行為の検出
http://support.google.com/checkout/sell/bin/answer.py?hl=ja&answer=45175
4.3. クレジットカードの利用が承認されなかった
   
4.4. Refund / チャージバックについての備考


----------------------------------------
5. 課金の履歴についてダブルチェックする方法は?
5.1. Google Play Android Developer Console にて
(a) 月次販売レポート
毎月 11日〜13日ごろに前月分を生成
最も正確です
(b) 日次販売レポート (速報値) 2012.3.22~

5.2. Checkout 管理画面からも .csv データがダウンロードできますが件数の制限があります
5.3. 古いAPIである Checkout HTML/XML API は日本の事業者は利用できません
残念ながら現在、ダブルチェックを完全自動化できる手段 (API) は提供されていません


----------------------------------------
6. Checkout 管理画面の tips

6.1. 銀行口座情報の入力
銀行名:
Sumitomo Mitsui Bank
Bank of Tokyo-Mitsubishi UFJ
Mizuho Bank
名義: 預金通帳に記載されているカタカナ表記の口座名義そのまま、空白は半角で

6.2. 決済のキャンセル操作
手数料も含めて返金されます
Subscription の継続中止はこの操作ではできません

6.3. 決済情報の検索
Tip: ユーザーにメールで送られる注文番号をそのまま検索しても見つからない場合は "12999763169054705758." を付与して検索してみてください

6.4. アクセス権限の管理について
2012.03.29 マルチアカウント対応
ぜひこの機能をご活用ください


----------------------------------------
7. セキュリティ、不正対策

7.1. 難読化 (ProGuard)
NDK (C/C++) と併用する場合は proguard.cfg で -keep オプション利用

7.2. Tamper Resistance
リバースエンジニアリングが困難なように配慮してください
アプリ内の要所要所で Signature / CRC チェック
In-app Billing サンプルコードは そのまま製品に利用しないでください

7.3. Server-side Validation
7.4. nonce を用いた防御


参照:
Evading Pirates and Stopping Vampires using License Verification Library, In-App Billing, and App Engine.  Dan Galpin, Trevor Johns. 5/11/2011.
http://www.google.com/events/io/2011/sessions/evading-pirates-and-stopping-vampires-using-license-verification-library-in-app-billing-and-app-engine.html


----------------------------------------
8. 課金機能にかかわるデベロッパーサポート窓口

8.1. Report an Application Publishing and Distribution Issue.  Google Play for Developers Help Center.
http://support.google.com/googleplay/android-developer/bin/request.py?contact_type=publishing&hl=en
Issue Type: "Sales and Billing Problems"

(a) 現在英語のみでの受付です
(b) 可能なかぎり、 Google 注文番号 (Google Order Number) を正確に (できれば複数) 含めてください
(c) Google Play Android Developer Console でご利用いただいているアカウントからご連絡ください
他のアカウントから連絡いただくと対応できない場合があります


----------------------------------------
9. Subscription 決済機能

9.1. 2012.5.24.提供開始
9.2. 現在はクレジットカード決済のみ
キャリア決済は現在準備中です
9.3. アプリの種類に関わらず ご利用いただけます
ゲーム、雑誌、各種サービス

日本の事業者が フィーチャーフォンの月額課金サービスでこれまで蓄積したノウハウを活かしていただくチャンス!


----------------------------------------
10. Subscription の購読開始/終了の流れ

10.1. 購読開始
REQUEST_PURCHASE → Google Play UI
(通常の In-app Billing と同様)

10.2. 更新
ユーザーが操作する必要なし。
購入者アカウント宛に「更新しました」という電子メールが送信されます

10.3. 購読終了
(a) ユーザーの人の操作により定期購読を終了させたい場合
端末の Google Play アプリ詳細画面から。
アプリからは Intent 経由でここにユーザーを誘導するのも良い
market://details?id=com.yourdomain.yourapp
Google Wallet の Web ページにて終了手続き

(b) 開発者が定期購読を終了させたい場合
Google Play Android Developer API


----------------------------------------
11. Subscription の有効性確認

11.1. クライアント側での確認手段
(a) 通知 (PURCHASE_STATE_CHANGED)
(b) RESTORE_TRANSACTIONS
あまり頻繁には利用しないことを推奨

11.2. 開発者サーバー側での確認手段
(a) Google Play Android Developer API
Developer Console でご利用いただいているアカウントと同一のアカウントを用いて OAuth の client_id を発行してください

Subscription 決済機能は、必ずしも開発者サーバーがなくても利用は可能ですが、きめ細かい運用やユーザーサポートの提供のために開発者サーバーを準備していただくことをお薦めします

Subscription APIs SDK Documentation:
http://developer.android.com/guide/google/play/billing/billing_subscriptions.html
Shared publiclyView activity