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
13k
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
2.6k
[shibuya.apk #46] Composableの枠を超えてアニメーションする / Animation beyond Composable
syarihu
0
18
[shibuya.apk #41] Jetpack Composeでグリッドに柔軟にスペースを入れたい
syarihu
0
2.8k
[DroidKaigi 2022] 詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~
syarihu
0
3.3k
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.6k
[Money Forward Tech Drive] What's new in Google Play [Recap #io21]
syarihu
0
550
[Android 11 Meetups] Google Play Commerce からのアップデート / Android 11 Meetups Google Play Commerce
syarihu
4
2.8k
[potatotips #70] license-list-pluginを使ってOSSライセンス画面を自動生成する / license-list-plugin
syarihu
4
4.6k
Other Decks in Technology
See All in Technology
Google Cloud で始める Cloud Run 〜AWSとの比較と実例デモで解説〜
risatube
PRO
0
110
UI State設計とテスト方針
rmakiyama
2
600
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
16
4.3k
Storage Browser for Amazon S3
miu_crescent
1
190
コンテナセキュリティのためのLandlock入門
nullpo_head
2
320
Amazon VPC Lattice 最新アップデート紹介 - PrivateLink も似たようなアップデートあったけど違いとは
bigmuramura
0
190
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
2
380
watsonx.ai Dojo #5 ファインチューニングとInstructLAB
oniak3ibm
PRO
0
170
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
190
終了の危機にあった15年続くWebサービスを全力で存続させる - phpcon2024
yositosi
14
12k
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
2
110
Featured
See All Featured
A Tale of Four Properties
chriscoyier
157
23k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Being A Developer After 40
akosma
87
590k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Scaling GitHub
holman
458
140k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
KATA
mclloyd
29
14k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Music & Morning Musume
bryan
46
6.2k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
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
ご清聴ありがとうございました