ゲームキーの販売をセットアップする

ゲームキーは、ダイレクトリンクストアUIウィジェット経由で販売することができます。

アイテム販売方法
ゲームのコピー1つ(ゲームキー)。ダイレクトリンクウィジェット、またはストアインターフェイス。ストアインターフェースで販売する場合は、カートを作成せずにクイック購入の方法をご利用ください。
ゲームのコピー(ゲームキー)が数本、またはカートにゲームが数本入っています。ストアインターフェースサイトビルダーを使用するか、Shop Builder APIを統合してください。

認証済みのユーザーと認証されていないユーザーにゲームキーを販売できます。

認証により次のことが可能になります:

ログイン製品または独自の認証システムを使用してユーザーを認証できます。詳細な設定情報は、この説明に記載されています。

お知らせ
ユーザーはキーを返金することができます。返金が成功した後、エクソーラメールで影響を受けるキーのリストが届きます。サードパーティのプラットフォーム上では、これらのキーへのアクセスをブロックすることをお勧めします。
お知らせ

ゲームへのアクセスは、ゲームキーの購入後、自動的に許可されます。ただし、ゲームプラットフォームが独自のアクティベーションキールールを設定している場合があります。

カタログ内のゲームキーパッケージの表示時間を、季節限定のセール中などに制限することができます。これを行うには、対応するAPIコールのperiodsオブジェクトにISO 8601ごとに利用可能期間の開始日と終了日を渡します:

ユーザーが購入できるゲームキーの数を制限するには、説明に従ってください。

以下のリンクは決済UIを開きます:

Copy
Full screen
Small screen
1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}
お知らせ

ゲームキーの購入は、エクソーラとライセンス契約を締結した後、直接リンクして実際の通貨で購入することが可能です。これを行うには、アドミンページでの「契約&納税 > 契約」セクションに移動し、契約書フォームに記入し、確認を待ちます。契約書の確認には、最大で3営業日かかる場合があります。

決済をテストするには、リンクにmode=sandboxパラメータを追加して、テスト環境を使用することができます。

このリンクに次のデータを追加します:

  • YOUR-ITEM-TYPE — アイテムの種類:
    • game — ゲーム;game_key — 特定のプラットフォームのゲーム。
    • bundle — バンドル。
  • YOUR-PROJECT-IDアドミンページプロジェクト設定 > 一般設定 > ロジェクトIDセクションからのプロジェクトのID。
  • YOUR-ITEM-SKU — ゲームキーパッケージSKU。特定のプラットフォームでゲームを販売するには、ゲームリストを取得する(通常このSKUはunit_name_drm_skuのようなこと)を使ってSKUを取得します。

  • 決済UIスタイル:テーマ(ダークまたはデフォルトのライトテーマ)、サイズ、およびその他のパラメータ。URLでui_settingsパラメーターを指定し、値としてBase64エンコードを持つsettings.uiJSON-objectを渡します。UI設定を含むURLの例:
Copy
Full screen
Small screen
1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}&ui_settings=ewoJCQkic2l6ZSI6ICJzbWFsbCIsCgkJCSJ0aGVtZSI6ICJkYXJrIgoJCX0=
  • ユーザーデータを受け渡すためのトークン。認証されたユーザーのみにゲームキーを販売する際に使用します。このトークンは認証メソッドに依存します。トークンを含むURLの例:
Copy
Full screen
Small screen
1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR_ITEM_SKU}&xsolla_login_token={ACCESS_TOKEN}
  • 決済テストのmode=sandboxパラメータ。テスト銀行カードを使用して、決済を完了することができます。
お知らせ
決済を行う際、エクソーラサーバーはウェブフックURLにリクエストを送信し、ユーザーがゲーム内に存在することを確認します。決済テスト時にエラーが発生しないように、アドミンページ > プロジェクト設定 > ウェブフックでスイッチをオフにしてください。ウェブフックを使用する場合は、ユーザー検証ウェブフックの正常な処理を実装してください。
  1. テスト用URLの例:
Copy
Full screen
Small screen
1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}&mode=sandbox

ストアUI経由の販売

ゲームキーの販売は、ストアのインターフェイスから行うことができます。ストアを作成するには:

ゲームキーパッケージを販売するには、Shop Builder APIを使用します:

  1. カタログを表示するには、ゲームリストを取得するメソッドを使用します。
  2. ゲームキーの購入を実装します:

メソッドが正しく機能するように、適切な認証オプションを選択してください。
お知らせ
Shop Builder APIを通じてゲームを販売する場合、プレーヤーがクライアントで特定のプラットフォームを選択できるようにする機能を実装する必要があります。SKUを取得するには、ゲームのリストを取得するリクエストからitems.unit_items.skuパラメータの値を渡します。

ウィジェット経由の販売

ページにウィジェットを追加してゲームキーを販売し、カスタマイズすることができます。ウィジェットコードをコピーするには、パブリッシャーアカウントでキーパッケージを作成した後、「ウィジェットカスタマイズ」セクションに移動します。

ゲームが単一のプラットフォームで販売されている場合、ウィジェットにはそのプラットフォームに固有のゲーム価格が表示されます。

例:今なら$10でご購入いただけます。

ゲームが複数のプラットフォームで販売されている場合、ウィジェットにはプラットフォーム間の最低価格が表示されます。

例:$10からご購入いただけます。

注文作成ウィンドウでは、ユーザーはすべてのプラットフォームの価格を確認して選択できます。

drmパラメータでプラットフォームSKUを指定することで、ウィジェットに特定のプラットフォームの価格を表示することもできます。

ウィジェットコード例:

Copy
Full screen
Small screen
     1<div id="xsolla-buy-button-widget"></div>
     2      <script>
     3          var options = {
     4              project_id: "101010",
     5              sku: "my_key",
     6              user: {
     7                  auth: "9qs9VyCIQQXBlzJQcfETIKWZDvhi4Sz1"
     8              },
     9              drm: "steam",
    10              item_type: "unit",
    11              api_settings: {
    12                  sandbox: true,
    13              },
    14              widget_ui: {
    15                  target_element: "#xsolla-buy-button-widget",
    16                  theme: {
    17                      foreground: "green",
    18                      background: "light"
    19                  },
    20              },
    21
    22             payment_widget_ui: {
    23                  lightbox: {
    24                      height: '700px',
    25                      spinner: 'round'
    26                  }
    27            }
    28          };
    29          var s = document.createElement('script');
    30          s.type = "text/javascript";
    31          s.async = true;
    32          s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.8/widget.min.js";
    33          s.addEventListener('load', function (e) {
    34              var widgetInstance = XBuyButtonWidget.create(options);
    35          }, false);
    36          var head = document.getElementsByTagName('head')[0];
    37          head.appendChild(s);
    38      </script>
    39      <style>
    40          #xsolla-buy-button-widget {
    41
    42          /* place code for button positioning here */
    43            margin: 10px  
    44          }
    45
    46          /* Styles the button itself */
    47          .x-buy-button-widget.x-buy-button-widget__tiny
    48            .x-buy-button-widget-payment-button {
    49            background-color: #ff005b;
    50            color: black;
    51          }     
    52      </style>
    
    お知らせ
    ウィジェットパラメータ

    パラメータ種類説明文
    project_id
    integerゲームキーまたはゲームキー付きバンドル、ゲーム内アイテムまたはアイテム付きバンドルがアップロードされるプロジェクトのID。
    item_type
    stringアイテムタイプ。virtual_goodvirtual_currencygame_keyunitの値を取ることができます。unitタイプは、ゲームを配信するプラットフォームが複数ある場合に使用されます。
    sku
    string固有アイテムID。
    drm
    string配信プラットフォームSKU(steamなど)。特定のプラットフォームの価格を表示できます。
    api_settings
    object環境とホストの構成設定:
    • host — リクエストを実行するためのホスト。デフォルト値は — store.xsolla.com
    • api_host — APIリクエストを実行するためのホスト。デフォルト値は — store.xsolla.com/api
    • sandboxtrueの値を設定し、決済プロセスをテストします。sandbox-secure.xsolla.comは、支払いの処理にsecure.xsolla.comの代わりに使用されます(決済プロセスのテストを参照してください)
    user
    objectユーザーデータを持つオブジェクト。
    user.auth
    stringユーザー認証トークン:JSONウェブトークンまたはペイステーションアクセストークン
    user.locale
    stringユーザーのロケール。ボタンのテキストと決済インターフェイスの言語を決定します。ISO_639-1に基づいた2文字の言語コードが使用されます。
    widget_ui.theme
    objectウィジェットの外観を決定するカラーテーマ。{foreground:[‘blue’,‘red’,‘green’,‘gold’], background:[’light’,‘dark’]}の値を取ることができます。
    widget_ui.template
    stringテンプレート。可能な値:
    • standard(デフォルト) — ゲーム画像、タイトル、スタイライズされたボタンが含まれます
    • simple — スタイルが適用されていないボタンだけが表示されます
    widget_ui.target_element
    stringウィジェットがレンダリングされるべきページの要素(jQueryセレクタが使用されるべきである。例えば、#widget-example)。必須

    決済インターフェイスの外観を決定するパラメータ

    パラメータ種類説明文
    payment_ui
    object決済インターフェースの外観パラメータ。
    payment_widget_ui
    object決済インターフェースの外観を決定するパラメータを持つオブジェクト。
    payment_widget_ui.lightbox
    object決済インターフェイスが開かれるモーダルウィンドウのオプションを持つオブジェクト。
    payment_widget_ui.lightbox.width
    stringライトボックスのフレームの高さ。nullの場合、ペイステーションの高さに依存します。既定はnullです。
    payment_widget_ui.lightbox.height
    stringライトボックスのフレームの高さ。nullの場合、ペイステーションの高さに依存します。既定は100%です。
    payment_widget_ui.lightbox.zIndex
    integer配置順序を定義します。既定は1000です。
    payment_widget_ui.lightbox.overlayOpacity
    integerウィジェットの背景の不透明度(0 — 完全透明、1 — 完全不透明)。デフォルト値は60%です(.6)。
    payment_widget_ui.lightbox.overlayBackground
    stringオーバーレイの背景色。既定は#000000
    payment_widget_ui.lightbox.contentBackground
    stringフレームの背景色。デフォルトは#ffffff。これらの色の変更は、ペイステーションiframe自体には影響を与えず、それを保持するライトボックスの設定のみに影響を与えることに注意してください。
    payment_widget_ui.lightbox.spinner
    stringローディングアニメーションのインジケータの種類。xsollaまたはroundに指定できます。既定はxsollaです。
    payment_widget_ui.lightbox.spinnerColor
    stringスピナーの色。既定値はありません。
    payment_widget_ui.childWindow
    object決済インターフェイスが開かれる子ウィンドウの設定。モバイル版で動作します。
    payment_widget_ui.childWindow.target
    string子ウィンドウを開く場所を決定する属性。_blank_self_parentの値を取ることができます。デフォルト値は — _blank

    ウィジェットメソッド

    • var widgetInstance = XBuyButtonWidget.create(options) — ウィジェットインスタンスを作成し、ページ上にレンダリングします。
    • widgetInstance.on(event, handler) — イベントのイベントハンドラー関数をウィジェットにアタッチします。
      • event (string) — イベントタイプ。
      • handler (function) — イベントがトリガーされたときに実行する関数。
    • widgetInstance.off(event, handler) — イベントハンドラーを削除します。
      • event (string) — イベントタイプ。
      • handler (function) — イベントに以前にアタッチされたハンドラー関数。

    イベントの一覧:

    パラメータ説明文
    initウィジェットが初期化されました。
    openウィジェットが開かれました。
    load決済インターフェース(ペイステーション)が読み込まれました。
    close決済インターフェース(ペイステーション)が閉じられています。
    statusユーザーはステータスページにいます。
    status-invoiceユーザーはステータスページにいます。支払いが進行中です。
    status-deliveringユーザーはステータスページにいます。支払いが完了しました。支払い通知が送信されました。
    status-doneユーザーはステータスページにいます。支払いはユーザーのアカウントに振り込まれます。
    status-troubledユーザーはステータスページにいます。支払いに失敗しました。

    XBuyButtonWidget.eventTypesオブジェクトを使用してイベントのリストにアクセスできます。

    ボタンカスタマイズ

    1. パブリッシャーアカウントであなたのプロジェクトを開きます。
    2. サイドメニューで「、ストア」をクリックします。
    3. ゲームキー」ペインで、「構成する」をクリックします。
    4. ゲームキーを選択し、「ウィジェットカスタマイズ」タブに移動します。
    お知らせ
    ゲームキーがない場合は、新規に作成してください
    1. カスタマイズ」ブロックで、背景色を選択します。
    お知らせ
    また、コード内でthemeオブジェクトを修正し、パラメータbackgroundに空文字列を値として持たせることもできます。
    1. ウィジェットコードをページに追加すると、ウィジェットには継承されたスタイルが含まれます。これらのスタイルを上書きするために、以下のスタイルを追加してください。
    注意
    CSSの継承/優先順位の理由から、ウィジェットカスタマイズタブで取得したscriptタグの下にstyleタグでこれらを追加しました。
    Copy
    Full screen
    Small screen
     1/* This should be used for button positioning but note this technically repositions the entire widget */
     2#xsolla-buy-button-widget {
     3  /* place code for button positioning here */
     4}
     5
     6/* Styles the button itself */
     7.x-buy-button-widget.x-buy-button-widget__tiny
     8  .x-buy-button-widget-payment-button {
     9  background-color: #ff005b;
    10  color: black;
    11}
    12
    13/* Button on hover */
    14.x-buy-button-widget.x-buy-button-widget__tiny
    15  .x-buy-button-widget-payment-button:hover {
    16  background-color: #ff005b;
    17}
    18
    19/* The following are style overrides to leave you with just the button */
    20
    21/* space immediately surrounding button */
    22.x-buy-button-widget-button-block.x-buy-button-widget-button-block__light {
    23  background-color: white;
    24}
    25
    26/* space above button (including game title area) */
    27.x-buy-button-widget.x-buy-button-widget__tiny
    28  .x-buy-button-widget-game-logo {
    29  height: 200px;
    30  background-image: none !important;
    31  background-color: white;
    32}
    33
    34 /* Game title (located right above button) */
    35.x-buy-button-widget-game-name.x-buy-button-widget-game-name__light {
    36  display: none !important;
    37}
    
    注意
    • 上記のid/class名とコードスニペットは、コピーしたウィジェットのコード(ステップ5の画像)と組み合わせて使用します。このため、コピーしたウィジェットコードを実装することが重要です。
    • 上記のコードをそのまま使用することもできますし、シナリオに応じてコードを変更することもできます。コードコメント(1、3、5、11、16、18、22、29行目)は、各CSSルールが何を対象としているかを判断し、今後のスタイリングに役立てるためのものです。例えば、ボタンだけ(ウィジェット全体ではなく)欲しい場合は、以下のwhiteの場所-20行目と27行目で、ページの背景色を代入する必要があります。

    複数のボタンやSKUを作成する方法

    Pay2Playウィジェットを使用してこれを実現する方法のコード例については、Xsolla Pay2Playウィジェットシンプルな統合4つのボタンを参照してください。

    ゲームキーの直接販売ウィジェットのコードと同様の構造です。移行の例:

    Copy
    Full screen
    Small screen
     1<div id="xsolla-buy-button-widget"></div>
     2<div id="xsolla-buy-button-widget-2"></div>
     3    <script>
     4      var options = {
     5        project_id: "191204",
     6        sku: "789",
     7        item_type: "unit",
     8        api_settings: {
     9          sandbox: false,
    10        },
    11        widget_ui: {
    12          target_element: "#xsolla-buy-button-widget",
    13          theme: {
    14            foreground: "gold",
    15            background: "",
    16          },
    17        },
    18        payment_widget_ui: {
    19          lightbox: {
    20            height: "700px",
    21            spinner: "round",
    22          },
    23        },
    24      };
    25      // options for second buy button - note the different SKU and target_element
    26      var options2 = {
    27        project_id: "191204",
    28        sku: "123",
    29        item_type: "unit",
    30        api_settings: {
    31          sandbox: false,
    32        },
    33        widget_ui: {
    34          target_element: "#xsolla-buy-button-widget-2",
    35          theme: {
    36            foreground: "gold",
    37            background: "",
    38          },
    39        },
    40        payment_widget_ui: {
    41          lightbox: {
    42            height: "700px",
    43            spinner: "round",
    44          },
    45        },
    46      };
    47      var s = document.createElement("script");
    48      s.type = "text/javascript";
    49      s.async = true;
    50      s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.4/widget.min.js";
    51
    52// one event listener per widget instance. repeat for more buttons, passing in different SKUs
    53      s.addEventListener(
    54        "load",
    55        function (e) {
    56          var widgetInstance = XBuyButtonWidget.create(options);
    57        },
    58        false
    59      );
    60      s.addEventListener(
    61        "load",
    62        function (e) {
    63          var widgetInstance2 = XBuyButtonWidget.create(options2);
    64        },
    65        false
    66      );
    67      var head = document.getElementsByTagName("head")[0];
    68      head.appendChild(s);
    69    </script>
    
    注意
    • 1行目と2行目 — ボタンごとに1つのdivがあり、それぞれに一意のIDがあります。
    • 26行目から始まるのは、2番目のボタンのオプションです(options2オブジェクトにレイアウトされます)。各購入ボタンには、上記のようなoptionsのセットが必要です。sku28行目)とtarget_element(34行目、2行目のdivを対象)が異なることに注意してください。
    この記事は役に立ちましたか?
    ありがとうございます!
    改善できることはありますか? メッセージ
    申し訳ありません
    この記事が参考にならなかった理由を説明してください。 メッセージ
    ご意見ありがとうございました!
    あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
    最終更新日: 2025年4月25日

    誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。

    問題を報告する
    当社は常にコンテンツを見直しています。お客様のご意見は改善に役立ちます。
    フォローアップ用のメールをご提供してください
    ご意見ありがとうございました!
    フィードバックを送信できませんでした
    後でもう一度お試しいただくか、doc_feedback@xsolla.comまでお問い合わせください。