UDP パッケージリファレンス
エディター UI
UDP Settings
UDP Settings インスペクターは、Unity プロジェクトと UDP クライアント間の接続を管理します。UDP Settings ウィンドウを使用可能にするには、UDP パッケージをインストール し、Unity プロジェクトを UDP クライアントにリンク する必要があります。
Unity エディターで UDP Settings ウィンドウにアクセスするには Window > Unity Distribution Portal > Settings の順に選択します。
UDP Settings | Description (説明) |
---|---|
Pull | 最後に UDP サーバーに保存した情報をエディターに取得 (引き出) します。 以下の情報が同期されます。 - Game Title - Settings - UDP Sandbox Test Accounts - IAP Catalog (UDP パッケージのみを使用している場合) これにより、エディターで保存されていない変更は上書きされます。 |
Push | 変更を UDP サーバーに保存 (プッシュ) します。 以下の情報は同期されます。 - Game Title - Settings - UDP Sandbox Test Accounts - IAP Catalog (UDP Settings ウィンドウで直接 IAP カタログを定義した場合) |
Game Title | ゲームのタイトルを入力し、Push を押して保存します。このフィールドは UDP コンソールと同期します。 デフォルトで、または最初にロードすることによって、Game Title に Game ID が入力されます (Settings を参照)。 |
Unity Project ID | Unity プロジェクト ID。これは UDP クライアント ID にリンクされます。このフィールドは編集できません。 |
IAP Catalog | UDP パッケージ実装の場合、IAP Catalog フィールドが表示されます。 Unity IAP 実装の場合、Open Catalog (カタログを開く) ボタンが表示されます。 Unity エディターバージョン 2020.1 から、IAP カタログは別のウィンドウで使用できます。 |
Settings | その他のゲーム設定を行います。 |
UDP Sandbox Test Accounts | UDP サンドボックスのテストアカウントの設定を行います。 |
IAP Catalog
IAP Catalog セクションでは、UDP 用の IAP プロダクトを定義できます。新しいアイテムを加えるには、Add new IAP を選択します。 下の画像は、UDP パッケージを使用している場合の IAP Catalog セクションを示しています。
下の表は IAP Catalog セクションの説明です。
フィールド | Description (説明) |
---|---|
Product ID | IAP プロダクトを識別するために使用される一意の ID。 Product ID は、以下の要件に従う必要があります。 - アルファベット文字または数字で始める必要があります - アルファベット文字、数字、ドット (.)、アンダースコア (_) のみ使用可能です - 大文字は使えません |
Name | IAP プロダクトの名前。 |
Type | IAP が消費型であるかどうか。 |
Price | 米ドル表示の IAP プロダクトの価格。UDP コンソールで 他の通貨の価格を設定できます。 ゲーム内でプレイヤーがプロダクトを購入できるようにするには、価格を指定する必要があります。 |
Description | IAP プロダクトの簡単な説明。 このフィールドは、1 言語 (英語) でのみ説明できます。UDP コンソールで その他の言語を追加 できます。 |
IAP プロダクトに保存していない変更がある場合は、edited (編集) のラベルが表示されます。これは、IAP プロダクトを同期すると消えます。
ノート: 別の Unity IAP パッケージを使用する場合は、Window > Unity Distribution Portal > IAP Catalog を選択し、別の IAP Catalog ウィンドウで IAP プロダクトを定義します。
Settings
Settings セクションには、UDP コンソールから同期される追加の設定が含まれています。 Callback URL は唯一の編集可能な設定です。Push を押して変更を保存します。
フィールド | 機能 | 編集 |
---|---|---|
Game ID | ゲームの識別子 | 不可 |
Client ID | UDP クライアント識別子 | 不可 |
Client Key | UDP SDK の初期化に使用されます | 不可 |
Client RSA Public Key | コールバック通知の確認に使用されます | 不可 |
Client Secret | ゲームが UDP サーバーに送信するリクエストに署名する Unity キー | 不可 |
Callback URL | サーバーがコールバック通知を受け取るための URL を指定します | 可 |
UDP Sandbox Test Accounts
UDP Sandbox Test Accounts セクションでは、サンドボックス環境のログイン認証情報を加えます。これは、UDP サンドボックス環境でゲームをテストするのに必要です。UDP コンソールでもこの認証情報を設定できます。
フィールド | 機能 | 編集 |
---|---|---|
サンドボックステストのメールアドレス。UDP サンドボックス環境のみのログイン名として使用されます。 | 可 | |
Password | テストアカウントのパスワード。 | 可 |
UDP SDK
UDP SDK データ構造体
このセクションは、UDP SDK のクラスを説明します。
UserInfo
フィールド名 | 型 | 説明 |
---|---|---|
Channel | String | PartnerStore 名、UDP によって生成 |
UserId | String | 任意、PartnerStore から返されるユーザー ID |
UserLoginToken | String | 任意、PartnerStore から返されるユーザーログイントークン |
Inventory
Public 関数 | 戻り値 | 説明 |
---|---|---|
GetPurchaseInfo(string productId) | PurchaseInfo | 指定した productId の PurchaseInfo を取得 |
GetProductInfo(string productId) | ProductInfo | 指定した productId の ProductInfo を取得 |
HasPurchase(string productId) | Bool | 指定した productId に未消費の購入があるかを確認 |
HasProduct(string productId) | Bool | 指定した productId にプロダクトがあるかを確認 |
GetPurchaseDictionary() | Dictionary<string, PurchaseInfo> | 購入を productId - PurchaseInfo ディクショナリで取得 |
GetPurchaseList() | List<PurchaseInfo> | 購入をリストで取得 |
GetProductDictionary() | Dictionary<string, ProductInfo> | プロダクトを productId - PurchaseInfo ディクショナリで取得 |
GetProductList() | List<ProductInfo> | プロダクトをリストで取得 |
PurchaseInfo
フィールド名 | 型 | 説明 |
---|---|---|
ItemType | String | 修正値 “inapp” |
ProductId | String | IAP アイテムのプロダクト ID |
GameOrderId | String | UDP が提供する cpOrderId |
OrderQueryToken | String | UDP サーバーにクエリするトークン、UDP により生成 |
DeveloperPayload | String | 開発者によって提供された任意の文字列。UDP は、これを ‘Purchase’ メソッドで PartnerStore に渡します。 |
StorePurchaseJsonString | String | PartnerStore によって提供される他の追加情報 |
ProductInfo
フィールド名 | 型 | 説明 |
---|---|---|
ItemType | String | 修正値 “inapp” |
ProductId | String | IAP アイテムのプロダクト ID |
Consumable | Bool | 消費型かどうか |
Price | String | 形式に沿って整えられたアイテムの価格。通貨記号を含みます。 |
PriceAmountMicros | Long | マイクロ単位の IAP アイテムの価格 |
Currency | String | IAP アイテム価格の通貨 |
Title | String | IAP アイテム名 |
Description (説明) | String | IAP アイテムの説明 |
IPurchaseListener
IPurchaseListener は以下のリスナーを提供し、すべての購入関連イベントの結果を通知します。
イベント | Description (説明) |
---|---|
OnPurchase | 購入は成功しました。 |
OnPurchaseFailed | 購入は失敗しました。 |
OnPurchaseRepeated | プレイヤーが非消費型プロダクトを複数回購入するときに使用されます。パートナーストアが QueryInventory をサポートしていない場合に、このリスナーを実装できます。 |
OnPurchaseConsume | 消費が成功しました。 |
OnPurchaseConsumeFailed | 消費が失敗しました。 |
OnQueryInventory | クエリが成功しました。 |
OnQueryInventoryFailed | クエリが失敗しました。 |
注文クエリパラメーター
以下はリクエストに使用するパラメーターの表です。
属性名 | 型 | 必須/任意 | 説明 | 例 |
orderQueryToken | String | 必須 | 購入の完了時にクライアントSDK から返される注文クエリトークン。トークンはBase64 でエンコードされています (UDP SDK は PurchaseInfo.OrderQueryToken を返します)。 | eyJjaGFubmVsUHJvZHVjdElkIjoiaWFwLl9mM2YzZiIsImNoYW5uZWxUeXBlIjoiQVBUT0lERSIsImNsaWVudElkIjoiQUFJZ3g5VmNGaDJZQ1ZxbUs2VWNDUSIsImNwT3JkZXJJZCI6IjJhNGQ5MWY4NDgzZjQ3YjlhYzFhNGY5MDAwZDVhNTRhIiwicGFja2FnZU5hbWUiOiJjb20udW5pdHkudW5pdHl0ZXN0Z2FtZV9mZWZ3In0= |
orderId | String | 必須 | 購入の完了時にクライアント SDK から返される orderId。(UDP SDK はPurchaseInfo.GameOrderId を返します) | 2a4d91f8483f47b9ac1a4f9000d5a54a |
clientId | String | 必須 | clientId は、ゲーム情報 (UDP コンソールの統合情報) にあります。 | AAIgx9VcFh2YCVqmK6UcCQ |
sign | String | 必須 | orderQueryToken とクライアントシークレット MD5.hash (orderQueryToken + clientSecret) を使用して署名を生成します。 クライアントシークレットは、Game Info (UDP コンソールのインテグレーション情報) にもあります。 | Client Secret: KKcCyAgej06MxjKX31WuFNeHSaTJAjLDlgoDWsPJDAM Sign: 90a4e440897623c7cd0b2b80a97c267e |
レスポンス内のパラメーター
属性名 | 型 | 必須 /任意 | Description | Example |
clientId | String | 必須 | Unity IAP でゲームのクライアントが作成された後に Unity が返す clientId。 | Q4AnJDW2-rxLAPujqrk1zQ |
cpOrderId | String | 必須 | ゲームによって割り当てられた注文 ID、またはゲームで生成されない場合はUnity が生成。 | 66mea52wne |
channelType | String | 必須 | チャンネルタイプ | APTOIDE, CLOUDMOOLAH |
status | String | 必須 | 注文のステータスを示します。 | SUCCESS, FAILED, UNCONFIRMED, STORE_NOT_SUPPORT |
productId | String | 必須 | 注文に紐づけられたプロダクト ID | product_1 |
amount | String | 必須 | 注文の支払価格 | 1 |
quantity | Integer | 必須 | プロダクトの数量を示します。 | 1 |
currency | ISO 4217 | 必須 | プロダクトの購入に使われる通貨 | CNY |
country | ISO 3166-2 | 必須 | ユーザが位置する国、または地理的な地域。 | CN |
paidTime | ISO8601 yyyy-MM-ddThh:mm:ssXXX, UTC timezone | 任意 | 注文の支払い時間を指定します。 | 2017-03-08T06:43:20Z |
rev | String | 必須 | 注文のリビジョン (更新のみ) | 0 |
extension | Json String | 任意 | リファレンス情報を加えるために使用される開発者ペイロード | {"abc" : "123"} |
以下は、ゲームサーバーから UDP サーバーへのリクエストと、UDP サーバーからゲームサーバーへのレスポンスの例です。
orderQueryToken のコンテンツ
{"channelProductId":“iap._f3f3f”,“channelType”:“APTOIDE”,“clientId”:“AAIgx9VcFh2YCVqmK6UcCQ”,“cpOrderId”:“2a4d91f8483f47b9ac1a4f9000d5a54a”,“packageName”:“com.unity.unitytestgame_fefw”}
orderQueryToken (Base64 でエンコード)
eyJjaGFubmVsUHJvZHVjdElkIjoiaWFwLl9mM2YzZiIsImNoYW5uZWxUeXBlIjoiQVBUT0lERSIsImNsaWVudElkIjoiQUFJZ3g5VmNGaDJZQ1ZxbUs2VWNDUSIsImNwT3JkZXJJZCI6IjJhNGQ5MWY4NDgzZjQ3YjlhYzFhNGY5MDAwZDVhNTRhIiwicGFja2FnZU5hbWUiOiJjb20udW5pdHkudW5pdHl0ZXN0Z2FtZV9mZWZ3In0=
Order ID
2a4d91f8483f47b9ac1a4f9000d5a54a
Client ID
AAIgx9VcFh2YCVqmK6UcCQ
Client Secret
KKcCyAgej06MxjKX31WuFNeHSaTJAjLDlgoDWsPJDAM
Sign
90a4e440897623c7cd0b2b80a97c267e
リクエスト
GET
https://distribute.dashboard.unity.com/udp/developer/api/order?orderQueryToken=eyJjaGFubmVsUHJvZHVjdElkIjoiaWFwLl9mM2YzZiIsImNoYW5uZWxUeXBlIjoiQVBUT0lERSIsImNsaWVudElkIjoiQUFJZ3g5VmNGaDJZQ1ZxbUs2VWNDUSIsImNwT3JkZXJJZCI6IjJhNGQ5MWY4NDgzZjQ3YjlhYzFhNGY5MDAwZDVhNTRhIiwicGFja2FnZU5hbWUiOiJjb20udW5pdHkudW5pdHl0ZXN0Z2FtZV9mZWZ3In0%3D&orderId=2a4d91f8483f47b9ac1a4f9000d5a54a&clientId=AAIgx9VcFh2YCVqmK6UcCQ&sign=90a4e440897623c7cd0b2b80a97c267e
レスポンス
{"ClientId":"AAIgx9VcFh2YCVqmK6UcCQ","CpOrderId":"2a4d91f8483f47b9ac1a4f9000d5a54a","ProductId":"iap._f3f3f","ChannelType":"APTOIDE","Currency":"APPC","Amount":"0.1","Country":"HK","Quantity":1,"Rev":"0","Status":"SUCCESS","PaidTime":"2019-06-12T03:59:42Z","Extension":"unity://unity3d.com?cpOrderId=2a4d91f8483f47b9ac1a4f9000d5a54a\u0026payload=payload2"}
JSON ペイロード
以下は JSON ペイロードのコンテンツです。
属性名 | 型 | 必須/任意 | 説明 | 例 |
cpOrderId | String | 必須 | ゲームによって割り当てられた一意の注文識別子。 | 0bckmoqhel5yd13f |
status | String | 必須 | 注文のステータスを示します。 | SUCCESS |
amount | String | 必須 | 注文の金額を指定します。 | 1.01 |
productId | String | 必須 | 注文に含まれるプロダクトの一意の識別子を指定します。 | com.mystudio.mygame.productid1 |
paidTime | ISO8601 yyyy-MM-ddThh:mm:ssZ, UTC timezone | 任意 | 注文の支払いが行われた時刻。実際の支払いが行われていないサンドボックス環境でも、この値は返されます。 | 2018-09-28T06:43:20Z |
country | ISO 3166-2 | 必須 | 注文に対する支払いが行われた国。 | CHINA |
currency | ISO 4217 または 暗号通貨タイプ | 必須 | 注文が行われた国の通貨。 | CNY |
quantity | Integer | 必須 | 注文されたプロダクトの数。 | 1 |
clientId | String | 必須 | ゲームが Unity IAP でクライアントを生成した後に返される一意のクライアント識別子 | Q_sX9CXfn-rTcWmpP9VEfw |
extension | String | 任意 | 開発者向けのリファレンス情報を加えるために使用する開発者ペイロード。 | "{"key":"value"}" |