The following documentation was deprecated. Current version is available at developers.xsolla.com

仮想アイテム

仮想アイテムモジュールでは、現金または仮想通貨でゲームコンテンツを販売することができます。Xsollaでは、本格的なストアを開いてアイテムを販売することができます。サポートされる機能:

  • 現金と仮想通貨での価格、
  • ワンクリック購入、
  • コンテンツアクセスの管理。たとえば、一定のレベルに達したユーザーのみが特定のアイテムを利用できるようにすることができます。
  • ユーザーがアイテムを発注してお気に入りに追加できるマルチレベルカタログ。
  • アルファベット順または価格による、ユーザー定義の並べ替え。
  • 完全な、または簡潔な説明文。
  • 選択したアイテムと最近購入したアイテムの一覧。

統合ガイド

モジュールの統合:

  1. Xsolla パブリッシャ―アカウントに登録する。
  2. 新しいプロジェクトの作成
  3. モジュールの設定
  4. トークンの取得
  5. ストアインターフェースのオープンを設定する。
  6. ウェブフック処理の設定
  7. 支払処理をテストする。
  8. モジュールを起動し、契約書に署名する。

統合には次のパラメータが必要です。

  • マーチャントID - パブリッシャ―アカウント URL に表示されます:https://publisher.xsolla.com/{merchant_id}/
  • API キー - パブリッシャ―アカウント > 設定 > 会社で生成されます。
  • プロジェクト ID - プロジェクト設定を表示した場合に、パブリッシャ―アカウント URL に表示されます:https://publisher.xsolla.com/{merchant_id}/projects/{project_id}/.
  • プロジェクト秘密キー - プロジェクト設定で生成されます。

プロジェクトの作成

  1. プロジェクトに移動し、新規プロジェクトの作成をクリックします
  2. 設定モードで:
    a.ウェブフック URL を指定する。
    b.プロジェクトウェブフックに署名するための秘密キーを生成する。
    c.仮想アイテムモジュールを有効にする。

モジュールの設定

  1. これを行うには、仮想アイテムモジュールの設定に行き、アイテムのグループの作成をクリックします。グループの設定: カタログ内の場所(既定ではルートフォルダー)。 コード。 名前と説明文。 グループをストアに表示する場合は、ストアで表示を確認する。
  2. 作成をクリック。
  3. 基本モジュールの設定に戻り、必要に応じてカタログに他のグループを作成するには、アイテムリストをクリックする。
  4. アイテムの作成をクリックし、次のパラメータを設定する: アイテムが属するべき1つ以上のグループ。グループが選択されていない場合、アイテムはストアに表示されません。 SKU - 固有識別子。 名前と短い説明文。 現金通貨での価格。 *画像。
  5. 作成をクリック。
  6. 基本モジュール設定に戻り、必要に応じて他の項目を作成するには、アイテムリストをクリックする。

ストアインターフェースのトークンの取得

ストアと統合するには、トークンを取得する必要があります。 トークンは、ゲームやユーザーデータと支払設定を含む文字列です。 Xsolla APIは、基本的なHTTP認証を使用します。マーチャントIDをユーザー名、APIキーをパスワードとして指定します。

サンドボックスモードを有効にするには、 "mode" = "sandbox"に設定します。

トークンの取得はこの URL から:

https://api.xsolla.com/merchant/merchants/{merchant_id}/token

決済インターフェースに引き渡すパラメータを含めることによって、HTTP POSTリクエストを変更することができます。リクエストとレスポンスは両方ともJSON形式です。

PHPとXsolla PHP SDKを使用してトークンを取得する例を示します。別の言語を使用する場合は、CURLベースの例(CURLをクリック)をご参照ください。

PHP
CURL
<?php

use Xsolla\SDK\API\XsollaClient;
use Xsolla\SDK\API\PaymentUI\TokenRequest;

$tokenRequest = new TokenRequest($projectId, $userId);
$tokenRequest->setUserEmail('email@example.com')
    ->setExternalPaymentId('12345')
    ->setSandboxMode(true)
    ->setUserName('USER_NAME')
    ->setCustomParameters(array('key1' => 'value1', 'key2' => 'value2'));

$xsollaClient = XsollaClient::factory(array(
    'merchant_id' => MERCHANT_ID,
    'api_key' => API_KEY
));
$token = $xsollaClient->createPaymentUITokenFromRequest($tokenRequest);
    curl -v https://api.xsolla.com/merchant/merchants/{merchant_id}/token \
    -X POST \
    -u your_merchant_id:merchant_api_key \
    -H 'Content-Type:application/json' \
    -H 'Accept: application/json' \
    -d '
    {
        "user":{
            "id":{
                "value":"1234567"
            },
            "email":{
                "value":"email@example.com"
            }
        },
        "settings":{
            "project_id":14004,
            "mode":"sandbox"
        }
    }'

パラメータの完全なリストはAPI リファレンスでご参照ください。

ストアUIを開く

ストアの開き方:

  • Pay Station埋め込みクリプト、
  • 新しいウィンドウ、または
  • iframeを使用してください。

サンドボックスモードでストアを開くには、次のURLを使用してください:https://sandbox-secure.xsolla.com/

Pay Station 埋め込み

Pay Station埋め込みスクリプトはデバイスの種類を判断し、ライトボックス(デスクトップ画面)または新しいウィンドウ(モバイル画面とタブレット画面)でストアインターフェースを開きます。非同期スクリプトの読み込みを使用することをお勧めします。

非同期ロードの例

 <script>
     var options = {
         access_token:'ACCESS_TOKEN'// TODO 前のステップで受信したアクセストークンを使用する
         andbox:true // TODO 稼働時にこの設定を削除することを忘れないでください
     };
     var s = document.createElement('script');
     s.type = "text/javascript";
     s.async = true;
     s.src = "https://static.xsolla.com/embed/paystation/1.0.7/widget.min.js";
     s.addEventListener('load', function (e) {
         XPayStationWidget.init(options);
     }, false);
     var head = document.getElementsByTagName('head')[0];
     head.appendChild(s);
 </script>

<button data-xpaystation-widget-open>クレジットの購入</button>

パラメータの完全なリストはAPI リファレンスで参照できます。

新しいウィンドウ

新しいウィンドウで決済インターフェース開くには、次のリンクを使用してください:https://secure.xsolla.com/paystation2/?access_token=ACCESS_TOKENACCESS_TOKEN前のステップで取得したトークンです。

Iframe

iframeでストアのインターフェースを開くには、次のメカニズムを実装する必要があります。

  • デバイスタイプ(デスクトップまたはモバイル)を指定し、トークンのsettings.ui.versionパラメータ内で送信します;
  • postMessage経由で決済インターフェースからイベントを受け取ります。

新しいウィンドウで決済インターフェース開くには、次のリンクを使用してください:https://secure.xsolla.com/paystation2/?access_token=ACCESS_TOKENACCESS_TOKEN前のステップで取得したトークンです。

ウェブフックの設定

Xsolla は以下のウェブフックをプロジェクトに送信します:

  • ユーザー認証
  • 決済
  • 返金

メッセージ本体なしでHTTPコード204で応答することによってウェブフックの受信を確認します。ウェブフック処理の詳細と例については、APIリファレンスをご参照ください。

署名の作成

電子署名の作成:

  1. Xsolla サーバーのリクエストで送信されたデータとプロジェクトの秘密キー(プロジェクト設定で生成されたもの)を連結します。
  2. SHA1 アルゴリズムを使用してストリングをハッシュ化。
  3. 署名ヘッダーに署名を送信。

ウェブフックを取り扱う際、受信した署名が署名ヘッダーに設定されたものと一致することを確認します。

ユーザー認証

Xsolla サーバーはプロジェクトのウェブフック URL にリクエストを送信して、ユーザーがゲーム内に存在することを確認します。

リクエストの例

PHP
CURL
$request = array(
    'notification_type' => 'user_validation',
    'user' => array(
        'ip' => '127.0.0.1',
        'phone' => '18777976552',
        'email'=> 'email@example.com',
        'id'=> '1234567',
        'country' => 'US'
    )
)
curl -v https://example.com/ \
-X POST \
-H 'Content-Type:application/json' \
-H 'Accept: application/json' \
-H 'Authorization:Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \
-d '
{
    "notification_type":"user_validation",
    "user":{
        "ip":"127.0.0.1",
        "phone":"18777976552",
        "email":"email@example.com",
        "id":"1234567",
        "country":"US"
    }
}'

パラメータの完全なリストはAPI リファレンスで参照できます。

決済

Xsolla サーバーは、ユーザーが支払いを完了するたびに、支払いの詳細情報を含むウェブフックを送信します。

リクエストの例

PHP
CURL
$request = array(
    'notification_type' => 'payment',
    'purchase' => array(
        'virtual_items' => array(
            'items' => array(
                0 => array(
                    'sku' => 'test_item1',
                    'amount' => 1,
                    ),
                1 => array(
                    'sku' => 'test_item2',
                    'amount' => 1,
                    ),
                2 => array(
                    'sku' => 'test_item3',
                    'amount' => 1,
                    ),
            )
        ),
        'total' => array(
            'currency' => 'USD',
            'amount' => 9.99
        )
    ),
    'user' => array(
        'ip' => '127.0.0.1',
        'phone' => '18777976552',
        'email' => 'email@example.com',
        'id' => '1234567',
        'country' => 'US'
    ),
    'transaction' => array(
        'id' => 87654321,
        'payment_date' => '2014-09-23T19:25:25+04:00',
        'payment_method' => 1380,
        'dry_run' => 1
    ),
    'payment_details' => array(
        'payment' => array(
            'currency' => 'USD',
            'amount' => 9.99
        ),
        'vat' => array(
            'currency' => 'USD',
            'amount' => 0
        ),
        'payout_currency_rate' => 1,
        'payout' => array(
            'currency' => 'USD',
            'amount' => 9.49
        ),
        'xsolla_fee' => array(
            'currency' => 'USD',
            'amount' => 0.19
        ),
        'payment_method_fee' => array(
            'currency' => 'USD',
            'amount' => 0.31
        )
    )
)
curl -v https://example.com/ \
-X POST \
-H 'Content-Type:application/json' \
-H 'Accept: application/json' \
-H 'Authorization:Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \
-d '
{
    "notification_type": "payment",
    "purchase":{
        "virtual_items":{
            "items": [
                {
                    "sku": "test_item1",
                    "amount": 1
                },
                {
                    "sku": "test_item2",
                    "amount": 1
                },
                {
                    "sku": "test_item3",
                    "amount": 2
                },
            ]
        },
        "total":{
            "currency": "USD",
            "amount": 9.99
        }
    },
    "user":{
        "ip":"127.0.0.1",
        "phone":"18777976552",
        "email":"email@example.com",
        "id":"1234567",
        "country":"US"
    },
    "transaction":{
        "id": 87654321,
        "payment_date": "2014-09-23T19:25:25+04:00",
        "payment_method": 1380,
        "dry_run": 1
    },
    "payment_details":{
        "payment":{
            "currency": "USD",
            "amount": 9.99
        },
        "vat":{
            "currency": "USD",
            "amount": 0
        },
        "payout_currency_rate": 1,
        "payout":{
            "currency": "USD",
            "amount": 9.49
        },
        "xsolla_fee":{
            "currency": "USD",
            "amount": 0.19
        },
        "payment_method_fee":{
            "currency": "USD",
            "amount": 0.31
        }
    }
}'

パラメータの完全なリストは、API リファレンスで参照してください。

返金

Xsolla サーバーは、ユーザーが支払いをキャンセルするたびに、支払いの詳細情報を含むウェブフックを送信します。

リクエストの例

PHP
CURL
$request = array(
    'notification_type' => 'refund',
    'purchase' => array(
        'virtual_currency' => array(
            'name' => 'Coins',
            'quantity' => 100,
            'currency' => 'USD',
            'amount' => 9.99
        ),
        'total' => array(
            'currency' => 'USD',
            'amount' => 9.99
        )
    ),
    'user' => array(
        'ip' => '127.0.0.1',
        'phone' => '18777976552',
        'email' => 'email@example.com',
        'id' => '1234567',
        'country' => 'US'
    ),
    'transaction' => array(
        'id' => 87654321,
        'payment_date' => '2014-09-23T19:25:25+04:00',
        'payment_method' => 1380,
        'dry_run' => 1
    ),
    'refund_details' => (
            'code' => 1,
            'reason' => 'Fraud'
    ),
    'payment_details' => array(
        'payment' => array(
            'currency' => 'USD',
            'amount' => 9.99
        ),
        'vat' => array(
            'currency' => 'USD',
            'amount' => 0
        ),
        'payout_currency_rate' => 1,
        'payout' => array(
            'currency' => 'USD',
            'amount' => 9.49
        ),
        'xsolla_fee' => array(
            'currency' => 'USD',
            'amount' => 0.19
        ),
        'payment_method_fee' => array(
            'currency' => 'USD',
            'amount' => 0.31
        )
    )
);
curl -v https://example.com/ \
-X POST \
-H 'Content-Type:application/json' \
-H 'Accept: application/json' \
-H 'Authorization:Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \
-d '
{
    "notification_type":"refund",
    "purchase":{
        "virtual_currency":{
            "name": "Coins",
            "quantity":10,
            "currency":"USD",
            "amount":100
        },
        "subscription":{
            "plan_id": "b5dac9c8",
            "subscription_id": "10",
            "date_create": "2014-09-22T19:25:25+04:00",
            "currency": "USD",
            "amount": 9.99
        },
        "checkout":{
            "currency":"USD",
            "amount":50
        },
        "virtual_items":{
            "items":[
                {
                    "sku": "test_item1",
                    "amount":1
                }
            ],
            "currency":"USD",
            "amount":50
        },
        "total":{
            "currency":"USD",
            "amount":200
        }
    },
    "user":{
        "ip":"127.0.0.1",
        "phone":"18777976552",
        "email":"email@example.com",
        "id":"1234567",
        "name": "Xsolla User",
        "country":"US"
    },
    "transaction":{
        "id":1,
        "external_id":1,
        "dry_run":1,
        "agreement":1
    },
    "refund_details":{
        "code":1,
        "reason":"Fraud"
    },
    "payment_details":{
        "xsolla_fee":{
            "currency":"USD",
            "amount":"10"
        },
        "payout":{
            "currency":"USD",
            "amount":"200"
        },
        "payment_method_fee":{
            "currency":"USD",
            "amount":"20"
        },
        "payment":{
            "currency":"USD",
           "amount":"230"
        }
    }
}'

パラメータの完全な一覧は、API リファレンスをご参照ください。

ウェブフックのテスト

ウェブフックハンドラーのテスト:

  1. モジュールの設定をパブリッシャ―アカウントで開きます。
  2. テスト タブに移動します。
  3. テストデータを入力してテストをクリック。Xsolla サーバーは送信可能なウェブフックをすべて送信。
  4. 有効なリクエストの場合にはテストには緑の印が付き、エラーの場合には赤の印が付く。

支払処理のテスト

Xsolla サンドボックスは独立した環境で、実際の決済を除くライブ環境のすべての機能をサポートします。サンドボックスにアクセスするには、トークンを取得する際に"mode" ="sandbox"を送信します。

銀行カードでの決済のテスト:

  1. サンドボックスモードでストアを開く。
  2. 購入するアイテムを選択。
  3. クレジットカード/デビットカードをクリック。
  4. 下記の表から銀行カードの詳細を入力。その他のフィールドに任意の値を入力。正しくない情報(カード番号、有効期限、CVV等)を入力して、エラーを生成することもできます。

テスト用の銀行カードの一覧

重要! サンドボックスの銀行カード決済はUSD、EUR、RUB、GBPでのみ実行可能です。

モジュールの起動

テスト成功後にモジュールを起動するには、アカウントで設定を開き、起動タブに移動してオンをクリックします。

重要! 支払いを受け取る前に、以下を行ってください:

  1. "sandbox"モードを削除する。
  2. 契約に署名します。

ゲーム内のパラメータを使用する詐欺行為の防止方法

トークンで渡されたcustom_parametersオブジェクトを使用して、ユーザーのゲーム内データを送信し、疑わしいアクティビティを検出することができます。例えば、ゲームに少ししか時間を費やしていないのに高レベルに達しているプレイヤーは、盗まれた銀行カードを使用してキャラクターをレベルアップした後にそれを販売するためにアカウントを作成した詐欺師という可能性があります。

利用可能なパラメータの一覧

アカウントマネージャーに、渡す予定のパラメータと、それぞれのパラメータのトリガー値を知らせてください。この情報を使用して不正防止フィルタを設定します。

選択したメソッドを使用して支払う

ストアを開くと、settings.payment_methodパラメータで支払方法IDを送信することができます。この場合、ユーザーは直ちに、選択した支払方法の支払フォームにリダイレクトされます。

リクエストの例

CURL
    curl -v https://api.xsolla.com/merchant/merchants/{merchant_id}/token \
    -X POST \
    -u your_merchant_id:merchant_api_key \
    -H 'Content-Type:application/json' \
    -H 'Accept: application/json' \
    -d '
    {
        "user":{
            "id":{
                "value":"1234567"
            },
        },
        "settings":{
            "project_id":14004,
            "payment_method": 24
        }
    }'

決済方法IDの一覧は、パブリッシャーアカウント> 決済システムまたは決済システムの一覧表示APIメソッドを使用して取得できます。

特定のアイテムの販売

ストアを開くと、purchase.virtual_items.items.skuパラメータに仮想アイテムIDを送信できます。この場合、ユーザーはすぐに決済インターフェースにリダイレクトされます。

リクエストの例

CURL
    curl -v https://api.xsolla.com/merchant/merchants/{merchant_id}/token \
    -X POST \
    -u your_merchant_id:merchant_api_key \
    -H 'Content-Type:application/json' \
    -H 'Accept: application/json' \
    -d '
    {
        "user":{
            "id":{
                "value":"1234567"
            },
        },
        "settings":{
            "project_id": 14004
        },
        "purchase":{
            "virtual_items":{
                "items":{
                  "sku": "item"
                },
          },
      }
    }'

ゲーム内通貨の仮想商品の販売

仮想通貨モジュールを有効にしている場合は、プロジェクトのゲーム内通貨の仮想商品を販売することができます。アイテムの価格を設定するには、アイテム設定を開き、仮想通貨での価格フィールドで編集してください。

ユーザー属性によるカタログの作成

ユーザー属性は、ストア内のアイテムをフィルタリングする役割を果たします。アイテムカタログは、リアルタイムで構築され、特定のグループのプレイヤーにのみ表示されます。渡されたユーザー属性に応じて、アイテムの表示およびアクセスを調整できます。

属性リストの作成

  1. モジュールの設定で、ルールに移動し、新しい属性の作成をクリックします。
  2. 以下を入力してください: 名前。 キー。 *キーの種類。
  3. 作成をクリック。

ルールの作成

  1. 仮想アイテムの設定をクリックする。
  2. 作成をクリックする。
  3. 以下を入力してください: 名前。 条件。 アクション。 ルールが適用されるアイテム。
  4. 作成をクリック。

属性の設定後、user.attributesトークンのパラメータを使用して、フィルタリングで使用するユーザー属性を指定してください。

リクエストの例

CURL
    curl -v https://api.xsolla.com/merchant/merchants/{merchant_id}/token \
    -X POST \
    -u your_merchant_id:merchant_api_key \
    -H 'Content-Type:application/json' \
    -H 'Accept: application/json' \
    -d '
    {
        "user":{
            "id":{
                "value":"1234567"
            },
            "attributes":{
                "attribute1": "level80",
                "attribute2": "assassin"
            },
        },
        "settings":{
            "project_id": 14004
        }
    }'