사용자가 정기 결제 플랜을 변경하도록 허용하는 방법
알림
사용자가 프로젝트에서 플랜을 변경할 수 있도록 허용하려면 결제 인터페이스가 올바르게 작동하도록 설정해야 합니다. 이렇게 하려면 고객 성공 매니저에게 문의하거나 csm@xsolla.com으로 이메일을 보내세요.
작동 방식
- 새 플랜을 선택하면 현재 정기 결제 기간 중 사용하지 않은 기간에 해당하는 금액이 사용자의 잔액으로 환불됩니다.
- 새 정기 결제 플랜에 대한 결제는 모두 사용자의 잔액으로 진행됩니다. 잔액이 부족한 경우 프로젝트에서 허용된 결제 방식 중 하나를 사용하여 추가 결제가 이루어집니다.
- 플랜을 변경할 때 다음 청구 기간부터 플랜을 변경하도록 프로젝트가 구성되어 있더라도 결제가 확인되는 즉시 상품 금액이 인출됩니다.
새 플랜의 통화가 현재 플랜 통화와 다른 경우, 새 플랜 구매는 통화 변환을 통해 이루어집니다.
- 사용자에게 현재 플랜에서 변경되는 플랜에 대한 활성 정기 결제가 이미 있는 경우.
- 사용자가 변경하려는 정기 결제가 활성 상태가 아닌 경우.
- 사용자가 변경하려는 정기 결제 플랜이 라이프타임 플랜 유형인 경우: 해당 정기 결제는 지정된 환불 기간에만 취소할 수 있습니다.
알림
프로젝트에 플랜 그룹이 구성되어 있는 경우, 그룹 내에서만 플랜을 변경할 수 있습니다. 그룹 작동 방식에 대한 자세한 정보는 플랜 기반 상품 설정 방법 및 플랜 그룹 지침을 참조하세요.
획득 방법
- 프로젝트를 관리자 페이지에서 엽니다.
- 사이드바에서 정기 결제클릭한 후 설정 섹션으로 이동합니다.
- 플랜 변경하기 섹션에서 다른 플랜 선택 기능 토글을 On(켜짐)으로 설정합니다.
- 기본적으로 다음 기간부터 플랜 변경이 허용됩니다. 현재 기간 동안 플랜을 변경할 수 있도록 허용하려면 지금을 선택합니다. 이 옵션을 선택하면 결제가 확인되는 즉시 플랜이 변경됩니다.
- 하루에 한 번 이상 플랜을 변경할 수 있도록 하려면 동일한 날짜에 여러 번 다른 플랜을 선택할 수 있는 기능을 On(켜짐)으로 설정합니다.
- 결제 인터페이스를 열 때 다음을 사용합니다.
- 서버 측 토큰 생성 API 호출
- 프로젝트에서 엑솔라 로그인을 사용하는 경우 결제 UI를 여는 링크를 가져오기 위한 클라이언트 측 API 호출
서버 측 토큰 생성 API 호출을 통해 결제 UI 열기
- 메소드에 다음을 전달하여 결제 UI를 열기 위한 토큰 받기:
purchase.subscription.operation
매개변수에 있는change_plan
값.purchase.subscription.plan_id
매개변수에 있는 새 플랜의 ID.- 정기 결제 기반 상품을 이용하는 경우
purchase.subscription.product_id
매개변수의 정기 결제 기반 상품 ID. 이를 구하려면 고객 성공 매니저에게 문의하거나 csm@xsolla.com으로 이메일을 보내주세요.
- 결제 인터페이스 열기를 구현하는 방법:
클라이언트 측 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 표준에 따라 인코딩한 고유한 토큰입니다. 토큰을 받는 방법:
- 애플리케이션에서 로그인과 암호 인증을 사용하는 경우
Register new user 와Auth by username 을 사용합니다. - 애플리케이션에서 소셜 네트워크를 통한 인증을 사용하는 경우
Auth via social network API 호출을 사용합니다.
projectId
경로 매개변수로 지정합니다. 이 매개 변수는 관리자 페이지의 프로젝트 이름 옆에서 찾을 수 있습니다.
country
를 쿼리 매개변수로 지정합니다. ISO 3166-1 alpha-2에 따라 사용자의 국가를 두 글자 코드로 지정합니다. 이러한 설정은 로케일과 통화 선택에 영향을 줍니다. 이 매개변수를 전달하지 않으면 사용자의 IP 주소로 국가를 결정합니다.필요한 경우 사용자 정의용 추가 매개변수를 전달하세요.
요청 본문 매개변수:
매개 변수 | 유형 | 설명 |
---|---|---|
| string | 필수입니다. 정기 결제 플랜의 외부 ID입니다. 관리자 페이지 > 정기 결제 > 구독 플랜 섹션에서 확인할 수 있습니다. |
| object | 사용자 지정 프로젝트 설정와 관련된 객체입니다. |
| object | 인터페이스 설정입니다(객체). |
| string | 결제 UI의 크기입니다. 가능한 크기:
|
| string | 결제 UI 테마. default , default_dark 또는 사용자 정의 테마 ID일 수 있습니다. |
| string | 장치 유형입니다. desktop (기본값) 또는 mobile 이 가능합니다. |
| object | 데스크톱 버전의 인터페이스 설정입니다(객체). |
| object | 헤더 설정 데이터와 관련된 값입니다. |
| boolean | 페이 스테이션 데스크톱에 닫기 버튼을 표시할지를 설정합니다. 이 버튼은 페이 스테이션을 종료하고 settings.return_url 매개 변수에 지정된 URL로 사용자를 리디렉션합니다. 기본값은 false 입니다. |
| boolean | 결제 UI에 헤더가 표시되는지 여부를 나타냅니다. |
| string | 헤더의 외관입니다. compact (이 경우 게임 이름과 사용자 ID는 헤더에 표시하지 않음) 혹은 normal 일 수 있습니다. |
| boolean | true 일 경우, 로고가 헤더에 표시됩니다(먼저 고객 성공 매니저에게 이미지 파일을 제공하세요). |
| boolean | 프로젝트 이름이 헤더에 표시되는지 여부를 나타냅니다. |
| string | 헤더를 표시하는 설정 방식입니다. compact (프로젝트 이름 및 사용자 ID 표지 안 함) 또는 normal (기본값)을 설정할 수 있습니다. |
| string | 사용자는 오직 저장된 결제 방법을 사용해서 결제할 수 있습니다. saved_accounts 일 수 있습니다. |
| boolean | 모바일 버전의 결제 UI에서 바닥글을 표시하거나 숨길지 여부입니다. |
| boolean | 페이 스테이션 모바일에 닫기 버튼을 표시할지를 설정합니다. 이 버튼은 페이 스테이션을 종료하고 settings.return_url 매개 변수에 지정된 URL로 사용자를 리디렉션합니다. 기본값은 false 입니다. |
| string | 페이 스테이션의 인터페이스 모드. user_account 만 가능합니다. 헤더는 계정 탐색 메뉴만 포함할 수 있으며 사용자는 제품을 선택하거나 결제를 할 수 없습니다. 이 모드는 데스크톱에서만 사용 가능합니다. |
| string | 선호하는 결제 통화입니다. 3자리 ISO 4217 통화 코드입니다. |
| string | 게임의 트랜잭션 ID 입니다. 각 사용자 결제별로 고유해야 합니다. |
| integer | 결제 방식 ID입니다. 결제 방식 ID 목록은 관리자 페이지에서 가져올 수 있습니다. |
| string | 결제 후 사용자를 리디렉션하는 페이지입니다. 매개 변수 user_id , foreigninvoice , invoice_id , status 가 링크에 자동으로 추가됩니다. |
| object | 리디렉션 정책 설정입니다(객체). |
| string | 결제 후 사용자를 반환 URL로 리디렉션하는 결제 상태입니다. none , successful , successful_or_canceled 혹은 any 일 수 있습니다. |
settings.redirect_policy.delay | integer | 사용자가 복귀 URL로 자동 재지정된 이후 지연 시간(초). |
| string | 결제 후 사용자를 반환 URL로 리디렉션하는 결제 상태입니다. none , successful , successful_or_canceled 혹은 any 일 수 있습니다. |
| string | 수동 리디렉션 버튼 텍스트입니다. |
Copy
- curl
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
- javascript
{
"link_to_ps": "https://secure.xsolla.com/paystation2/?access_token=<access_token>"
}
이 기사가 도움이 되었나요?
의견을 보내 주셔서 감사드립니다!
메시지를 검토한 후 사용자 경험 향상에 사용하겠습니다.오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.