Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
消費型課金を導入する / Introduction to consumable In-App ...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
morizooo
May 01, 2018
Technology
540
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
消費型課金を導入する / Introduction to consumable In-App Billing
morizooo
May 01, 2018
More Decks by morizooo
See All by morizooo
Flipperを活用した デバッグ効率化について/flipper
morizooo
0
840
Androidアプリをリアーキテクチャした話/Android-rearchitecture
morizooo
1
230
Mirrativ-android-efforts
morizooo
1
7.7k
Android上でUnityを動かすためのノウハウ / Android with Unity
morizooo
2
870
カンファレンスアプリを作ったぞ!! / builderscon tokyo 2017 LT
morizooo
0
3.4k
Other Decks in Technology
See All in Technology
Swap and Memory Reclaim - Squeezing Out More RAM
ennael
PRO
1
1.5k
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
140
spanner-autoscalerに学ぶ CRD設計パターン 〜自動化と緊急時対応を両立する Kubernetesコントローラーの作り方〜
tkuchiki
0
220
The seven pitfalls of AI (revised version)
ufried
0
220
LLM機能を自作して分かるSnowflake Cortex AIの強み
nayuts
0
210
Account Factory for Terraformによる 標準化されたアカウント発行の自動化
pensuke628
0
120
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
420
自主式軟體工廠
philipz
0
120
3人で1000GPU超を統合運用する?マルチクラウド&オンプレを跨ぐ、構築と運用のリアル!
kazukun0716
2
820
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
390
企業の現実世界をグラフで写し取る
sansantech
PRO
0
250
FinTech 1-2 : Overview of FinTech
ks91
PRO
0
130
Featured
See All Featured
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
350
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Docker and Python
trallard
47
4.2k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
690
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.9k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
380
Abbi's Birthday
coloredviolet
4
10k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Ethics towards AI in product and experience design
skipperchong
2
410
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
Transcript
消費型課金を導入する 2018.04.19 morizooo Potatotips #50 © 2018 Mirrativ, Inc.
•Profile •morizooo •2月からミラティブのAndroid作ってます https://www.mirrativ.com/
•課金方式 •消費型課金 - 購入後に消費リクエストを行うことにより再度購入できる方式 - アプリ内のアイテム購入時に使う •非消費型課金 - 一度だけ購入できる方式 -
一度だけ買えるお得なアイテムや権利をつけるときに使う •購読型課金 - 一定期間ごとに自動的に繰り返し課金を行う方式 - 会員権の継続に使う
•Play Billing Library •2017年9/19日にリリース - 内部のフローはIn-app Billing Version 3 APIと同じ
- 使いやすいインタフェースが定義されたラッパーのライブラリ
•Play Billing Library •サンプル実装が存在 1. https://github.com/googlesamples/android-play-billing/tree/ master/TrivialDrive_v2 2. https://github.com/googlecodelabs/play-billing-codelab -
アプリの見た目は同じ - TrivialDrive_v2の方がしっかり作ってある - play-billing-codelabは署名ファイルが入っていてすぐ動く まずplay-billing-codelab触って間食掴んでから TrivialDrive_v2を触るのがオススメ
•Play Billing Library •できること •課金できる端末かチェック •購入情報取得 •商品情報取得 •Google Playの購入画面を出す BillingClientの
- startConnection - querySkuDetailsAsync - launchBillingFlow - consumeAsync の呼び出しとリスナー定義すれば実装できる
•課金フロー •PlayBillingLibraryを通して購入処理を実行する - 以前の課金情報が見つかればスキップする場合もあり ①
•課金フロー •Googleからレシートを受け取る - レシートの署名鍵の確認を行う(サーバー側でやってもよい) ②
•課金フロー •サーバーに対してレシートの検証を行う - 購入したアイテム・ユーザの情報も送ってます ③
•課金フロー •Googleに対してレシートの検証を行う - Google Play Developer APIのPurchases.products: getを使う https://developers.google.com/android-publisher/api-ref/purcha ses/products/get
④
•課金フロー •レシートの結果を受け取る - 内容は正常でも既に登録されていないかチェックする - 結果を永続化して残す ⑤
•課金フロー •レシートの検証結果を受け取る - 既に使用されているレシートが来た場合も消費処理を行うために成 功として返しています ⑥
•課金フロー •検証成功ならPlayBillingLibraryから消費リクエストを投げる - この時点で再度購入可能になる ⑦
•課金フロー •①以外のエラーは課金の復元が必要 - 整合性の担保はサーバーサイドでやってます - 同じレシートが何度来ても良いが有効になるのは一度だけ - 復元タイミングはアプリによるので頑張りましょう ①
② ④ ⑥ ③ ⑤ ⑦
•Tips •開発環境でのテスト • 公開しているアプリ情報と一致しないと課金情報取れない - packageName,versionCodeを合わせる必要がある ①:開発用のアプリを作成してプロダクト設定を行う ②:本番アプリのビルド設定を開発用アプリに実行する → QA前日に気づいたので②でやってます
•Tips • 動作確認中のクラッシュ - googleアカウントにログインせずに購入しようとすると突然死 - 購入中に電話が来て、その後に購入すると突然死 → 様々な要因があるので気をつけましょう •
課金フローの沼 - Google上は同じアカウントだが複数端末あって途中でエラーが起 こった場合に別端末が繋いで来たらどうするのか等 →考えるとキリがない。思いつく分の処理は考えておく 最終手段を用意しておく
•まとめ •PlayBillingLibraryで問題なく課金処理が導入できる - developerPayloadが使えないので注意する •In-app Billing Libraryから移行する必要はない •知見あれば教えてください!!!