# 購入用の決済トークンを作成

注文とその支払いトークンを生成します。注文はリクエスト本文に渡されたアイテムに基づいて生成されます。

決済UIを新しいウィンドウで開くには、以下のリンクをご利用ください：https://secure.xsolla.com/paystation4/?token={token}で{token}受信したトークン。

テスト目的には、以下のリンクを使用してください：https://sandbox-secure.xsolla.com/paystation4/?token={token}。

通知
   
   正しく動作させるためには、user.country.valueパラメータ（国名コード）、
またはX-User-Ipヘッダー（国が不明な場合のユーザーのIPv4アドレス）のいずれかを渡してください。渡されたデータは決済通貨を決定するために使用されます。IPv6アドレスはサポートされていません。選択された通貨は、エクソーラの決済UIでの決済方法に使用されます。

Endpoint: POST /v3/project/{project_id}/admin/payment/token
Version: 2.0.0
Security: basicAuth

## Path parameters:

  - `project_id` (integer, required)
    プロジェクトID。このパラメータは、パブリッシャーアカウントのプロジェクト名の横、またはプロジェクトの作業中にブラウザのアドレスバーで確認できます。URLの形式は以下の通りです：https://publisher.xsolla.com//projects/。
    Example: 44056

## Request fields (application/json):

  - `sandbox` (boolean)
    支払い処理をテストする場合は、trueに設定します。この場合、https://sandbox-secure.xsolla.comを使用してテスト決済UIにアクセスします。

  - `user` (object, required)

  - `user.id` (object, required)

  - `user.id.value` (string)
    ユーザーID。テストでは、任意の値を渡すことができます。実際の支払いを受け入れるには、システムのユーザーID値を使用する必要があります。このIDは[ユーザー認証](https://developers.xsolla.com/ja/webhooks/operation/user-validation/)ウェブフックで渡されます。

  - `user.name` (object)

  - `user.name.value` (string)
    ユーザーのスクリーンネーム。

  - `user.email` (object)

  - `user.email.value` (string)
    ユーザーのメールアドレス。RFC822プロトコルに基づく有効である必要があります。

  - `user.country` (object)

  - `user.country.value` (string)
    [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)に従った2文字の大文字の国名コード。X-User-IpヘッダーにIPアドレスが渡されない場合は必須です。[エクソーラがサポートする国](https://developers.xsolla.com/ja/doc/shop-builder/references/supported-countries/)の詳細情報については、ドキュメントを確認してください。例：country=US
    Example: "US"

  - `user.country.allow_modify` (boolean)
    ユーザーが決済UIで国を変更できるかどうか。

  - `user.age` (integer)
    ユーザーの年齢。

  - `user.phone` (object)

  - `user.phone.value` (string, required)
    ユーザーの電話番号。

  - `user.phone.allow_modify` (boolean)
    ユーザーが決済UIで電話を変更できるかどうか。トークンに phone.value が渡された場合、デフォルトではfalseとなります。

  - `user.phone.hidden` (boolean)

  - `user.tracking_id` (object)

  - `user.tracking_id.value` (string, required)
    一意の追跡ID（マーケティングキャンペーンで使用）。

  - `user.steam_id` (object)

  - `user.steam_id.value` (string, required)
    Steam ID。

  - `user.is_legal` (boolean)
    ユーザーが法人かを示します。

  - `user.legal` (object)
    法人情報の詳細を含むオブジェクト。user.is_legalがtrueの場合、このオブジェクトおよびそのすべてのパラメータが必須となります。

  - `user.legal.name` (string)
    法人のフルネームです。

  - `user.legal.address` (string)
    最後まで記載した法的住所です。

  - `user.legal.vat_id` (string)
    納税者個別のID。

  - `user.legal.country` (string)
    設立国。[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)に従って大文字2文字の国コードを使用します。

  - `purchase` (object, required)

  - `purchase.items` (array, required)

  - `purchase.items.sku` (string, required)
    一意のアイテムID。SKUには、英大文字、英小文字、数字、ピリオド、ダッシュ、アンダースコアのみを含めることができます。

注意同一のSKUを複数販売するには、purchase.items[].quantityパラメータに必要な数量を指定してください。配列内での重複するSKUはサポートされておらず、トークン作成時には最初の出現箇所のみが使用されます。この場合、エラーは返されません。
    Example: "t-shirt"

  - `purchase.items.quantity` (number, required)
    アイテムの数量。
    Example: 2

  - `promo_code` (string)
    大文字と小文字を区別する一意のコードです。文字と数字が含まれます。

  - `settings` (object)
    ユーザーの支払いプロセスと決済UIを構成するための設定。

  - `settings.ui` (object)
    インターフェイス設定。

  - `settings.ui.theme` (string)
    決済UIのテーマ。ライトテーマ（デフォルト）の場合は63295a9a2e47fab76f7708e1、ダークテーマの場合は63295aab2e47fab76f7708e3を指定できます。[カスタムテーマを作成](https://developers.xsolla.com/ja/doc/pay-station/features/ui-theme-customization/#pay_station_ui_theme_customization_in_token)して、そのIDをこのパラメータに渡すこともできます。
    Enum: "63295a9a2e47fab76f7708e1", "63295aab2e47fab76f7708e3"

  - `settings.ui.desktop` (object)
    デスクトップ版のインターフェース設定。

  - `settings.ui.desktop.header` (object)
    ヘッダー設定。

  - `settings.ui.desktop.header.is_visible` (boolean)
    決済インターフェースにヘッダーを表示するかどうかを示します。

  - `settings.ui.desktop.header.visible_logo` (boolean)
    trueの場合、ロゴはヘッダーに表示されます。画像をアップロードするには、[パブリッシャーアカウント](https://publisher.xsolla.com/)でプロジェクトを開き、ペイステーション > 設定セクションにアクセスしてください。

  - `settings.ui.desktop.header.visible_name` (boolean)
    ヘッダーにプロジェクト名を表示するかどうかを示します。

  - `settings.ui.desktop.header.visible_purchase` (boolean)
    ヘッダーに購入説明（purchase.description.value）を表示するか示します。デフォルトはtrueです。

  - `settings.ui.desktop.header.type` (string)
    ヘッダーを表示する方法。compact（プロジェクト名とユーザーIDを隠す）またはnormal（デフォルト）に指定できます。
    Enum: "compact", "normal"

  - `settings.ui.desktop.header.close_button` (boolean)
    デスクトップ決済UIに閉じるボタンを表示するかどうか。このボタンは決済UIを閉じて、settings.return_urlパラメータで指定したURLにリダイレクトします。デフォルトはfalseです。

  - `settings.ui.mode` (string)
    決済UIのインターフェースモード。user_accountのみに指定できます：ヘッダーにはユーザーアカウントのナビゲーションメニューのみが含まれています。ユーザーは商品を選択したり、決済を行うことはできません。このモードは、デスクトップ上でのみ使用できます。
    Enum: "user_account"

  - `settings.ui.user_account` (object)
    ユーザーアカウントの詳細。

  - `settings.ui.user_account.payment_accounts` (object)
    お客様の決済アカウント サブメニュー。

  - `settings.ui.user_account.payment_accounts.enable` (boolean, required)
    サブメニューを表示するかどうかを示します。デフォルトではfalseです。

  - `settings.ui.user_account.info` (object)
    私のアカウント ページ。

  - `settings.ui.user_account.info.enable` (boolean, required)
    サブメニューを表示するかどうかを示します。デフォルトではfalseです。

  - `settings.ui.user_account.info.order` (integer, required)
    メニュー内のサブメニューの位置。

  - `settings.ui.user_account.subscriptions` (object)
    サブスクリプションの管理 サブメニュー。

  - `settings.ui.user_account.subscriptions.enable` (boolean, required)
    サブメニューを表示するかどうかを示します。デフォルトではfalseです。

  - `settings.ui.user_account.subscriptions.order` (integer, required)
    メニュー内のサブメニューの位置。

  - `settings.ui.header` (object)

  - `settings.ui.header.visible_virtual_currency_balance` (boolean)
    この要素を決済インターフェースで非示にできるかどうかを示します。

  - `settings.ui.mobile` (object)

  - `settings.ui.mobile.header` (object)

  - `settings.ui.mobile.header.close_button` (boolean)
    モバイル決済UIに閉じるボタンを表示するかどうか。このボタンは決済UIを閉じて、settings.return_urlパラメータで指定したURLにリダイレクトします。

  - `settings.ui.is_prevent_external_link_open` (boolean)
    リンクを外部リソースにリダイレクトするかどうかを無効にします。外部リンクをクリックすると、external-link-openイベントがpostMessageメカニズムを介して送信されます。urlパラメータには、リダイレクト先のリンクのアドレスが渡されます。

  - `settings.ui.is_payment_methods_list_mode` (boolean)
    決済UIを開く際に、ユーザーの国で利用可能な決済方法のリストを表示するかどうか。falseの場合（デフォルト）、settings.payment_methodパラメータで渡された決済方法、または[PayRankアルゴリズム](https://developers.xsolla.com/ja/solutions/payments/payment-ui-management/top-payment-methods-management/)で選択された方法が表示されます。

  - `settings.ui.is_independent_windows` (boolean)
    埋め込みランチャーのブラウザ（WebView）から、ユーザーのデフォルトのブラウザにリダイレクトして購入させるかどうか。

  - `settings.ui.currency_format` (string)
    codeに設定すると、決済UIに3 文字の[ISO 4217](https://developers.xsolla.com/ja/doc/pay-station/references/supported-currencies/)通貨コードが表示されます。 デフォルトでは、3文字の通貨コードの代わりに通貨記号が表示されます。

  - `settings.ui.is_show_close_widget_warning` (boolean)
    支払いページを閉じる前に、×アイコンの上にカーソルを置いたときに取引処理に関する警告を表示するかどうか。falseが渡された場合、またはパラメータが渡されなかった場合、警告は表示されません。

  - `settings.ui.layout` (string)
    決済UIの主要要素の位置。ゲーム内で決済UIを開いたり、注文や決済方法に関する情報の列を入れ替えたりすることができます。詳細については、[カスタマイズに関する説明](https://developers.xsolla.com/ja/doc/pay-station/features/ui-theme-customization/#pay_station_ui_theme_customization_layout)を参照してください。
    Enum: "embed", "column_reverse", "embed_column_reverse"

  - `settings.ui.is_three_ds_independent_windows` (boolean)
    3-Dセキュア検証が新しいブラウザウィンドウで開くかどうか。セットアップでコンテンツセキュリティポリシー（CSP）が適用される場合は、trueに設定します。

  - `settings.ui.is_cart_open_by_default` (boolean)
    モバイル版の決済UIを開いた時のカート内のアイテムリストの表示。trueの場合、リストは拡張ビューで表示されます。false（デフォルト）またはパラメータが渡されない場合、リストは折りたたまれたビューで表示されます。

  - `settings.currency` (string)
    ご希望の決済通貨。[ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)に従った3文字の通貨コード。[エクソーラがサポートする通貨](https://developers.xsolla.com/ja/doc/pay-station/references/supported-currencies/)の詳細については、ドキュメントを参照してください。

  - `settings.language` (string)
    インターフェース言語。小文字の2文字[言語コード](https://developers.xsolla.com/ja/doc/pay-station/features/localization/)。

  - `settings.external_id` (string)
    トランザクションexternal ID。

  - `settings.payment_method` (integer)
    決済方法ID。決済方法によっては特定の通貨のみをサポートする場合があるため、決済インターフェースにおける通貨の表示を決定します。

  - `settings.return_url` (string)
    決済完了後にユーザーがリダイレクトされるページ。リンクにはuser_id、foreigninvoice、invoice_id、およびstatusパラメータが自動的に追加されます。

  - `settings.redirect_policy` (object)

  - `settings.redirect_policy.redirect_conditions` (string)
    ユーザーがリターンURLにリダイレクトする引き金となる決済状態。
    Enum: "none", "successful", "successful_or_canceled", "any"

  - `settings.redirect_policy.delay` (integer)
    ユーザーが自動的に戻り先URLにリダイレクトされるまでの遅延期間。

  - `settings.redirect_policy.status_for_manual_redirection` (string)
    ユーザーをリターンURLにリダイレクトしてボタンクリックの表示をトリガーする決済状態。
    Enum: "none", "successful", "successful_or_canceled", "any"

  - `settings.redirect_policy.redirect_button_caption` (string)
    ローカライズされたリダイレクトボタンのキャプション。
    Example: "Text button"

  - `custom_parameters` (object,null)
    キーと値のペアの有効なJSONセットとして表されたカスタムパラメータ。
このフィールドを通じて追加のパラメータを渡すことで、不正対策フィルターを設定することができます。[ペイステーションに関するドキュメントンをご覧ください](https://developers.xsolla.com/ja/doc/pay-station/features/antifraud/)。

## Response 201 fields (application/json):

  - `token` (string)
    決済トークン。

  - `order_id` (integer)
    注文IDです。
    Example: 1

## Response 401 fields (application/json):

  - `statusCode` (integer)
    Example: 401

  - `errorCode` (integer)
    Example: 1020

  - `errorMessage` (string)
    Example: "[0401-1020]: Error in Authentication method occurred"

## Response 422 fields (application/json):

  - `statusCode` (number)
    レスポンスステータスコード。
    Example: 422

  - `errorCode` (number)
    エラーコード。
    Example: 1102

  - `errorMessage` (string)
    読み取り可能なエラーメッセージ。
    Example: "[0401-1102]: Unprocessable Entity. The property `external_id` is required"

  - `transactionId` (string)
    リクエストのユニークID。
    Example: "da145238620011eb8e24fe6913ff226a"


