読者です 読者をやめる 読者になる 読者になる
一人もくもく会 α verでサービス開始しました。

chromeアプリでの課金アイテム販売方法

chromeアプリ

chromeアプリでの課金アイテム販売方法を調べてみたが、
使っている人が少ないのか情報がめちゃくちゃ少ない。
そのためちょっとまとめてみた。
まずは前提として下記の結論を見て欲しい。

https://developers.google.com/in-app-payments/docs/?hl=ja
堂々と掲載されているこの情報は古く、現在は無効。
最新のURLは
https://developer.chrome.com/webstore/payments-iap
(この情報と、中でリンクされているサンプルが全てと思ってもらった方がいい)

・多分、管理外アイテムの販売が出来ない(パズドラの魔法石のように何度も買わせることが出来ない)


上記を見て、それでも課金を導入したいという方だけ続きを見て頂ければと思う。


まず、アイテムの登録方法。
Chromeウェブストアの右上の設定ボタンからデベロッパーダッシュボードにアクセスできる。
ここではアプリを登録できるが、アプリ登録後ここでアイテムも追加できる。
Androidアプリと比べていただくと分かるように、管理外アイテムの登録ができない。
つまり魔法石のように個数をアプリ側で管理して無制限販売ということが不可能。
やるなら魔法石☓10=1000円、みたいなのをたくさん登録するしかないと思う。
ただ、それも問題があるが後述する。


次に実際の実装方法。In-App Paymentsというのだが、
前述したように、古い情報が掲載されたままになっている課金方法は廃止。
色々解説サイトがあったので試してみたのだがGoogle側のページが404だったりして
不可能だということがわかった。

多分現在のはここに書かれている
「CWS 管理型 IAP」というものだと思う。
古い仕様はどのサイトでも実行できたみたいで、色々セキュリティ的に問題があったとどっかで見た気がする。
(違うかもしれないが)

とりあえずこの変更により、前述のように固定アイテムしか販売できなくなっている模様。
なんかもうChromeアプリ終わってる感が半端ない。
ただ、仕様を見ていただくと分かるが、GoogleのウェブストアAPIから取得できる情報というのが
「その商品を購入したかどうか」くらいしかない。
それも自分でリクエストして取得するだけなので(orderIdみたいなのもない)、
よくあるようなサーバーへのコールバックURLでの処理なども出来ない。
全部javascript
(…恐らく。仕様を見る限り。)
そのためセキュリティ的にかなり怪しいと思う。

魔法石☓10みたいなのを購入処理後、すぐに購入結果をリクエストして、
購入済みになっている且つアプリ上の自己管理購入済みフラグがオフならオンにしてアイテム付与、
のようにするしか無いと思う。
素人でも偽装できるんじゃないか感が半端無いが…。


間違っていたら申し訳ないが
もし違っていればどなたか情報をいただけると助かります。

このような感じで現状ではあまりChromeアプリでのアイテム課金は有用では無いと思う。


一点注意で、google.payments.inapp.getPurchasesのところも
呼び出しのパラメータに'parameters': {'env': 'prod'},が必要だが、
ドキュメントでは書き忘れられている。