SlideShare a Scribd company logo
Chromeウェブストア
Chromeウェブストア - Html5とか勉強会42
• Hostedアプリ
– Webサーバから必要なファイルが提供される
• Packagedアプリ
– 必要なファイル群がChromeにインストールさ
れる
• 拡張機能
– Chromeに便利な機能を追加する
The Chrome Web Store lets you
publish apps and games – either free
or paid – where Google Chrome users
can easily find them.
開発者
ユーザー
登録
The Chrome Web Store lets you
publish apps and games – either free
or paid – where Google Chrome users
can easily find them.
開発者
ユーザー発見
開発者
ユーザー発見
利用
The Chrome Web Store lets you
publish apps and games – either free
or paid – where Google Chrome users
can easily find them.
開発者 ユーザー
開発者 ユーザー
決済機能の
開発が必要
開発者
ユーザー
開発者
ユーザー
種別 アプリでの利用 拡張機能での利用
アプリ自体の販売
(1回、定期購入)
○ ×
アプリ内課金
(デジタルグッズなどの販
売) ○ ○
広告の掲載
○ ○
アプリ自体の販売
・・・Chromeウェブストア決済
Chromeウェブストア - Html5とか勉強会42
Chromeウェブストア - Html5とか勉強会42
• 1回払い
• 月間登録料
• 年間登録料
• 無料試用版
Chromeウェブストア - Html5とか勉強会42
Chromeウェブストア - Html5とか勉強会42
Chromeウェブストア - Html5とか勉強会42
Chromeウェブストア - Html5とか勉強会42
無料試用版
• Hostedアプリ
– Licensing API
• Packagedアプリ
– 機能制限版とフル機能版の2つをリリース
Chromeウェブストア - Html5とか勉強会42
Licensing API
• OpenID認証を行う
• ライセンスサーバにリクエストを送る
• 購入状況によって機能を制限する
https://www.googleapis.com
/chromewebstore/v1/licenses/[AppId]/[UserID]
https://www.googleapis.com
/chromewebstore/v1/licenses/[AppId]/[UserID]
+ 署名
# Licensing APIのエンドポイント
ENDPOINT = 'https://www.googleapis.com/chromewebstore/v1/licenses'
# アプリID
APP_ID = '...'
# OAuthトークン
OAUTH_TOKEN = '...'
# OAuthトークンシークレット
OAUTH_TOKEN_SECRET = '...'
# ユーザーのOpenID URL文字列
user_id = ...
# OAuthクライアントの生成
client = Signet::OAuth1::Client.new(
:client_credential_key => 'anonymous',
:client_credential_secret => 'anonymous',
:token_credential_key => OAUTH_TOKEN,
:token_credential_secret => OAUTH_TOKEN_SECRET
)
# リクエストの送信
response = client.fetch_protected_resource(
:uri => "ENDPOINT/#{app_id}/#{CGI::escape(user_id)}"
)
# 結果の取得
result = JSON.parse(response.body)
{
"kind": "chromewebstore#license",
"id": "appId/userId",
"appId": "appId",
"userId": "userId",
"result": "YES",
"accessLevel": "FULL",
"maxAgeSecs": "3600",
}
result値 accessLevel値 状況
YES FULL ユーザーはアプリに課金している。
YES FREE_TRIAL ユーザーはアプリに課金してなく、
無料試用版を使うべき。
NO NONE ユーザーはアプリに課金してなく、
アプリにアクセスしていない。
アプリ内課金
・・・Google In-App Payments API for Web
開発者のサーバ
星を手に入れる
購入
①
②
APIコール
③
Googleのサーバ 開発者のサーバ
通知
④
通知
⑤
星を手に入れた!
⑥
JWTの生成
{
"iss": "購入者ID",
"aud": "Google",
"typ": "google/payments/inapp/item/v1",
"exp": "1358678162",
"iat": "1358674585",
"request": {
"name": "Red potion",
"description": "It increases the hit point.",
"price": "2.50",
"currencyCode": "USD",
"sellerData": "user_id:123,transaction_id:98765"
}
}
SELLER_IDENTIFIER = '販売者 ID'
SELLER_SECRET = '販売者の秘密鍵'
token = JWT.encode(
{
'iss' => SELLER_IDENTIFIER,
'aud' => 'Google',
'typ' => 'google/payments/inapp/item/v1',
'exp' => (Time.now + 3600).to_i,
'iat' => Time.now.to_i,
'request' => {
'name' => 'Red potion',
'description' => 'It increases the hit point.',
'price' => '2.50',
'currencyCode' => 'USD',
'sellerData' => 'user_id =>123,transaction_id =>98765'
}
}, SELLER_SECRET)
eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.ey
Jpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzO
DAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19y
b290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1
p1r_wW1gFWFOEjXk
開発者のサーバ
星を手に入れる
購入
①
②
APIコール
③
Googleのサーバ 開発者のサーバ
通知
④
通知
⑤
星を手に入れた!
⑥
buy()関数の
呼び出し 購入画面
<script type="text/javascript"
src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('payments', '1.0', {
'packages': ['sandbox_config']
});
</script>
var generatedJwt = ...;
document.getElementById("buy").onclick = function(evt) {
purchase();
};
function purchase() {
...
goog.payments.inapp.buy({
jwt: generatedJwt,
success: function(result) { ... },
failure: function(result) { ... }
});
}
Chromeウェブストア - Html5とか勉強会42
開発者のサーバ
星を手に入れる
購入
①
②
APIコール
③
Googleのサーバ 開発者のサーバ
通知
④
通知
⑤
星を手に入れた!
⑥
ポストバック
URLの呼び出
し
{
"iss": "Google",
"aud": "購入者ID",
"typ": "google/payments/inapp/item/v1/postback/buy",
"exp": "1358678162",
"iat": "1358674585",
"request": {
"name": "Red potion",
"description": "It increases the hit point.",
"price": "2.50",
"currencyCode": "USD",
"sellerData": "user_id:12345,transaction_id:98765"
},
"response": {
"orderId": "3485709183457474939449"
}
}
SELLER_SECRET = '販売者の秘密鍵'
encoded_jwt = params['jwt']
item_token = JWT.decode(encoded_jwt, SELLER_SECRET)
order_id = item_token['response']['orderId']
# デコードされた内容に基づいて、注文内容を確認し、
# 必要があればデータベースに注文完了を書き込む
render text: order_id
開発者のサーバ
星を手に入れる
購入
①
②
APIコール
③
Googleのサーバ 開発者のサーバ
通知
④
通知
⑤
星を手に入れた!
⑥
コールバック
関数の呼び出
し
Chromeウェブストア - Html5とか勉強会42
var generatedJwt = ...;
document.getElementById("buy").onclick = function(evt) {
purchase();
};
function purchase() {
...
goog.payments.inapp.buy({
jwt: generatedJwt,
success: function(result) { ... },
failure: function(result) { ... }
});
}
• Hostedアプリ
– Available.
• Packagedアプリ
– Can use on the dev channel.
Tax
付加価値税
• 購入するユーザーと開発者の直接契約
– 納税する責任は開発者にある
Chromeウェブストア - Html5とか勉強会42
Chromeウェブストア - Html5とか勉強会42
国ごとに法律が異なる
• 税率の違い
• 購入者が国外にいた時の扱い
• 納税免除の下限額の違い
・・・知らなかった、では済まされない
• 田中 洋一郎
– Google Developers Expert (Chrome)
– LINE株式会社 開発1センター所属
End

More Related Content

Similar to Chromeウェブストア - Html5とか勉強会42

オンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータオンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータ
Takahiro Inoue
 
Firefox Marketplace and Payment
Firefox Marketplace and PaymentFirefox Marketplace and Payment
Firefox Marketplace and Payment
dynamis
 
XOOPS EC Distribution
XOOPS EC DistributionXOOPS EC Distribution
XOOPS EC Distribution
Yoshi Sakai
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
Yuji Takayama
 
SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2
Nobuhiro Nakajima
 
Google Play Game Servicesについて
Google Play Game ServicesについてGoogle Play Game Servicesについて
Google Play Game Servicesについて
Kenzo Ishii
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
Yuji Takayama
 

Similar to Chromeウェブストア - Html5とか勉強会42 (7)

オンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータオンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータ
 
Firefox Marketplace and Payment
Firefox Marketplace and PaymentFirefox Marketplace and Payment
Firefox Marketplace and Payment
 
XOOPS EC Distribution
XOOPS EC DistributionXOOPS EC Distribution
XOOPS EC Distribution
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
 
SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2
 
Google Play Game Servicesについて
Google Play Game ServicesについてGoogle Play Game Servicesについて
Google Play Game Servicesについて
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 

More from Yoichiro Tanaka

Navigate users from assistant app to android app
Navigate users from assistant app to android appNavigate users from assistant app to android app
Navigate users from assistant app to android app
Yoichiro Tanaka
 
Chrome Extensionsの基本とデザインパターン
Chrome Extensionsの基本とデザインパターンChrome Extensionsの基本とデザインパターン
Chrome Extensionsの基本とデザインパターン
Yoichiro Tanaka
 
Chrome Extensionsから見るWebExtensions
Chrome Extensionsから見るWebExtensionsChrome Extensionsから見るWebExtensions
Chrome Extensionsから見るWebExtensions
Yoichiro Tanaka
 
Yapc
YapcYapc
SocialWeb-Japan Vol.2 20090428
SocialWeb-Japan Vol.2 20090428SocialWeb-Japan Vol.2 20090428
SocialWeb-Japan Vol.2 20090428
Yoichiro Tanaka
 
JavaEdge第3回ライブセッション
JavaEdge第3回ライブセッションJavaEdge第3回ライブセッション
JavaEdge第3回ライブセッション
Yoichiro Tanaka
 
maven2+aptで楽々ドキュメント
maven2+aptで楽々ドキュメントmaven2+aptで楽々ドキュメント
maven2+aptで楽々ドキュメント
Yoichiro Tanaka
 
丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008
Yoichiro Tanaka
 
体操競技のルール改正と今後の日本の方向性
体操競技のルール改正と今後の日本の方向性体操競技のルール改正と今後の日本の方向性
体操競技のルール改正と今後の日本の方向性
Yoichiro Tanaka
 
世間の荒波を乗りこなせ!
世間の荒波を乗りこなせ!世間の荒波を乗りこなせ!
世間の荒波を乗りこなせ!
Yoichiro Tanaka
 

More from Yoichiro Tanaka (12)

Navigate users from assistant app to android app
Navigate users from assistant app to android appNavigate users from assistant app to android app
Navigate users from assistant app to android app
 
Chrome Extensionsの基本とデザインパターン
Chrome Extensionsの基本とデザインパターンChrome Extensionsの基本とデザインパターン
Chrome Extensionsの基本とデザインパターン
 
Chrome Extensionsから見るWebExtensions
Chrome Extensionsから見るWebExtensionsChrome Extensionsから見るWebExtensions
Chrome Extensionsから見るWebExtensions
 
Yapc
YapcYapc
Yapc
 
SocialWeb-Japan Vol.2 20090428
SocialWeb-Japan Vol.2 20090428SocialWeb-Japan Vol.2 20090428
SocialWeb-Japan Vol.2 20090428
 
JRuby on Rails
JRuby on RailsJRuby on Rails
JRuby on Rails
 
JavaEdge第3回ライブセッション
JavaEdge第3回ライブセッションJavaEdge第3回ライブセッション
JavaEdge第3回ライブセッション
 
maven2+aptで楽々ドキュメント
maven2+aptで楽々ドキュメントmaven2+aptで楽々ドキュメント
maven2+aptで楽々ドキュメント
 
丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008
 
体操競技のルール改正と今後の日本の方向性
体操競技のルール改正と今後の日本の方向性体操競技のルール改正と今後の日本の方向性
体操競技のルール改正と今後の日本の方向性
 
Wicket勉強会2
Wicket勉強会2Wicket勉強会2
Wicket勉強会2
 
世間の荒波を乗りこなせ!
世間の荒波を乗りこなせ!世間の荒波を乗りこなせ!
世間の荒波を乗りこなせ!
 

Recently uploaded

MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
TsuyoshiSaito7
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
Toru Tamaki
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
たけおか しょうぞう
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo Lab
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo Lab
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
Takuya Minagawa
 
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
shogotaguchi
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
Takayuki Nakayama
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
TsuyoshiSaito7
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo Lab
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
Hironori Washizaki
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
Natsutani Minoru
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
Sony - Neural Network Libraries
 

Recently uploaded (14)

MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
 
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
 

Chromeウェブストア - Html5とか勉強会42