PSN 유저 토큰 발급
기본 정보
- PSN 유저 토큰을 발급하는 API입니다. PSN 콘솔에서 획득한 authorization code(SDK를 통해 전달 받을 수 있음)를 게임서버가 전달하면 빌링 시스템이 access token을 발급받아 보관합니다.(토큰 값은 응답에 미포함)
- 구매 검증(verify) 전 선행 필수입니다. 토큰은 빌링 시스템이 보관하며(TTL 12시간), 만료 시 재발급이 필요합니다.
호출 시점
- PSN 공식개발 문서에서 권고하는 호출 시점은 게임 시작 시점입니다
- 구매 검증(verify)/완료(complete) 응답 body의
resultCode가USER_ACCESS_TOKEN_NOT_VALID(HTTP 200)이면 토큰 미발급·만료·PSN 측 폐기 상태입니다. - PSN 콘솔에서 authorization code를 재취득해 이 API를 다시 호출한 뒤 verify/complete를 재시도하세요.
- HTTP status가 아닌
resultCode로 분기해야 합니다. EXTERNAL_API_ERROR·SYSTEM_ERROR는 토큰 재발급으로 복구되지 않습니다.
| 항목 | 내용 | 비고 |
|---|---|---|
| 호출주체 | 게임서버(s2s API) | |
| 도메인 | 각 환경별 도메인 | |
| 인증 방식 | HTTP 헤더 인증 정보 | 다른 게임서버 API와 동일 |
| HTTP 메소드 | POST | |
| Content-Type | application/x-www-form-urlencoded | |
| 응답 HTTP 코드 | 성공·비즈니스 실패 모두 200 / 빌링 내부 오류(SYSTEM_ERROR) 500 | resultCode로 판단 |
Request
HTTP Request end point
POST https://각 환경별 빌링시스템 도메인/billing/api-game/v1/psn/auth/token
HTTP Request Header
- 아래의 HTTP Header들을 API 요청에 포함시켜야합니다.
| 이름 | 값 | 비고 |
|---|---|---|
| X-Req-Pjid | 프로젝트ID | 기술 PM 등에게 전달받은 프로젝트ID |
| X-Auth-Access-Key | 인증용 키 | 기술 PM 등에게 전달받은 해당 게임용 인증 키 |
HTTP Request Parameter
- 아래 파라미터들을 Content-Type: application/x-www-form-urlencoded 으로 호출하면 됩니다.
| key | type | required | 설명 |
|---|---|---|---|
| pjid | String | Y | 프로젝트ID |
| playerId | String | Y | 구매 검증/완료 요청과 동일한 유저 ID여야 함 |
| authorizationCode | String | Y | PSN 콘솔 클라이언트에서 획득한 인가코드. 최대 128자 - redirect_uri: orbis://games |
Response
- 별도
resultData없이resultCode로 성공 여부를 판단합니다.
Success sample
{ "resultCode": "SUCCESS", "resultMessage": "success" }
실패 응답
- 비즈니스 실패도 HTTP 200으로 응답됩니다. HTTP status가 아닌
resultCode로 분기하세요.SYSTEM_ERROR(500)·NOT_ALLOW_AUTH(인증 헤더 오류)는 전 API 공통.
| resultCode | HTTP | 발생 조건 | 게임서버 처리 |
|---|---|---|---|
| USER_ACCESS_TOKEN_NOT_VALID | 200 | 인가코드 무효·만료·재사용(PSN invalid_grant) | PSN 콘솔에서 새 인가코드 재취득 후 재호출. 인가코드는 1회용 |
| INVALID_PARAMETER | 200 | 필수값 누락, authorizationCode 128자 초과, pjid에 PSN 설정 없음 | 요청값 수정 후 재요청 |
| EXTERNAL_API_ERROR | 200 | PSN Auth API 오류(429 포함)·통신 실패 | 잠시 후 재시도. 지속되면 traceId로 문의 |
{
"resultCode": "USER_ACCESS_TOKEN_NOT_VALID",
"resultMessage": "PSN Auth API invalid_grant. 새 인가코드 재발급 필요.",
"traceId": "billing_01H..."
}
요청 curl 샘플
- 샘플 curl 커맨드입니다. 요청 정보에 맞게 변경해서 호출하세요.
curl -X 'POST' \
'https://API도메인/billing/api-game/v1/psn/auth/token' \
-H 'X-Req-Pjid: PJID값' \
-H 'X-Auth-Access-Key: API 인증키' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'pjid=1201' \
--data-urlencode 'playerId=tester01' \
--data-urlencode 'authorizationCode=PSN에서 획득한 auth code'