エクソーラウェブフックを受信する
購入処理の際、エクソーラは様々なイベントを通知するためにウェブフックを送信します(例:支払いのキャンセル、カート内容の取得)。これらのウェブフックを使って以下のことができます:
- 独自のソリューションでもサードパーティのソリューションでも、プレーヤーのインベントリに購入品を追加することができます。
- 情報の記録、報酬の付与、注文の割引などを行うように注文を検証および処理するための独自のロジックを実装します。
BaaS側でウェブフックを受信するには、FirebaseやPlayFabの手順に従って、すぐに使える機能をプロジェクトに追加します。
Firebaseプロジェクトにクラウド機能を追加する
- Firebaseプロジェクトを初期化します。
- ウェブフック受信機能をインポートします。この機能で、
<WebhookSecretKey>
は、プロジェクト設定> ウェブフックセクションのアドミンページにある秘密鍵です。
ウェブフックを受信するための機能コード:
Copy
- javascript
const webhookSecretKey = "<WebhookSecretKey>";
exports.webhook = functions.https.onRequest((request, response) => {
const requestRawBody = request.rawBody.toString("utf-8");
const crypto = require("crypto");
const sig = "Signature " + crypto
.createHash("sha1")
.update(requestRawBody + webhookSecretKey)
.digest("hex");
if (request.headers.authorization !== sig) {
response.status(401).send();
return;
}
// TODO Replace this block with your game's logic for purchases handling
switch (request.body.notification_type) {
case "order_paid": {
const userId = request.body.user.external_id;
const skus = request.body.items.map(function(it) {
return it.sku;
}).join(", ");
const price =
`${request.body.order.amount} ${request.body.order.currency}`;
functions.logger.log(
"Order Paid\n",
`A user ${userId} has just paid ${price} for ${skus}\n`,
"Full Data\n",
request.body
);
break;
}
case "order_canceled": {
const userId = request.body.user.external_id;
const orderId = request.body.order.id;
functions.logger.log(
"Order Canceled\n",
`A user ${userId} has just canceled order ${orderId}\n`,
"Full Data\n",
request.body
);
break;
}
}
response.status(204).send();
});
- ウェブフックを処理するためのロジックを実装します。
お知らせ
- この例のように、機能を実稼働環境に配備します。
- Firebaseのコンソールで
Build > Functions に移動し、ウェブフック受信機能のURLをコピーします。 - アドミンページであなたのプロジェクトを開きます。
- プロジェクト設定 > ウェブフックに移動します。
- ウェブフックサーバーフィルドで、ウェブフック受信機能のURLを指定します。
PlayFabプロジェクトにクラウドスクリプトを追加する
お知らせ
PlayFabクラウドスクリプトはHTTPトリガーを持つ機能を直接サポートしていないため、Azure機能を使用してウェブフックの受信を実装します。
- Azure機能を使用するための開発環境を準備します。
- 例に従って、ウェブフックを受信するための機能を追加します。この機能内で、
<WebhookSecretKey>
は、プロジェクト設定> ウェブフックセクションのアドミンページにある秘密鍵です。
ウェブフックを受信するための機能コード:
Copy
- javascript
const webhookSecretKey = "<WebhookSecretKey>";
module.exports = async function (context, request) {
const requestRawBody = request.rawBody.toString("utf-8");
const crypto = require("crypto");
const sig = "Signature " + crypto
.createHash("sha1")
.update(requestRawBody + webhookSecretKey)
.digest("hex");
if (request.headers.authorization !== sig) {
context.res = {
status: 401
};
return;
}
// TODO Replace this block with your game's logic for purchases handling
switch (request.body.notification_type) {
case "order_paid": {
const userId = request.body.user.external_id;
const skus = request.body.items.map(function (it) {
return it.sku;
}).join(", ");
const price =
`${request.body.order.amount} ${request.body.order.currency}`;
context.log(
"Order Paid\n" +
`A user ${userId} has just paid ${price} for ${skus}\n` +
"Full Data\n" +
JSON.stringify(request.body)
);
break;
}
case "order_canceled": {
const userId = request.body.user.external_id;
const orderId = request.body.order.id;
context.log(
"Order Canceled\n" +
`A user ${userId} has just canceled order ${orderId}\n` +
"Full Data\n" +
JSON.stringify(request.body)
);
break;
}
}
context.res = {
status: 204
};
}
- ウェブフックを処理するためのロジックを実装します。
お知らせ
- 機能を実稼働環境に配備します。
- 機能URLをコピーします。
- あなたのPlayFab プロジェクトに移動します。
- クラウドスクリプト機能を登録します。
- アドミンページであなたのプロジェクトを開きます。
- プロジェクト設定 > ウェブフックに移動します。
- ウェブフックサーバーフィルドで、ウェブフック受信機能のURLを指定します。
この記事は役に立ちましたか?
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。