Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Play Billing Library 2.0
Search
syarihu
August 01, 2019
Technology
3
14k
Play Billing Library 2.0
Shibuya.apk #36(
https://shibuya-apk.connpass.com/event/139617/
)で発表した資料です。
syarihu
August 01, 2019
Tweet
Share
More Decks by syarihu
See All by syarihu
[DroidKaigi 2024] Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 / From Android View to Jetpack Compose: A Guide to Migration
syarihu
3
3.5k
[shibuya.apk #46] Composableの枠を超えてアニメーションする / Animation beyond Composable
syarihu
0
53
[shibuya.apk #41] Jetpack Composeでグリッドに柔軟にスペースを入れたい
syarihu
0
3.2k
[DroidKaigi 2022] 詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~
syarihu
0
3.6k
5分で分かるGoogle Playの新しいサブスクリプション / Google Play new subscription 2022
syarihu
1
1.8k
[DroidKaigi 2021] Google Play 定期購入 比例配分モード完全攻略ガイド / Google Play Subscription Proration Mode Complete Guide
syarihu
1
7.8k
[Money Forward Tech Drive] What's new in Google Play [Recap #io21]
syarihu
0
580
[Android 11 Meetups] Google Play Commerce からのアップデート / Android 11 Meetups Google Play Commerce
syarihu
4
2.9k
[potatotips #70] license-list-pluginを使ってOSSライセンス画面を自動生成する / license-list-plugin
syarihu
4
4.8k
Other Decks in Technology
See All in Technology
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/03 - 2025/05
oracle4engineer
PRO
1
160
Go Connectへの想い
chiroruxx
0
160
キャッシュレス決済のプロダクトから決済基盤への進化
b1a9id
0
230
単一Gitリポジトリから独立しました
lycorptech_jp
PRO
0
400
kotlin-lsp を Emacs で使えるようにしてみた / use kotlin-lsp in Emacs
nabeo
0
120
Amazon DevOps Guru のベースラインを整備して1ヶ月ほど運用してみた #jawsug_asa / Amazon DevOps Guru trial
masahirokawahara
3
240
AI Engineering Summit Pre Event LT #10
okaru
2
540
マルチテナント+マルチプロダクト SaaS への AI Agent の組み込み方
kworkdev
PRO
1
150
開発フェーズだけではない AI導入はどのように進めていくべきか / How should we proceed with AI adoption beyond the development stage?
i35_267
2
130
Digitization部 紹介資料
sansan33
PRO
1
4.1k
Drawing with LLMs
rist
0
250
從開發到架構設計的可觀測性實踐
philipz
0
220
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
4
120
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
6
680
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
640
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Side Projects
sachag
454
42k
BBQ
matthewcrist
89
9.7k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Navigating Team Friction
lara
186
15k
Why Our Code Smells
bkeepers
PRO
337
57k
Transcript
Play Billing Library 2.0 shibuya.apk #36 2019/08/01 (Thu) @syarihu
登壇の経緯
https://twitter.com/mhidaka/status/1153942417021648896
https://twitter.com/syarihu/status/1153942881373003778
https://twitter.com/syarihu/status/1153942929745969152
https://twitter.com/syarihu/status/1153943259422478337
わずか3分のできごとでした
自己紹介
Taichi Sato (@syarihu) • Money Forward, Inc. ◦ Android Engineer
• TechBooster
Play Billing Library
Play Billing Libraryとは • Google Playの課金サービスであ るPlay Billingと連携するための AIDLを抽象化したライブラリ
Play Billing Libraryとは • AIDLはライブラリ内部に隠蔽 されたので実装が楽になった • いまGoogle Playの課金を実装す るならこれを使わないとダメ
Play Billing Libraryとは • 2017年の9月に1.0が正式リリー ス ◦ 2019年7月現在の最新は 2.0.2
IO19での発表
What's New with Google Play Billing (Google I/O'19) https://youtu.be/N4004Set4F8
IO19での発表 • Play Billing Libraryが Play Billingと連携するための 正式な方法となった
IO19での発表 • Play Billing Libraryのロードマッ プ • Play Billing Library
2.0
Play Billing Library ロードマップ
ロードマップ • Play Billing LibraryはI/O毎に メジャーバージョンアップ • 各メジャーバージョンは リリース後2年サポート
ロードマップ • AIDL, Play Billing Library 1.xの サポートは2021年のI/Oまで
ロードマップ • サポートが切れたものを利用して いると、アプリの新規公開・アップ デートはできなくなる
None
ロードマップ • 今回の発表はビルドターゲットを最 新にするだけでアプリに簡単にPlay Billingの新しい機能を採用できるこ とを目的としている
ロードマップ • メジャーバージョンアップで 毎回大きい機能がリリース されるかも…?
ロードマップ • Play Billing Libraryの アップデートは計画的に
Play Billing Library 2.0 Overview
Play Billing Library 2.0 • acknowledge • Pending transactions •
APIの追加・変更
Play Billing Library 2.0 • acknowledge • Pending transactions •
APIの追加・変更
Play Billing Library 2.0 • acknowledge • Pending transactions •
APIの追加・変更
Play Billing Library 2.0 • acknowledge • Pending transactions •
APIの追加・変更
acknowledge
acknowledge • Play Billing Libraryを介して行っ た全ての購入に対して acknowledge(承認)を行うこと が必須になった(2.0から)
acknowledge • 購入後、3日以内に承認をしない場 合はユーザーは自動的に払い戻し を受け、Google Playは購入を取り 消す
acknowledge • テスト用のライセンスアカウントでテ スト購入を行った場合は3日以内で はなく5分以内に承認を行わなけれ ば自動で取り消される
通常の支払いフロー
None
None
Google Playでの購入は正常にできているのに サービスは利用できない状態になってしまう
acknowledge対応した 支払いフロー
None
None
購入情報の登録に失敗しても 3日以内に承認されない場合は払い戻されるので安心
アプリ側で承認することも可能
アプリで通信失敗したときなどの考慮は必要
Pending transactions
Pending transactions • 遅延支払いができる新しい 支払い方法 • 支払いは実店舗での現金払いや 銀行振込などを想定
Pending transactions • 管理対象アイテムで利用できる • 定期購入では利用できない ◦ 支払い方法の選択肢には出てこ ない
Pending transactions • 発表では現金払いは日本とメキ シコで今日から利用可能って言っ ていたけれど、今のところまだ使 えない (2019年7月現在)
Pending transactionsの 利用例(コンビニ)
What's New with Google Play Billing (Google I/O'19) より引用 https://youtu.be/N4004Set4F8
What's New with Google Play Billing (Google I/O'19) より引用 https://youtu.be/N4004Set4F8
None
ここはサービス側が良い感じに コミュニケーションをしてあげる必要がありそう
None
保留中の購入は アカウント情報の購入履歴から確認可能
None
None
None
None
None
アプリ「外」課金が可能になった
今回はアプリ起動時に購入履歴をチェックしているが、 他にも支払い後3日以内に確実に承認を成功させる工夫が必要
Real-time Developer Notificationsとか使うと良いかも
ちなみにアプリが起動中の場合は普通に購入イベントが 走るので通常の購入と同じようにレシートを受け取れる
Pending transactions のテスト
Pending transactions • Pending transactionsはテスト用 のライセンスアカウントを使ってテ ストできる
Pending transactions • Play Billing Library 2.0を利用し たアプリで管理対象アイテムのテ スト購入を行うと、スローカードが 選択できる
None
None
None
Pending transactions • Pending transactionsは購入が 完了状態に移行してから acknowledgeの3日間の期間が 開始される
Pending transactions • テスト購入では購入完了通知が きてから5分以内に承認しないと 払い戻されるので注意
APIの変更・追加
enablePendingPurchase • BillingClientの生成時に呼び出す ことが必須になった • 呼び出さないと例外が発生する
enablePendingPurchase • Pending transactionsをサポートし ていることを意味する
enablePendingPurchase
PurchaseState • Pending transactions用に追加さ れた購入状態を表すステータス • Purchaseオブジェクトに purchaseStateが追加されている
PurchaseState • Purchase.PurchaseState.PENDING • Purchase.PurchaseState.PURCHASED
acknowledgePurchase
acknowledgePurchase
acknowledgePurchase
acknowledgePurchase
acknowledgePurchase
responseCode -> ResponseResult
responseCode -> ResponseResult
queryPurchaseHistoryAsync • 購入履歴を取得するメソッド ◦ queryPurchases ◦ queryPurchaseHistoryAsync
queryPurchaseHistoryAsync • どちらもPurchaseのリストを取得で きるが、2つのメソッドが取得できる Purchase内のデータに違いがあっ た
queryPurchaseHistoryAsync • その問題を解消するため、 queryPurchaseHistoryAsyncの 返り値はPurchaseHistoryRecord のリストになった
queryPurchaseHistoryAsync • PurchaseHistoryRecordは次の データを除いてPurchaseと同じ ◦ autoRenewing, orderId, packageName, purchaseState, acknowledged
BillingFlowParams.setSku()の削除 • Play Billing Library 1.2で非推奨 になったsetSkuが2.0で削除され た
BillingFlowParams.setSku()の削除 • setSkuの代わりに、SkuDetailsオ ブジェクトを渡すsetSkuDetailsメ ソッドに置き換える必要がある
BillingFlowParams.setSku()の削除 • Play Billing Library1.2で対応済 の場合は特に対応は必要無い
まとめ
まとめ • Play Billing Library 2.0からは acknowledge対応が必須になっ た
まとめ • Pending transactionsは定期購 入のみの場合は対応不要だが、 管理対象アイテムを提供している 場合は対応が必要
まとめ • レスポンスやメソッドの返り値に 変更があるので、アップデートす る場合はその点に注意
まとめ • もっと実装の話もしたかったけど15 分では圧倒的に時間が足りなくて 無理でした…気になる人は懇親会 で聞いてください!
宣伝
Andoirdプログラミング 短編集 王女とカルテットの宝探 し • Android Qのジェスチャーナ ビゲーション、ストレージ、ダ イレクトシェア •
Kotlin Coroutines Flow、 WorkManagerとAndroidの 歴史 • Apply Changesの解説、V言 語の秘密など https://techbooster.booth.pm/items/1485567
ご清聴ありがとうございました