47
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unity IAP実装方法まとめ

Last updated at Posted at 2016-09-30

はじめに

Unity IAP を使った課金処理の実装を行うことになった人向けて
課金処理の仕組みを理解していない状態から課金処理の仕組みを理解し、実装に至るまでの手順を残しておきます。

実装までの手順

  1. まずUnity IAPの仕組みについて理解する
  2. デモ用に実装されたPurchaser.csのスクリプトを利用,拡張して実装する

この記事を通じてできるようになること

  • Unity IAPを使ったローカル環境での課金処理の実装
  • Unity IAPを使ったクライアント端末でのレシート検証
  • サーバでのレシート検証の導入概要(Python)

1. 公式ドキュメントの手順に従う

Unity - マニュアル: Unity IAPセットアップ
IAPのテスト 項目は,テストアカウントが作成済みなら飛ばす

2. 公式ドキュメントのクロスプラットフォームの章を読む

Unity - マニュアル: Unity IAP クロスプラットフォーム

ここで課金処理を実装するために、知識として知っておくべきことをまとめると

  • 課金処理を行いたいSceneで、IStoreListenerを実装したクラスのスクリプトをオブジェクトにアタッチし配置する
  • 上記のオブジェクトのが配置されたSceneに遷移するとIStoreListener.OnInitializedが呼ばれる
  • IStoreListenerは下記を実装する必要がある
    • OnInitialized
    • OnInitializeFailed
    • PurchaseProcessingResult
    • OnPurchaseFailed
  • ConfigurationBuilderを利用して、Google Developer Console または iTunes Connectで登録した課金アイテムのプロダクトIDをUnity IAPに認識させる

(※ 複数の課金アイテムがある場合は,複数認識させるためのスクリプトを自前で組む必要がある)

  • サーバでレシート検証を行う場合は,ローカルでの課金アイテム購入時にProcessPurchasePendingを返し,サーバでのレシート検証後にConfirmPendingPurchase を呼び出す.

  • ローカルでもレシートチェックができる

3. 公式ドキュメントのレシート検証の章を読んでおく

レシート情報をサーバサイドで検証をするために必須知識なので目を通しておく
Unity - マニュアル: Unity IAP 購入レシート

4. Unite2016Tokyoの資料を参考に実装をする

Unity IAP の使い方 - SlideShare
Unite2016TokyoWS01 - Github
このGithubリポジトリの中の Purchaser.cs が実装する上で非常に参考になったので,1, 2で得た知識を元にソースコードを熟読する.

5. サーバでのレシート検証

[Android編]
Androidのアイテム課金でレシート検証をサーバ側で行う
GolangでGooglePlayの課金レシートの署名検証
AndroidでのUnity IAPの購入レシート内のjsonには
jsonsignatureの2つキーがGoogle Playから送られてきたレシートデータになる.
Google Developer Console内に定義されている公開鍵とsignatureの検証 = レシートの検証になる.

PythonではM2Cryptoを使いました.

[iOS編]
receipt-dataをキー,レシートデータ(Unity IAPならpayloadキーで取れる値)をバリューにして以下のURLにPOST
https://buy.itunes.apple.com/verifyReceipt
レスポンスが21007ならサンドボックス用のURLにもう一回送って検証
https://sandbox.itunes.apple.com/verifyReceipt

Pythonではurllib2を使いました.

参考文献

Unity IAPを使ってて思ったこと

Unity2016Tokyoのカンファレンス関係者の方々にこの場を借りて感謝致します.

47
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?