사용자가 정기 결제 플랜을 변경하도록 허용하는 방법

알림
사용자가 프로젝트에서 플랜을 변경할 수 있도록 허용하려면 결제 인터페이스가 올바르게 작동하도록 설정해야 합니다. 이렇게 하려면 고객 성공 매니저에게 문의하거나 csm@xsolla.com으로 이메일을 보내세요.
사용자가 현재 또는 다음 기간에 정기 결제 플랜을 변경하도록 허용할 수 있으며 하루에 여러 번 요금제를 변경하도록 허용할 수도 있습니다.

작동 방식

  • 새 플랜을 선택하면 현재 정기 결제 기간 중 사용하지 않은 기간에 해당하는 금액이 사용자의 잔액으로 환불됩니다.
  • 새 정기 결제 플랜에 대한 결제는 모두 사용자의 잔액으로 진행됩니다. 잔액이 부족한 경우 프로젝트에서 허용된 결제 방식 중 하나를 사용하여 추가 결제가 이루어집니다.
  • 플랜을 변경할 때 다음 청구 기간부터 플랜을 변경하도록 프로젝트가 구성되어 있더라도 결제가 확인되는 즉시 상품 금액이 인출됩니다.
  • 새 플랜의 통화가 현재 플랜 통화와 다른 경우, 새 플랜 구매는 통화 변환을 통해 이루어집니다.

다음과 같은 경우 플랜을 변경할 수 없습니다.
  • 사용자에게 현재 플랜에서 변경되는 플랜에 대한 활성 정기 결제가 이미 있는 경우.
  • 사용자가 변경하려는 정기 결제가 활성 상태가 아닌 경우.
  • 사용자가 변경하려는 정기 결제 플랜이 라이프타임 플랜 유형인 경우: 해당 정기 결제는 지정된 환불 기간에만 취소할 수 있습니다.
알림
프로젝트에 플랜 그룹이 구성되어 있는 경우, 그룹 내에서만 플랜을 변경할 수 있습니다. 그룹 작동 방식에 대한 자세한 정보는 플랜 기반 상품 설정 방법 및 플랜 그룹 지침을 참조하세요.

획득 방법

  1. 프로젝트를 관리자 페이지에서 엽니다.
  2. 사이드바에서 정기 결제클릭한 후 설정 섹션으로 이동합니다.
  3. 플랜 변경하기 섹션에서 다른 플랜 선택 기능 토글을 On(켜짐)으로 설정합니다.
  4. 기본적으로 다음 기간부터 플랜 변경이 허용됩니다. 현재 기간 동안 플랜을 변경할 수 있도록 허용하려면 지금을 선택합니다. 이 옵션을 선택하면 결제가 확인되는 즉시 플랜이 변경됩니다.
  5. 하루에 한 번 이상 플랜을 변경할 수 있도록 하려면 동일한 날짜에 여러 번 다른 플랜을 선택할 수 있는 기능On(켜짐)으로 설정합니다.
  6. 결제 인터페이스를 열 때 다음을 사용합니다.

서버 측 토큰 생성 API 호출을 통해 결제 UI 열기

  1. 메소드에 다음을 전달하여 결제 UI를 열기 위한 토큰 받기:
    • purchase.subscription.operation 매개변수에 있는 change_plan 값.
    • purchase.subscription.plan_id 매개변수에 있는 새 플랜의 ID.
    • 정기 결제 기반 상품을 이용하는 경우 purchase.subscription.product_id 매개변수의 정기 결제 기반 상품 ID. 이를 구하려면 고객 성공 매니저에게 문의하거나 csm@xsolla.com으로 이메일을 보내주세요.
  2. 결제 인터페이스 열기를 구현하는 방법:

클라이언트 측 API 호출을 사용하여 정기 결제 관리 페이지에서 결제 UI 열기

프로젝트에 엑솔라 로그인이 구성되어 있는 경우 클라이언트 측 API 호출을 사용하여 결제 인터페이스를 여는 링크를 가져올 수 있습니다. 응답으로 반환된 링크를 통해 정기 결제 관리 페이지에서 결제 UI를 열 수 있으며, 사용자는 활성 정기 결제를 선택하고 변경할 수 있습니다.

이렇게 하려면 애플리케이션의 클라이언트 측에서 HTTP POST 요청을 사용하여 결제 인터페이스에 대한 링크 수신(https://subscriptions.xsolla.com​/api/user/v1/projects/{project_id}/subscriptions/manage)을 구현합니다. 요청에 Authorization: Bearer <client_user_jwt> 헤더를 포함해야 합니다. 여기서 <client_user_jwt>는 사용자의 JSON 웹 토큰(JWT)으로 Base64 표준에 따라 인코딩한 고유한 토큰입니다. 토큰을 받는 방법:

프로젝트 ID를 projectId 경로 매개변수로 지정합니다. 이 매개 변수는 관리자 페이지의 프로젝트 이름 옆에서 찾을 수 있습니다. country를 쿼리 매개변수로 지정합니다. ISO 3166-1 alpha-2에 따라 사용자의 국가를 두 글자 코드로 지정합니다. 이러한 설정은 로케일과 통화 선택에 영향을 줍니다. 이 매개변수를 전달하지 않으면 사용자의 IP 주소로 국가를 결정합니다.

필요한 경우 사용자 정의용 추가 매개변수를 전달하세요.

요청 본문 매개변수:

매개 변수유형설명
plan_external_id
string필수입니다. 정기 결제 플랜의 외부 ID입니다. 관리자 페이지 > 정기 결제 > 구독 플랜 섹션에서 확인할 수 있습니다.
settings
object사용자 지정 프로젝트 설정와 관련된 객체입니다.
settings.ui
object인터페이스 설정입니다(객체).
settings.ui.size
string결제 UI의 크기입니다. 가능한 크기:
  • small: 결제 UI의 가능한 최소 크기입니다. 창 크기가 엄격히 제한되는 경우 이 값을 사용합니다(크기: 620 x 630픽셀).
  • medium: 결제 UI의 권장 크기입니다. 이 값을 사용하여 라이트박스에 결제 UI를 표시합니다(크기: 740 x 760픽셀).
  • large: 새 창 또는 탭에 결제 UI 표시를 위한 최적의 크기입니다(크기: 820 x 840픽셀).
settings.ui.theme
string결제 UI 테마. default, default_dark 또는 사용자 정의 테마 ID일 수 있습니다.
settings.ui.version
string장치 유형입니다. desktop(기본값) 또는 mobile이 가능합니다.
settings.ui.desktop
object데스크톱 버전의 인터페이스 설정입니다(객체).
settings.ui.desktop.header
object헤더 설정 데이터와 관련된 값입니다.
settings.ui.desktop.header.close_button
boolean페이 스테이션 데스크톱에 닫기 버튼을 표시할지를 설정합니다. 이 버튼은 페이 스테이션을 종료하고 settings.return_url 매개 변수에 지정된 URL로 사용자를 리디렉션합니다. 기본값은 false입니다.
settings.ui.desktop.header.is_visible
boolean결제 UI에 헤더가 표시되는지 여부를 나타냅니다.
settings.ui.desktop.header.is_visible.type
string헤더의 외관입니다. compact(이 경우 게임 이름과 사용자 ID는 헤더에 표시하지 않음) 혹은 normal일 수 있습니다.
booleantrue일 경우, 로고가 헤더에 표시됩니다(먼저 고객 성공 매니저에게 이미지 파일을 제공하세요).
settings.ui.desktop.header.visible_name
boolean프로젝트 이름이 헤더에 표시되는지 여부를 나타냅니다.
settings.ui.desktop.header.type
string헤더를 표시하는 설정 방식입니다. compact(프로젝트 이름 및 사용자 ID 표지 안 함) 또는 normal (기본값)을 설정할 수 있습니다.
settings.ui.mobile.mode
string사용자는 오직 저장된 결제 방법을 사용해서 결제할 수 있습니다. saved_accounts일 수 있습니다.
boolean모바일 버전의 결제 UI에서 바닥글을 표시하거나 숨길지 여부입니다.
settings.ui.mobile.header.close_button
boolean페이 스테이션 모바일에 닫기 버튼을 표시할지를 설정합니다. 이 버튼은 페이 스테이션을 종료하고 settings.return_url 매개 변수에 지정된 URL로 사용자를 리디렉션합니다. 기본값은 false입니다.
settings.ui.mode
string페이 스테이션의 인터페이스 모드. user_account만 가능합니다. 헤더는 계정 탐색 메뉴만 포함할 수 있으며 사용자는 제품을 선택하거나 결제를 할 수 없습니다. 이 모드는 데스크톱에서만 사용 가능합니다.
settings.currency
string선호하는 결제 통화입니다. 3자리 ISO 4217 통화 코드입니다.
settings.external_id
string게임의 트랜잭션 ID 입니다. 각 사용자 결제별로 고유해야 합니다.
settings.payment_method
integer결제 방식 ID입니다. 결제 방식 ID 목록은 관리자 페이지에서 또는 결제 방식 가져오기 API 호출을 사용하여 가져올 수 있습니다.
settings.return_url
string결제 후 사용자를 리디렉션하는 페이지입니다. 매개 변수 user_id, foreigninvoice, invoice_id, status가 링크에 자동으로 추가됩니다.
settings.redirect_policy
object리디렉션 정책 설정입니다(객체).
settings.redirect_policy.redirect_conditions
string결제 후 사용자를 반환 URL로 리디렉션하는 결제 상태입니다. none, successful, successful_or_canceled 혹은 any일 수 있습니다.
settings.redirect_policy.delay
integer사용자가 복귀 URL로 자동 재지정된 이후 지연 시간(초).
settings.redirect_policy.status_for_manual_redirection
string결제 후 사용자를 반환 URL로 리디렉션하는 결제 상태입니다. none, successful, successful_or_canceled 혹은 any일 수 있습니다.
settings.redirect_policy.redirect_button_caption
string수동 리디렉션 버튼 텍스트입니다.
요청 예제:
Copy
Full screen
Small screen
curl -X 'POST' \
'https://subscriptions.xsolla.com​/api/user/v1/projects/{project_id}/subscriptions/manage?country=RU  ' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer client_user_jwt'
{
  "settings": {
    "ui": {
      "size": "large",
      "theme": "string",
      "version": "desktop",
      "desktop": {
        "header": {
          "is_visible": true,
          "visible_logo": true,
          "visible_name": true,
          "type": "compact",
          "close_button": true
        }
      },
      "mobile": {
        "mode": "saved_accounts",
        "footer": {
          "is_visible": true
        },
        "header": {
          "close_button": true
        }
      },
      "license_url": "string",
      "mode": "user_account",
      "user_account": {
        "history": {
          "enable": true,
          "order": 1
        },
        "payment_accounts": {
          "enable": true,
          "order": 1
        },
        "info": {
          "enable": true,
          "order": 1
        },
        "subscriptions": {
          "enable": true,
          "order": 1
        }
      }
    },
    "currency": "str",
    "locale": "st",
    "external_id": "string",
    "payment_method": 1,
    "return_url": "string",
    "redirect_policy": {
      "redirect_conditions": "none",
      "delay": 0,
      "status_for_manual_redirection": "none",
      "redirect_button_caption": "string"
    }
  }
}

응답 예제:

Copy
Full screen
Small screen
{
  "link_to_ps": "https://secure.xsolla.com/paystation2/?access_token=<access_token>"
}
이 기사가 도움이 되었나요?
감사합니다!
개선해야 할 점이 있을까요? 메시지
유감입니다
이 기사가 도움이 안 된 이유를 설명해 주세요. 메시지
의견을 보내 주셔서 감사드립니다!
메시지를 검토한 후 사용자 경험 향상에 사용하겠습니다.
이 페이지 평가
이 페이지 평가
개선해야 할 점이 있을까요?

답하기 원하지 않습니다

의견을 보내 주셔서 감사드립니다!
마지막 업데이트: 2024년 1월 22일

오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.

문제 보고
콘텐츠를 항상 검토합니다. 여러분의 피드백은 콘텐츠를 개선에 도움이 됩니다.
후속 조치를 위해 이메일을 제공해 주세요
의견을 보내 주셔서 감사드립니다!