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
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
860
カンファレンスアプリを作ったぞ!! / builderscon tokyo 2017 LT
morizooo
0
3.4k
Other Decks in Technology
See All in Technology
grill-me(grilling):AI駆動開発を超助けてくれるSkill / grill me
mathbullet
0
110
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
380
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
240
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
0
180
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.7k
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
320
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
200
Genie Code ワークショップ 基礎編 / Genie-Code-Workshop-fundamental
databricksjapan
PRO
0
360
いかに伝えるか 〜新卒エンジニアの教育のための、ライトノベル活用の一例
ikedon
1
210
はじめてのDatabricks:技術者向けワークショップ / beginner-workshop
databricksjapan
PRO
0
230
データエンジニアの困りごとをDevinと一緒に解消する
10xinc
2
840
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
240
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
1
11k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
870
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
220
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Automating Front-end Workflow
addyosmani
1369
210k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
WENDY [Excerpt]
tessaabrams
12
39k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
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から移行する必要はない •知見あれば教えてください!!!