Google Play Developer APIを利用したレシート検証の実装(2)

はじめに

前回の記事(Google Play Developer APIを利用したレシート検証の実装(1))では、APIを利用する目的や利用するための設定について書きました。
今回はその続き、プログラムでのAPIの利用方法について書こうと思います。

処理の流れ

大まかな流れとしては

  1. APIを呼ぶためのアクセストークンを取得する
  2. トークンをセットした状態でAPIをコールする

です。

アクセストークンを取得する際に、前回生成したサービスアカウントキーを用いるので、プログラムから読み込むのに適した場所にサービスアカウントキーのファイルを置くようにしてください。

事前準備

上記で書いたとおり、サービスアカウントキーをプロジェクトの適切な場所に置いてください。

次に、Googleでは複数のプログラミング言語に対してGoogle API Client ライブラリが用意されています。今回はPHPで実装したので、composerを用いてライブラリをインストールしました。

実装

ようやくAPIを呼び出す準備が整ったので、実装を進めます。
最終的に、APIを利用するユーティリティクラスを作成します。

まず、ライブラリ等を読み込みます。

次に、諸々の値を定数で定義しました。

そして、アクセストークンを取得・設定します。

purchases.products.getはAndroidPublisherというクラスから呼び出すことができるので、インスタンスを生成します。このとき、引数に先ほどアクセストークンをセットしたクライアントインスタンスを渡します。

あとはこのインスタンスのメソッドを呼び出すだけです。
パラメータとして、

  • packageName
  • productId
  • purchaseToken

が必要なので、それらを渡します。
下2つの値は購入時のレシートのJSONから抜き出した値を利用します。

エラーハンドリングを追加して、上記を全部をまとめると以下のようになります。

APIを呼び出した際、200等の成功レスポンスでない場合は Google_Service_Exception という例外として返されるようです。
ステータスコードとエラーメッセージの取り出し方はソースコードのとおりです。

ちなみに、レスポンスのJSONは以下のようになります。

パラメータで渡していたproductIdやpurchaseTokenはプロパティとして存在しているものの、nullで返ってくるので注意です。

まとめ

前回の記事ではAPIの利用設定、今回の記事ではGoogle Developer API のpurchases.products.getを呼んで購入情報を取得するまでをまとめてみました。

公式ドキュメントにはもちろん記載がありますが、複数ページに分散していて少し混乱したので、この記事がお役に立てると嬉しいです。

読んでいただき、ありがとうございました。