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
消費型課金を導入する / Introduction to consumable In-App ...
Search
morizooo
May 01, 2018
Technology
0
500
消費型課金を導入する / Introduction to consumable In-App Billing
morizooo
May 01, 2018
Tweet
Share
More Decks by morizooo
See All by morizooo
Flipperを活用した デバッグ効率化について/flipper
morizooo
0
720
Androidアプリをリアーキテクチャした話/Android-rearchitecture
morizooo
1
200
Mirrativ-android-efforts
morizooo
1
7.4k
Android上でUnityを動かすためのノウハウ / Android with Unity
morizooo
2
800
カンファレンスアプリを作ったぞ!! / builderscon tokyo 2017 LT
morizooo
0
3.2k
Other Decks in Technology
See All in Technology
Snowflake Summit 2025全体振り返り / Snowflake Summit 2025 Overall Review
mtpooh
2
390
Observability infrastructure behind the trillion-messages scale Kafka platform
lycorptech_jp
PRO
0
140
OpenHands🤲にContributeしてみた
kotauchisunsun
1
430
SalesforceArchitectGroupOsaka#20_CNX'25_Report
atomica7sei
0
160
M3 Expressiveの思想に迫る
chnotchy
0
100
“社内”だけで完結していた私が、AWS Community Builder になるまで
nagisa53
1
380
AIエージェント最前線! Amazon Bedrock、Amazon Q、そしてMCPを使いこなそう
minorun365
PRO
14
5k
米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
2
1.1k
2年でここまで成長!AWSで育てたAI Slack botの軌跡
iwamot
PRO
4
700
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
4
730
生成AIで小説を書くためにプロンプトの制約や原則について学ぶ / prompt-engineering-for-ai-fiction
nwiizo
4
1.4k
本が全く読めなかった過去の自分へ
genshun9
0
230
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Code Reviewing Like a Champion
maltzj
524
40k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
GraphQLとの向き合い方2022年版
quramy
48
14k
Practical Orchestrator
shlominoach
188
11k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Done Done
chrislema
184
16k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
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から移行する必要はない •知見あれば教えてください!!!