プレイヤーインベントリ
インベントリは、ユーザーが購入、獲得、または消費できるゲーム内のすべてのアイテムのセットです。
エクソラプレイヤーインベントリを使用すると、パートナーは次のことができます:
- すべてのプラットフォームでユーザーのすべての購入とプレミアム報酬を同期しますエクソラAPIを使用して、。
- ユーザーのインベントリ内のアイテムと通貨を付与および取り消します。
どのように動作するか
プレイヤーインベントリは、ユーザーIDによってユーザーのインベントリを管理します。ユーザーIDは、エクソラログインを通じて実装されます。独自の識別システムを構成した場合、クライアントAPIメソッドに決済ステーションアクセストークンを使用できます。
プレイヤーインベントリAPIメソッドを使用するには、認証を構成する必要があります。
ユーザーのインベントリには、消耗品と非消耗品の両方が含まれる場合があります。消耗品は購入してインベントリに数回追加し、ゲームクライアントを通じてインベントリから削除できます。非消耗品のアイテムは、一度だけ購入してインベントリに追加できます。ゲームサーバーを通じて、購入のキャンセルとインベントリからの削除ができます。
上記のスキームは、プレイヤーインベントリで操作する次の原則を示しています。
- インベントリの取得
- ユーザーは、エクソラログインアカウントまたは識別方法によってゲーム内で識別されます。
- アプリケーション(クライアント)は、Get user’s inventoryメソッドを呼び出して購入とユーザーの報酬のリストを取得し、Get user’s virtual balanceメソッドを呼び出して仮想通貨の残高を取得します。
- エクソラインベントリサーバーは、ユーザーが現在所有している購入、報酬、または残高に関する情報をクライアントに返します。
- エクソラストアを介したゲーム内購入
- ユーザーは、エクソラログインアカウントまたは識別方法によってゲーム内で識別されます。
- ユーザーはエクソラストアで購入します。
- コンテンツ購入イベントがエクソラインベントリサーバーに送信され、その後、購入したアイテムがユーザーのインベントリに自動的に付与されます。
- サードパーティの公開プラットフォーム(Steam、PlayStationなど)を介したアプリ内購入
- ユーザーは、プラットフォームアカウントを使用してゲームにログインします。
- ユーザーは、プラットフォームの支払いシステムを通じて購入します。
- ゲームサーバーは、Grant items by purchase to usersメソッドを呼び出して、エクソラインベントリサーバーでの購入を許可し、ゲーム内で固有のユーザーIDを送信します。
- エクソラインベントリサーバーは、指定されたIDでユーザーのインベントリに購入を追加します。
- ユーザーへの報酬の付与
- ユーザーは、エクソラログインアカウントまたは識別方法を使用して、ゲーム内で識別されます。
- あなたのサーバーは、Grant items to usersメソッドを呼び出して報酬を付与し、ゲーム内で固有のユーザーIDを送信します。
- エクソラインベントリサーバーは、指定されたIDを持つユーザーのインベントリに報酬を追加します。
- インベントリの同期
- ユーザーは、エクソラログインアカウント、識別メソッド、または第三者のプラットフォームアカウントによってゲーム内で識別されます。
- 必要に応じて、ゲームサーバーはユーザーアカウントを同期します。
- ゲームクライアントは、Get user’s inventoryメソッドを呼び出して、使用可能なゲーム内購入を確認し、固有のユーザーIDを送信します。
- エクソラインベントリサーバーは、指定されたIDの使用可能なアイテムのリストを返します。
統合フロー
プレイヤーインベントリを有効にするには:
- エクソラゲーム内ストアをセットアップします。
- 認証をセットアップします。
- インベントリ管理のメソッドを実装します。
認証設定
セキュリティを提供するために、許可および取り消しメソッドはゲームサーバーによって呼び出されます。上記の方法では、基本的なアクセス認証を実装する必要があります。
ユーザーのインベントリを取得してアイテムを消費するメソッドは、SDKまたはAPIを介してゲームクライアントによって呼び出されます。次は可能な認証オプション:
- エクソラログインが接続された場合、エクソラログインJWTを利用してリクエストを認証します。
- 独自の識別システムをセットアップしている場合は、決済ステーションアクセストークンを使用してリクエストを認証します。
user.id
をサーバーベースのアイテムの付与および取り消しメソッドに伝送します。決済ステーションアクセストークンに使用するuser.id
と同一である必要があります。エクソラログイン経由の認証
- 指示に従ってパブリッシャーアカウントプロジェクトをセットアップします。
- JSONウェブトークンまたはOAuth 2.0プロトコルを使用して、承認メソッドの呼び出しを実装します。
ユーザーデータがエクソラデータストレージに保存されている場合には、以下のメソッドの呼び出しを実装します:
ユーザーデータがPlayFabデータストレージに保存されている場合には、PlayFabレシピを使用します。
ユーザーデータが御社に保存されている場合には、カスタムストレージレシピを使用します。
決済ステーションアクセストークンを介した認証
認証フロー:
- お使いのアプリケーション(クライアント)は認証リクエストを御社のサーバーに送信します。
- サーバーはマーチャントIDとAPIキーをエクソラサーバーに送信し、access_tokenを要求します。
- エクソラサーバーは御社のサーバーにaccess_tokenを送信します。
- 御社のサーバーはaccess_tokenをクライアントに送信します。
返されたaccess_tokenは
基本アクセス認証のセットアップ
エクソラAPIインベントリからアイテムを付与および取り消すためのサーバーコマンドは、基本アクセス認証を使用します。APIへのすべてのリクエストにはAuthorization: Basic <your_authorization_basic_key>
ヘッダ、ここで、<your_authorization_basic_key>
は、Base64標準に従ってエンコードされたマーチャントID:APIキーペアです。
パブリッシャーアカウントに移動して、次のパラメータを見つけます:
- マーチャントIDは以下の場所で表示されます:
- プロジェクト設定 > ウェブフックセクション。
- 会社設定 > 会社セクション。
- パブリッシャーアカウントページのブラウザーアドレスバーのURL。URLは以下の形式があります:
https://publisher.xsolla.com/マーチャントID/パブリッシャーアカウントセクション
。
- APIキーは、作成時に一度だけパブリッシャーアカウントに表示され、お客様側で保存する必要があります。次のセクションで新しいキーを作成できます:
- 会社設定 > APIキー
- プロジェクト設定 > APIキー
APIキーの操作については、APIリファレンスを参照してください。
キーに関する推奨事項:
- 生成されたAPIキーは、お客様側で保存してください。APIキーは、パブリッシャーアカウントで作成時に一度だけ表示することができます。
- APIキーは秘密にしておいてください。APIキーは、お客様の個人アカウントとパブリッシャーアカウントのプロジェクトへのアクセスを提供します。
- APIキーはサーバーに保存する必要があり、決してバイナリやフロントエンドに保存してはいけません。
- http
- curl
- php
- C#
- python
- ruby
- java
- js
POST https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward
Headers:
Authorization: Basic <your_authorization_basic_key>
curl --request POST \
--url 'https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward' \
--header 'authorization: Basic <your_authorization_basic_key>'
<?php
$uri = 'https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward';
$auth = base64_encode('your_merchant_id:your_merchant_api_key');
$headers = [
'Authorization: Basic ' . $auth,
'Content-Type: application/json',
'Accept: application/json',
];
$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, []);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($request);
print_r($response);
var client = new RestClient("https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward");
var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "Basic <your_authorization_basic_key>");
IRestResponse response = client.Execute(request);
import http.client
conn = http.client.HTTPSConnection("api.xsolla.com")
headers = { 'authorization': "Basic <your_authorization_basic_key>" }
conn.request("POST", "https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
url = URI("https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["authorization"] = 'Basic <your_authorization_basic_key>'
response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward")
.post()
.addHeader("authorization", "Basic <your_authorization_basic_key>")
.build();
Response response = client.newCall(request).execute();
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key>");
xhr.send(data);
インベントリ管理メソッド
インベントリ管理メソッドには、次のメソッドが含まれます:
- サーバーメソッド:
- クライアントメソッド:
Grant items to users
Grant items to users APIメソッドを実装して、指定したアイテムをユーザーのインベントリに追加するか、仮想通貨を残高に追加します。
リクエスト:
- php
<?php
$uri = 'https://store.xsolla.com/api/v2/project/44056/inventory/reward';
$body = '
[
{
"user": {
"id": "0125760a-6810-11e9-84c0-42010aa80029"
},
"comment": "Quest completed",
"platform": "xsolla",
"items": [
{
"sku": "boots_1",
"quantity": 5
},
{
"sku": "crystal_pack_1",
"quantity": 3
}
]
},
{
"user": {
"id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14"
},
"comment": "Daily reward",
"platform": "xsolla",
"items": [
{
"sku": "helmet_1",
"quantity": 2
},
{
"sku": "minigun_1",
"quantity": 3
}
]
}
]';
$auth = base64_encode('44056:your_merchant_api_key');
$headers = [
'Authorization: Basic ' . $auth,
'Content-type: application/json'
];
$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($request);
レスポンス:
- php
{
"count": 2,
"operations": [
{
"user_id": "0125760a-6810-11e9-84c0-42010aa80029",
"platform": "xsolla",
"comment": "Quest completed",
"items": [
{
"sku": "boots_1",
"quantity": 5
},
{
"sku": "crystal_pack_1",
"quantity": 3
}
]
},
{
"user_id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14",
"platform": "xsolla",
"comment": "Daily reward",
"items": [
{
"sku": "helmet_1",
"quantity": 2
},
{
"sku": "minigun_1",
"quantity": 3
}
]
}
]
}
Revoke inventory items
Revoke inventory items APIメソッドを実装して、指定したアイテムをユーザーのインベントリから取り消すか、残高から仮想通貨を取り消します。
リクエスト:
- php
<?php
$uri = 'https://store.xsolla.com/api/v2/project/44056/inventory/revoke';
$body = '
[
{
"user": {
"id": "0125760a-6810-11e9-84c0-42010aa80029"
},
"comment": "Remove from inventory",
"items": [
{
"sku": "boots_1",
"quantity": 5
},
{
"sku": "crystal_pack_1",
"quantity": 3
}
]
},
{
"user": {
"id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14"
},
"comment": "Cheater",
"items": [
{
"sku": "helmet_1",
"quantity": 2
},
{
"sku": "minigun_1",
"quantity": 3
}
]
}
]';
$auth = base64_encode('44056:your_merchant_api_key');
$headers = [
'Authorization: Basic ' . $auth,
'Content-type: application/json'
];
$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($request);
print_r($response);
レスポンス:
- php
{
"count": 2,
"operations": [
{
"user_id": "0125760a-6810-11e9-84c0-42010aa80029",
"platform": "xsolla",
"comment": "Remove from inventory",
"items": [
{
"sku": "boots_1",
"quantity": 5
},
{
"sku": "crystal_pack_1",
"quantity": 3
}
]
},
{
"user_id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14",
"platform": "xsolla",
"comment": "Cheater",
"items": [
{
"sku": "helmet_1",
"quantity": 2
},
{
"sku": "minigun_1",
"quantity": 3
}
]
}
]
}
Grant items by purchase to users
Grant items by purchase to users APIメソッドを実装して、サードパーティプラットフォームで購入が行われたときにアイテムをユーザーのインベントリに追加します。
リクエスト:
- php
<?php
$uri = 'https://store.xsolla.com/api/v2/project/44056/inventory/purchase';
$body = '
[
{
"user": {
"id": "0125760a-6810-11e9-84c0-42010aa80029"
},
"comment": "Purchase in App Store",
"platform": "app_store_ios",
"purchase": {
"amount": "3.99",
"currency": "USD",
"external_purchase_id": "MS6TGW7023",
"external_purchase_date": "2020-01-25T05:00:00+05:00"
},
"items": [
{
"sku": "boots_1",
"quantity": 5
},
{
"sku": "crystal_pack_1",
"quantity": 3
}
]
},
{
"user": {
"id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14"
},
"comment": "Purchase in Google Play",
"platform": "google_play",
"purchase": {
"amount": "1.99",
"currency": "EUR",
"external_purchase_id": "GPA.3357-9348-5932-89841",
"external_purchase_date": "2020-02-14T05:00:00+05:00"
},
"items": [
{
"sku": "helmet_1",
"quantity": 2
},
{
"sku": "minigun_1",
"quantity": 3
}
]
}
]';
$auth = base64_encode('44056:your_merchant_api_key');
$headers = [
'Authorization: Basic ' . $auth,
'Content-type: application/json'
];
$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($request);
print_r($response);
レスポンス:
- php
{
"count": 2,
"operations": [
{
"user_id": "0125760a-6810-11e9-84c0-42010aa80029",
"platform": "app_store_ios",
"comment": "Purchase in App Store",
"items": [
{
"sku": "boots_1",
"quantity": 5
},
{
"sku": "crystal_pack_1",
"quantity": 3
}
],
"order_id": 4125,
"external_purchase_id": "MS6TGW7023",
"external_purchase_date": "2020-01-25T05:00:00+05:00",
"amount": "3.99",
"currency": "USD"
},
{
"user_id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14",
"platform": "google_play",
"comment": "Purchase in Google Play",
"items": [
{
"sku": "helmet_1",
"quantity": 2
},
{
"sku": "minigun_1",
"quantity": 3
}
],
"order_id": 4126,
"external_purchase_id": "GPA.3357-9348-5932-89841",
"external_purchase_date": "2020-02-14T05:00:00+05:00",
"amount": "1.99",
"currency": "EUR"
}
]
}
Get user’s inventory
Get user’s inventory APIメソッドを実装して、購入後にユーザーのインベントリに追加されたアイテムのリストを取得します。
リクエスト:
- js
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/user/inventory/items");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
レスポンス:
- js
{
"items": [
{
"description": "Conquer your foes with vindication using the Basic Blaster! ",
"image_url": "https://cdn.xsolla.net/img/misc/images/0c59a7698d4f66c1008b27ee752089b7.png",
"instance_id": null,
"long_description": "Conquer your foes with vindication using the Basic Blaster! Conquer your foes with vindication using the Basic Blaster! ",
"name": "Xsolla Basic Blaster 1",
"quantity": 22,
"sku": "gun_1",
"type": "virtual_good"
},
{
"description": "Protect your noggin' with style",
"image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
"instance_id": null,
"long_description": "merchant_virtual_items_virtual_item_long_description_159429",
"name": "Xsolla Helmet",
"quantity": 18,
"sku": "helmet_1",
"type": "virtual_good"
}
]
}
Get user’s virtual balance
Get user’s virtual balance APIメソッドを実装して、現在のユーザーの仮想通貨残高に関する情報を取得します。
リクエスト:
- js
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/user/virtual_currency_balance");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
レスポンス:
- js
{
"items": [
{
"amount": 683,
"description": "Main in-game currency",
"image_url": "https://cdn3.xsolla.com/img/misc/images/91df536af4616519f639664854c13d75.png",
"name": "Crystals",
"sku": "crystal",
"type": "virtual_currency"
},
{
"amount": 450,
"description": "Money for in-store purchases",
"image_url": "https://cdn3.xsolla.com/img/misc/images/fda67a3feedaa706b4e4ae05a9edd6ab.png",
"name": "Gold",
"sku": "gold",
"type": "virtual_currency"
}
]
}
Consume item
Consume item APIメソッドを実装して、ユーザーのインベントリからアイテムを消費します。
リクエスト:
- js
let data = JSON.stringify({
"sku": "gun_1",
"quantity": 1,
"instance_id": null
});
let xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://store.xsolla.com/api/v2/project/44056/user/inventory/item/consume");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
エラー一覧
ユーザーまたはユーザーのインベントリー管理エラー:
コード | 説明 | アクション |
---|---|---|
0401-5002 | ユーザーのインベントリにアイテムを追加するための間違ったデータ。 | item_idを指定する必要があり、instance_idまたはquantityにnull値が必要です。 |
0401-5003 | ユーザーIDが指定されていません。 | リクエスト内のユーザーIDの存在をチェックします。 |
0401-5004 | ユーザーのインベントリにアイテムがありません。 | アイテムがインベントリにあることを確認してください。インベントリステータスは、Get user's inventoryメソッドを介して確認されます。 |
0401-5006 | 購入するための十分な仮想通貨が見つかりません。 | - |
0401-5007 | 非消耗品を消費しようとしています。 | - |
0401-5008 | ユーザーが見つかりません。 | - |
0401-5009 | サードパーティプラットフォームの購入を許可するときに、purchaseがパスしませんでした。 | - |
アイテム管理エラー:
コード | 説明 | アクション |
---|---|---|
0401-4001 | 基準でアイテムが見つかりません。 | Get user's inventoryメソッドを呼び出して、アイテムのリストを確認します。 |
コード | 説明 | アクション |
---|---|---|
0401-1101 | サービスを利用できません(間違ったアドレス、接続の問題)。 | status.xsolla.comでシステムの状態をチェックします;エクソラ顧客サポートチームまたはアカウントマネージャーと連絡します。 |
0401-1102 | 不正なリクエストエントリデータ。 | API仕様をチェックします。 |
0401-1016 | リクエストエントパラメーターの1つのエンコードが間違っています。 | リクエストの内容をチェックします。 |
0401-1019 | メソッドはサポートされていません。 | リクエストをチェックします。サポートされているメソッドは応答にあります。 |
0401-1020 | 販売者のキーハッシュを使用する際の認証エラー。 | APIキーをチェックします。 |
この記事は役に立ちましたか?
このページを評価する
答えたくない
ご意見ありがとうございました!
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。