【cluster】ワールド内課金時に課金情報をGoogleスプレッドシートに記録する実装サンプル

clusterのワールド内課金は現状誰から購入されたものかわからないようで、活用用途を広げるためにも購入時に履歴をGoogleスプレッドシート内に記入する方法をまとめてみました。

参考にされる際は情報の取り扱い、またclusterのガイドラインを遵守した上、自己責任にてご利用いただくようお願いいたします。

※わんぱくさんのDeep Lobby(https://cluster.mu/w/44f9059d-01e5-41c2-bc86-ab032fd8f65b)にて導入いただきました。

①Googleスプレッドシートの設定

Googleスプレットシートを作成

一番上の行に下記見出しを記入しましょう。他の人に見られないようにアクセス権は制限付きにしておくようにしてください。

1列目:商品ID
2列目:購入者
3列目:コイン数

4列目:ワールド名
5列目:購入日時

Google App Scriptを設定する

こちらが外部通信ファイルからデータを受信し、スプレッドシートに登録する箇所となります。

Googleスプレッドシート上部メニューの「拡張機能>Apps Script」からプロジェクトを開き、下記コードをコピペ後、「新しいデプロイ」を行ってWebアプリのURLを発行しましょう。

function doPost(e) {
  var pid = e.parameter.pid;
  var cid = e.parameter.cid;
  var cc  = e.parameter.cc;
  var wid = e.parameter.wid;
  var date = e.parameter.date;
  var spread = SpreadsheetApp.getActiveSpreadsheet();
  var lastRow = spread.getSheets()[0].getLastRow();
  spread.getSheets()[0].getRange((lastRow + 1), 1).setValue(pid);
  spread.getSheets()[0].getRange((lastRow + 1), 2).setValue(cid);
  spread.getSheets()[0].getRange((lastRow + 1), 3).setValue(cc);
  spread.getSheets()[0].getRange((lastRow + 1), 4).setValue(wid);
  spread.getSheets()[0].getRange((lastRow + 1), 5).setValue(date);
  var jsonData = {
    pid: pid,
    cid: cid,
    cc: cc,
    wid: wid,
    date: date,
    result: 'ok'
  }
  return ContentService.createTextOutput(JSON.stringify(jsonData))
    .setMimeType(ContentService.MimeType.JSON);
}

「新しいデプロイ」の際は、「Webアプリ」を指定、「次のユーザーとして実行」を「自分」に、「アクセスできるユーザー」を「全員」としてください。デプロイの際アクセス権限を求められますので、ログインしている自分のユーザーをクリックしましょう。

その後警告のダイアログが表示されますが、あくまで警告ですのでそのまま左下の「詳細」リンクから進んでゆけばデプロイが完了し、WebアプリのIDが発行されます。

②外部通信用のPHPファイルをWebサーバーに設置

ご自身のサーバーに下記PHPファイルを設置してください。コードは特にいじる必要はありません。設置後の当ファイルのURL(フルパス)が外部通信URLとなります。

payment.php(ファイル名は任意)

※サーバー環境で動作が変わる可能性がございますのでご了承ください。

③ワールド内課金プログラムに送信処理を追加

clusterのワールド内課金スクリプトを下記のように改変し、productId、verify、cc、wid、gidの値(定数)を設定してください。

執筆者:なび公

タイトルとURLをコピーしました