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

ゲームキーは、ダイレクトリンクストア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。
    • 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
           3<script>
           4  var options = {
           5    project_id: "101010",
           6    sku: "my_key",
           7    user: {
           8      auth: "9qs9VyCIQQXBlzJQcfETIKWZDvhi4Sz1"
           9    },
          10    drm: "steam",
          11    item_type: "unit",
          12    api_settings: {
          13      sandbox: true
          14    },
          15    widget_ui: {
          16      target_element: "#xsolla-buy-button-widget",
          17      theme: {
          18        foreground: "green",
          19        background: "light"
          20      }
          21    },
          22    payment_widget_ui: {
          23      lightbox: {
          24        height: "700px",
          25        spinner: "round"
          26      }
          27    }
          28  };
          29
          30  var s = document.createElement("script");
          31  s.type = "text/javascript";
          32  s.async = true;
          33  s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.8/widget.min.js";
          34  s.addEventListener("load", function () {
          35    var widgetInstance = XBuyButtonWidget.create(options);
          36  });
          37  document.getElementsByTagName("head")[0].appendChild(s);
          38</script>
          39
          40<style>
          41  #xsolla-buy-button-widget {
          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 .x-buy-button-widget-payment-button {
          48    background-color: #ff005b;
          49    color: black;
          50  }
          51</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決済UIの外観パラメータ。
          payment_widget_ui
          object決済UIの外観を決定するパラメータを持つオブジェクト。
          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決済UI(ペイステーション)が読み込まれました。
          close決済UI(ペイステーション)が閉じられています。
          statusユーザーはステータスページにいます。
          status-invoiceユーザーはステータスページにいます。支払いが進行中です。
          status-deliveringユーザーはステータスページにいます。支払いが完了しました。支払い通知が送信されました。
          status-doneユーザーはステータスページにいます。支払いはユーザーのアカウントに振り込まれます。
          status-troubledユーザーはステータスページにいます。支払いに失敗しました。

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

          ボタンカスタマイズ

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

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

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