ペイステーションとPlayFab認証の組み合わせ使用について
PlayFabを使用してアプリケーションにユーザー認証を実装済みの場合、PlayFab側で決済トークンを生成し、アプリケーションのクライアント側に渡して決済UIを開くことができます。
この統合オプションを使用すると、購入代金を支払うユーザーの国と通貨を決定するロジックを独自に実装する必要があります。
統合フロー:
- アドミンページに新規登録して、新しいプロジェクトを作成します。今後の手順で作成したプロジェクトのIDが必要です。
- カタログをセットアップします:
- エクソーラ側のアイテムカタログを作成します。アイテムを手動で追加するか、Google PlayまたはPlayFabからインポートすることができます。
- SDKを使用して、アプリケーションのクライアント側でカタログを取得して表示する機能を実装します。
- アイテム購入をセットアップします:
- アプリケーションのクライアント側で、PlayFabのクラウドスクリプトを使って、ユーザーとアイテムのデータを含む注文を作成します。
- SDKを使用して、アプリケーションのクライアント側で決済UIを開くように実装します。
統合を完了し、実際の支払いを受け付けるようにするには、エクソーラとライセンス契約を結ぶ必要があります。
ライセンス契約はいつでも統合のどのステップでも署名できますが、審査プロセスには最大で3営業日かかる可能性があることを覚えておいてください。
プロジェクトを作成する
アドミンページの新規登録
アドミンページは、エクソーラの機能を構成し、アナリティクスや取引を処理するための主要なツールです。
登録時に指定された会社とアプリケーションに関するデータは、エクソーラとのライセンス契約のドラフトを作成し、あなたに適したソリューションを提案するために使用されます。データは後で変更することができますが、新規登録時に正しいデータを提供することで、ライセンス契約締結までのプロセスが迅速化されます。
新規登録するには、アドミンページにアクセスし、アカウントを作成してください。
アドミンページのパスワードはラテン文字、数字、特殊文字で構成でき、少なくとも以下を含む必要があります:
- 8文字以上
- 1桁
- 大文字1つ
- 小文字1つ
パスワードのセキュリティを確保するために、以下をことを推奨します:
- 少なくとも90日に1回はパスワードを変更する
- アカウントの過去4回のパスワードと一致しない新しいパスワードを使用する
- 他の場所で使用されているパスワードと一致しない固有のパスワードを使用する
- 簡単にアクセスできる場所にパスワードを保存しない
- パスワードマネージャーを使用してパスワードを保存する
アドミンページでは2要素認証が使用され、認証を試行するたびに確認コードが送信されます。
アドミンページでのプロジェクト作成
複数のアプリケーションを所有している場合は、それぞれのアプリケーションに対して個別のプロジェクトを作成することをお勧めします。プロジェクト作成時に指定したデータに基づいて、エクソーラはあなたに適したソリューションを提案します。
新たしいプロジェクトを作成するには:
- アドミンページを開きます。
- サイドメニューで、「プロジェクトの作成」をクリックします。
- プロジェクト名を英語で入力してください(必須)。
- ゲームのリリースプラットフォームを1つまたは複数選択します(必須)。
- ゲームへのリンクを追加します。ゲームがまだウェブサイトを持っていない場合は、ゲームに関する情報を含むソースへのリンクを追加します(必須)。
- ゲームエンジンを選択します。
- 使用している、または使用する予定の収益化オプションを選択します。
- ゲームがすでにリリースされているかどうかを指定します。ゲームがまだリリースされていない場合は、予定公開日を指定します。
- 「プロジェクトを作成する」をクリックします。おすすめのエクソーラ製品のページが表示されます。
統合プロセスでは、アドミンページでプロジェクト名の横に表示されているプロジェクトIDを入力する必要があります。
カタログのセットアップ
アドミンページでのアイテム作成
エクソーラ側でカタログを作成する必要があります。アイテムを手動で追加するか、Google PlayまたはPlayFabからインポートすることができます。Google Playからインポートする場合、一度に最大100個のアイテムをインポートできます。
これらの説明は、仮想アイテムの基本設定手順を提供します。後で、カタログに他のアイテム(仮想通貨、バンドル、ゲームキー)を追加したり、アイテムグループを作成したり、プロモーションキャンペーンや地域価格などを設定したりすることができます。
基本設定の仮想アイテムをカタログに追加するには:
- アドミンページでプロジェクトを開きます。
- サイドメニューの「ストア」をクリックします。
- 「仮想アイテム」ペインで、「接続」をクリックします。
- ドロップダウンメニューで、「アイテムを作成する」を選択します。
- 以下のフィールドでアイテムの基本設定を行います:
- イメージ(任意)
- SKU(アイテムの一意のID)
- アイテム名
- 説明(任意)
- アイテム価格を指定します:
- 「実際通貨での価格」のトグルを「オン」に設定します。
- 「デフォルト通貨」フィールドで通貨を変更し(任意)、アイテム価格を指定します。
- 「デフォルト通貨」フィールドで通貨を変更した場合は、「実際通貨での価格」フィールドで同じ通貨を選択します。
- アイテムのステータスを「利用可能」に変更します。
- 「アイテムを作成」をクリックします。
SDKのインストールとセットアップ
- Epic Gamesランチャーをダウンロードします。
- Unreal Engineプロジェクトを作成します。
- SDKをダウンロードしてインストールします:
- Unreal EngineマーケットプレイスからSDKをダウンロードしてインストールするには:
- Unreal EngineマーケットプレイスでのSDKページに移動します。
Open in Launcher をクリックします。
- Unreal EngineマーケットプレイスからSDKをダウンロードしてインストールするには:
- Epic Gamesランチャーに移動します。
Install to Engine をクリックします。- Unreal EditorでUnreal Engineプロジェクトを開きます。
Settings > Plugins > Installed > Xsolla SDK セクションに移動します。Enabled ボックスにチェックを入れ、Restart Now をクリックして設定を保存し、Unreal Editorをリロードします。
- GitHubからSDKをダウンロードしてインストールします:
- ご使用のバージョンのエンジンのSDKが含まれたパッケージをダウンロードします。.
- パッケージを解凍します。
- SDKフォルダをUnreal Engineプロジェクトのルートにある
plugins
ディレクトリに移動します。
- GitHubからSDKをダウンロードしてインストールします:
Settings > Project Settings > Plugins > Xsolla Settings > General に移動します。Project ID フィールドには、プロジェクト名の横にあるアドミンページで見つかるプロジェクトIDを指定してください。
アプリケーションのクライアント側にカタログの表示
この説明では、GetVirtualItems
SDKメソッドを使用して仮想アイテムのリストを取得します。また、他のSDKメソッドを使用してカタログアイテムの情報を取得することもできます。
カタログページの作成手順については、アイテムカタログの表示セクションを参照してください。
カタログアイテムのクラスを作成する
Content Browser で、Content ディレクトリに移動します。- コンテキストメニューを呼び出し、
Blueprint Class を選択します。
All Classes セクションで、Object を選択してSelect をクリックします。
- 名前を
StoreItemData と指定してください。 - 作成したクラスのブループリントを開きます。
My Blueprint パネルで、Add New をクリックしてVariable を選択します。Details パネルで:
Variable Type フィールドでStoreItem を指定します。Instance Editable とExpose on Spawn ボックスのチェックを入れます。
StoreItemData ブループリントを保存して閉じます。
カタログアイテムのウィジェットを作成する
Content Browser で、Content ディレクトリに移動します。コンテキストメニューを呼び出し、User Interface > Widget Blueprint を選択します。- ブループリント名を
StoreItem として指定します。 - 作成したブループリントを開きます。
Hierarchy パネルで、CanvasPanel 要素のコンテキストメニューを呼び出します。Replace With > Overlay を選択します。
Palette パネルからUIプリミティブを以下に示すように配置してください。アイテムの画像、タイトル、および説明については、Details パネルのIs Variable ボックスにチェックを入れてください。
Graph ビューを開きます。Class settings をクリックします。Details パネルで、Interfaces > Implemented Interfaces に移動します。Add をクリックしてUserObjectListEntry を選択します。これは、UIプリミティブがリストの要素に対して通常の動作を実装できるようにする、UEの標準的なインターフェースです。
OnListItemObjectSet
イベントのロジックを追加します:My Blueprint パネルで、Interfaces セクションのコンテキストメニューを呼び出し、Implement event を選択します。
- 以下のようにノードを追加します:
StoreItem ブループリントを保存して閉じます。
カタログページ用のウィジェットを作成する
Content Browser で、Content ディレクトリに移動して、コンテキストメニューからUser Interface > Widget Blueprint を選択します。- ブループリントの名前を
WBP_Store と指定します。 - 作成したブループリントを開きます。
- アイテム表示エリアに
List View 要素を追加し、StoreListView という名前を付けます。
Details パネルで、Entry Widget Class フィールドで、以前に作成したアイテムのクラス(StoreItem
)を選択します。Graph ビューに移動します。- 下図に示すように、
GetVirtualItems
SDKメソッドコールをEventConstruct
ノードにバインドします。
StoreItemData
クラスの補助配列が作成されます。My Blueprint パネルで、Add New をクリックしてVariable を選択します。Details パネルで:Variable Type フィールドで、String を選択します。Instance Editable とExpose on Spawn ボックスにチェックを入れます。- 名前を
PlayFabId と指定してください。
WBP_Store ウィジェットを保存して閉じます。- ディレクトリ表示ロジックを追加します。以下は、ユーザーの認証成功後のディレクトリ表示の実装例です。
アイテム購入のセットアップ
エクソーラ側でユーザーとアイテムのデータを使用して注文を作成するには、購入用支払いトークンを作成するAPIコールを使用するクラウド関数をプロジェクトに追加します。このコールは決済UIを開き、購入を行うために必要な支払いトークンを返します。
制限事項:
- 支払いトークンをリクエストする際に、ユーザーの国かIPアドレスを渡す必要があります。
- トークンに通貨を渡さなかった場合、通貨は国によって決定されます。
- トークンに通貨を渡すと、ユーザーはこの通貨で支払います。
PlayFabプロジェクトが作成され、PlayFab SDKがすでにUnityプロジェクトに統合されている必要があります。
PlayFabクラウドスクリプトはHTTPトリガーを持つ関数を直接サポートしていないため、Azure関数を使用してウェブフックの受信を実装します。
Azure関数を使い始めるには、Azureアカウントを作成し、開発環境の準備を行います。本説明では、以下の設定の開発環境での手順を説明します:
- Visual Studio Codeがインストールされています。
- Azure関数を扱うための拡張機能がインストールされています。
プロジェクトにクラウドスクリプトの追加
- Visual Studio Codeを開き
Azure タブに移動します。 Workspace セクションで、「+」アイコンをクリックしてCreate Function を選択します。
- 新規プロジェクトのディレクトリを選択します。新しいプロジェクトを作成するためのメニューが表示され、設定を選択できます。
- 新しいプロジェクトの設定を指定します:
- 関数プロジェクトの言語を選択する —
JavaScript 。 - JavaScriptプログラミングモデルを選択する —
model V4 。 - プロジェクトの最初の関数のテンプレートを選択する —
HTTP trigger 。 - 関数名を入力する —
getXsollaPaymentToken
。 - プロジェクトを開く方法を選択する —
Open in current window 。
- 関数プロジェクトの言語を選択する —
- その結果、Visual Studio CodeはJSプロジェクトを生成し、生成された
getXsollaPaymentToken.js
ファイルを開きます。
getXsollaPaymentToken.js
ファイルを修正します:
- js
const { app } = require('@azure/functions');
const projectId = ""; //your xsolla project id from publisher account
const apiKey = ""; your api key from publisher account
app.http('getXsollaPaymentToken', {
methods: ['POST'],
authLevel: 'anonymous',
handler: async (request, context) => {
var body = await request.json();
const userId = body.uid;
const email = body.email;
const sku = body.sku;
const returnUrl = body.returnUrl;
if (!userId) {
return {status: 400, body: 'Request body is missing' };
}
const payload = {
user: {
id: {value: userId},
name: {
value: email
},
email: {
value: email
},
country: {
value: 'US',
allow_modify: false
}
},
purchase: {
items: [
{
sku: sku,
quantity: 1
}
]
},
sandbox: true,
settings: {
language: 'en',
currency: 'USD',
return_url: returnUrl,
ui: {
theme: '63295aab2e47fab76f7708e3'
}
}
}
let url = "https://store.xsolla.com/api/v2/project/" + projectId.toString() + "/admin/payment/token";
return fetch(
url,
{
method: "POST",
headers: {
'Content-Type': 'application/json',
Authorization: 'Basic ' + btoa(`${projectId}:${apiKey}`)
},
body: JSON.stringify(payload)
},
)
.then(xsollaRes => {
// Handle the response data
if (xsollaRes.ok) {
return xsollaRes.json();
} else {
return { status: 400, body: `HTTP request failed with error: ${xsollaRes.statusText}` };
}
})
.then(data => {
return { status: 200, body: JSON.stringify(data) };
})
.catch(error => {
return { status: 501, body: `Error = ${error}` };
});
}
});
- スクリプトの中で、定数の値を指定します:
PROJECT_ID
— アドミンページのプロジェクト名の横にあるプロジェクトID。
API_KEY
― APIキー。アドミンページには作成時に1回だけ表示され、ユーザー側に保存する必要があります。次のセクションで新しいキーを作成できます:- 会社設定 > APIキー
- プロジェクト設定 > APIキー
クラウドスクリプトを追加した後、ローカルでgetXsollaPaymentToken
関数のコールをテストすることができます。
クラウドスクリプトのデプロイ
- Visual Studio Codeで
Azure > Resources セクションに移動し、「+」アイコンをクリックします。 - リソースとして
Create Function App in Azure を選択します。新しいアプリケーションを作成するためのメニューが表示され、設定を選択できます。 - アプリケーションの設定を行います:
- 新しいファンクションアプリの名前を入力します —
XsollaFunctions
。 - ランタイムスタックを選択します —
.NET 8 Isolated 。 - 新しいリソースの場所を選択します(任意のオプションを選択できる)。
- 新しいファンクションアプリの名前を入力します —
- リソースグループが作成されるまで待ちます。
- リソースのリストで、
XsollaFunctions
を選択し、コンテキストメニューを呼び出し、Deply to Function App を選択します。
クラウドスクリプトを追加した後、リモートでgetXsollaPaymentToken
関数のコールをテストすることができます。
クラウドスクリプトのテスト
クラウドスクリプトを(ローカルまたはリモートで)テストするには、Postmanまたは他のツールを使ってgetXsollaPaymentToken
関数を呼び出します。これを行うには:
- Visual Studio Codeで、
Azure > Workspace > Local Project > Functions セクションに移動してStart debugging to update this list をクリックします。 関数のコンテキストメニューを呼び出し、
Copy Function Url を選択します。ローカルでテストする場合、URLは次のようになります —http://localhost:7071/api/getXsollaPaymentToken
。リモートテストの場合 —https://xsollafunctions.azurewebsites.net/api/GetXsollaPaymentToken
。
- コピーしたURLを使用して、指定されたパラメータで関数を呼び出します。Postmanから関数を呼び出すには:
- 新しい
GET
リクエストを作成します。 - ステップ2でコピーしたURLを入力します。
Body タブに移動してリクエストパラメータを指定します。
- 新しい
リクエスト本文の例:
- json
{
"FunctionArgument": {
"uid": "1D384D9EF12EAB8B",
"sku": "booster_max_1",
"returnUrl": "https://login.xsolla.com/api/blank"
}
}
Send をクリックします。応答では、次のパラメータを含むJSONを受け取る必要があります:token
— 支払いトークン。決済UIを開くためには必須です。order_id
— 作成された注文のID。注文状況を追跡するためには必須です。
応答本文の例:
- json
{"token":"xsnpCF8tS4ox7quoibgTgPFVFxG9gTvS_lc_en_bg_2C2640_tb_6E7BF7","order_id":90288613}
PlayFabで決済トークンを取得するための登録関数
- PlayFabでプロジェクトを開きます。
- サイドメニューで
Automation をクリックします。 Register New Cloud Script Function セクションでRegister Function をクリックします。- 関数名を入力します —
GetXsollaPaymentToken
。 - Visual Code Studioにコピーした関数のURLを入力します(クラウドスクリプトのテストのステップ1-2を参照)。
Unreal Engineプロジェクトで注文を作成し、決済UIを開く
- Unreal Engineプロジェクトを開きます。
WBP_Store ウィジェットを開きます。Hierarchy パネルで、StoreListView を選択します。Details パネルで、On Clicked イベントの横にある「+」アイコンをクリックします。
Graph ビューに移動してください。- 以下に示すように、
PlayfabJsonObject
オブジェクトを作成し、それにデータを渡してOnItemClicked
ノードに注文を作成するロジックを追加します:
ExecuteFunction
メソッドにコールを追加します。functionName = getXsollaPaymentToken
パラメータとFunctionParameter = PlayfabJsonObject
パラメータをそれに渡します。
注文状況追跡のセットアップ
注文状況の追跡は、支払いが成功したことを確認し、ユーザーにアイテムを付与するために必要です。
クライアント側で注文状況の取得
注文状況を追跡するには、アプリケーションのクライアント部分でCheckPendingOrder
SDKメソッドを使用します。メソッドに以下のパラメータを渡します:
AuthToken
— ユーザー認証トークンOrderId
— ショッピングカート経由で購入、ワンクリック購入または仮想通貨で購入から受信した注文IDSuccessCallback
— 注文がdone
の状況に変更した場合のコールバックErrorCallback
— エクソーラサーバーがエラーを返した場合のコールバック
メソッドの動作に関する詳細情報については、注文状況の追跡セクションを参照してください。
サーバー側で注文状況の取得
SDKはアプリケーションのクライアント側で注文状況を追跡することを可能にします。ただし、完了した購入の追加の検証を実装するために、アプリケーションのバックエンドで支払いウェブフックハンドラを設定することをお勧めします。これにより、注文情報を受け取ることができます
ウェブフックの完全なリストと、ウェブフックの操作に関する一般情報については、ウェブフックのドキュメンテーションを参照してください。
エクソーラ側でウェブフックを構成するには:
- アドミンページでプロジェクトを開きます。
- サイドメニューの「プロジェクト設定」をクリックし、「ウェブフック」セクションに移動します。
- 「ウェブフックサーバー」フィールドに、エクソーラがウェブフックを送信するURLを入力します。
ウェブフックをテストするには、webhook.siteなどの専門サイトや、ngrokなどのプラットフォームを選択することもできます。
テスト用に、ウェブフック処理の成功をシミュレートするクラウドスクリプトを追加することもできます。スクリプトのコードはGitHubにあります。
実際のプロジェクトでは、購入検証ロジックを追加する必要があります。
- 「秘密鍵」フィールドの値をコピーして保存します。このキーはデフォルトで生成され、ウェブフックの署名に使用されます。変更したい場合は、更新アイコンをクリックします。
- 「ウェブフックを有効にする」をクリックします。
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。