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

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

お知らせ

実際通貨でゲームキーを販売するには、まずエクソーラとライセンス契約を結ぶ必要があります。これを行うには、パブリッシャーアカウントでの契約と税金 > 契約 > ライセンス契約セクションに移動し、契約書フォームに記入し、確認を待ちます。契約書の確認には、最大で3営業日かかる場合があります。

アイテム販売方法
ゲームのコピー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}
    

    主要なクエリパラメータに加えて、決済インターフェースをカスタマイズしたり、認証済みユーザーに販売したりするためのパラメータも渡すことができます。

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

    • YOUR-ITEM-TYPE — アイテムのタイプ。指定可能な値は以下の通り:

    • YOUR-PROJECT-IDパブリッシャーアカウントでプロジェクト名の横に表示されているのプロジェクトID。

    • YOUR-ITEM-SKU — ゲームキーパッケージのSKU。例:

      • order456 — 特定のプラットフォームを含まないSKU。
      • pre.order123_steam — 特定のプラットフォームを含むSKU。

    プラットフォーム固有のゲームキーパッケージの使用を推奨します。これにより、キーを使用またはアクティベートする際の互換性の問題を回避できます。すべての場合において、SKUにはプラットフォーム固有のサフィックスを追加する必要があります。これはキーパッケージの作成方法に応じて、自動的または手動で行われます:

    • パブリッシャーアカウントでキーパッケージを作成する際、システムは入力されたSKUに自動的にアンダースコア付きのプラットフォーム固有のサフィックス(例:_steam_playstation)を追加します。

    • APIコールを使用してプラットフォーム固有のキーパッケージを作成する場合、プラットフォームサフィックスは、小文字および大文字のラテン文字の英数字、ピリオド、ダッシュ、アンダースコアのみを含む任意の形式で指定できます。

    サポートされているエクソーラプラットフォームと、そのサフィックスの例のリスト:

    名称SKUサフィックスの例
    Steam_steam
    PlayStation_playstation
    Xbox_xbox
    Uplay_uplay
    Origin_origin
    DRM Free_drmfree
    GOG_gog
    Epic Games_epicgames
    Nintendo Switch eショップ_nintendo_eshop
    Discord ゲームストア_discord_game_store
    Oculus_oculus
    Viveport_viveport
    Google Stadia_stadia
    MY.GAMES ストア_my_game

    リンクが正しく機能するように、ゲームリストを取得するAPIコールを使用して正確なSKUを取得し、SKU値として決済リンクに含めることができます。アイテムSKUは、items.unit_items.skuパラメータで返されます(通常、このSKUは game_key_sku_drm_skuのフォーマットに従います)。

    Steamでゲームを販売するためのURL例:

    Copy
    Full screen
    Small screen
      1https://purchase.xsolla.com/pages/buy?type=game_key&project;_id=123456&sku;=pre.order123_steam
      

      決済UIをゲームのスタイルに合わせるには、ペイステーションのカスタマイズ方法に関するガイドに記載されているとおりに、テーマ、サイズ、その他のUIパラメータを設定してください。URLにui_settingsパラメータを追加し、値としてBase64エンコードされたsettings.uiJSONオブジェクトを渡します。

      カスタムテーマで決済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=
        

        認証済みのユーザーにキーを販売するには、xsolla_login_tokenパラメータにユーザーアクセストークンを渡します。このトークンは、選択された認証方法によって異なります。

        トークンで決済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}&xsolla_login_token={ACCESS_TOKEN}
          

          サンドボックスモードで支払いフローをテストするには、URLにmode=sandboxパラメータを追加します。トランザクションを完了するには、テスト銀行カードを使用できます。

          サンドボックスモードで決済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}&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年11月24日

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

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