# 구매용 결제 토큰 생성하기

주문 및 주문에 대한 지불 토큰을 생성합니다. 주문은 요청 본문에 전달된 아이템에 기반하여 생성됩니다.

결제 UI를 새 창에서 열려면 https://secure.xsolla.com/paystation4/?token={token} 링크를 사용합니다. 여기서 {token}은 수신한 토큰입니다.

테스트를 진행할 때에는 https://sandbox-secure.xsolla.com/paystation4/?token={token} URL을 사용합니다.

알림
   
   메서드가 올바르게 작동하도록 하려면 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 값으로 설정합니다. 이 경우 테스트 결제 UI에 액세스하기 위해 https://sandbox-secure.Xsolla.com을 사용합니다.

  - `user` (object, required)

  - `user.id` (object, required)

  - `user.id.value` (string)
    사용자 ID입니다. 테스트 목적으로 어떤 값이나 전달할 수 있습니다. 실제 결제를 수락하려면 시스템의 사용자 ID 값을 사용해야 합니다. 이 ID는 [유효성 검사](https://developers.xsolla.com/ko/webhooks/operation/user-validation/) 웹훅에서 전달됩니다.

  - `user.name` (object)

  - `user.name.value` (string)
    사용자 화면 이름입니다.

  - `user.email` (object)

  - `user.email.value` (string)
    사용자 이메일입니다. RFC 822 프로토콜에 따라 유효해야 합니다.

  - `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/ko/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)
    개별 납세자 식별자입니다.

  - `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/ko/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)
    결제 UI에 헤더를 표시할지 여부입니다.

  - `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)
    결제 UI에서 이 요소를 숨길 수 있는지 여부입니다.

  - `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)
    외부 자원에 대한 링크를 리디렉션할지 여부입니다. 외부 링크를 클릭하면 postMessage 메커니즘을 통해 external-link-open 이벤트가 전송됩니다. 리디렉션된 링크 주소는 url 매개 변수에 전달됩니다 .

  - `settings.ui.is_payment_methods_list_mode` (boolean)
    결제 UI를 열 때 사용자의 국가에서 사용할 수 있는 결제 방식 목록이 표시되는지 여부입니다. false(기본값)인 경우 settings.payment_method 매개 변수에서 전달된 결제 방식이나 [PayRank 알고리즘](https://developers.xsolla.com/ko/solutions/payments/payment-ui-management/top-payment-methods-management/)으로 선택한 결제 방식이 표시됩니다.

  - `settings.ui.is_independent_windows` (boolean)
    삽입된 런처의 브라우저(WebView)에서 기본 브라우저로 사용자를 리디렉션하여 구매할지 여부입니다.

  - `settings.ui.currency_format` (string)
    결제 UI에 3자리 [ISO 4217](https://developers.xsolla.com/ko/doc/pay-station/references/supported-currencies/) 통화 코드를 표시하려면 code로 설정하십시오. 기본적으로는 3자리 통화 코드 대신 통화 기호가 표시됩니다.

  - `settings.ui.is_show_close_widget_warning` (boolean)
    결제 페이지를 닫기 전에 × 아이콘 위로 마우스를 가져갔을 때 거래 처리에 대한 경고를 표시할지 여부입니다. false가 전달되거나 매개 변수가 전달되지 않으면 경고가 표시되지 않습니다.

  - `settings.ui.layout` (string)
    결제 UI의 주요 요소 위치. 게임 내부에서 결제 UI를 열거나 주문 및 결제 방식에 대한 정보로 열을 바꿀 수 있습니다. 자세한 정보는 [사용자 정의 지침](https://developers.xsolla.com/ko/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/ko/doc/pay-station/references/supported-currencies/)에 대한 자세한 정보는 설명서에서 확인하십시오.

  - `settings.language` (string)
    인터페이스 언어입니다. 2자리 소문자 [언어 코드](https://developers.xsolla.com/ko/doc/pay-station/features/localization/)입니다.

  - `settings.external_id` (string)
    거래 외부 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/ko/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"


