Skip to Content

Licenses

구매자 앱·서버에서 라이선스 키의 유효성을 검증하고, 디바이스를 활성화·비활성화할 수 있어요.
모든 호출은 키가 묶인 스토어의 라이선스만 다뤄요.

키 검증

POSThttps://api.payri.kr/v1/licenses/verifyscope licenses:read

키의 현재 상태를 확인해요.
activationId를 함께 보내면 해당 활성화의 마지막 검증 시각을 갱신해요.

curl -X POST https://api.payri.kr/v1/licenses/verify \ -H "X-Api-Key: pk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "key": "pyr_live_xxxxxxxxxxxxxxxxxxxxxxxx", "activationId": "act_91b" }'

응답의 result로 분기하세요.

result의미
valid사용 가능
expired만료
revoked폐기됨
not_found해당 스토어에 없는 키
{ "result": "valid", "license": { "id": "lic_4a2", "key": "pyr_live_xxxxxxxxxxxxxxxxxxxxxxxx", "productId": "prod_88x", "productName": "MeetNote Solo", "status": "active", "maxActivations": 3, "activations": [ { "id": "act_91b", "activatedAt": "2026-06-10T00:00:00.000Z", "label": "MacBook Pro" } ], "issuedAt": "2026-06-01T00:00:00.000Z", "verificationLog": [ { "at": "2026-06-16T03:20:00.000Z", "result": "valid", "activationId": "act_91b" } ] } }

result: "not_found"license 필드는 없어요.
존재하지 않는 키는 에러가 아니라 not_found 결과로 응답해요.

활성화

POSThttps://api.payri.kr/v1/licenses/activatescope licenses:write

키를 디바이스·서버에 켜요.
activationId를 직접 주면 그 ID로 등록하고, 생략하면 서버가 발급해요.
같은 activationId로 다시 호출하면 새로 만들지 않고 그대로 둬요(멱등).

curl -X POST https://api.payri.kr/v1/licenses/activate \ -H "X-Api-Key: pk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "key": "pyr_live_xxxxxxxxxxxxxxxxxxxxxxxx", "activationId": "act_91b", "label": "MacBook Pro" }'
필드타입필수설명
keystring라이선스 키
activationIdstring활성화 식별자(보통 디바이스 UUID)
labelstring사람이 읽는 라벨 (예: production server)

성공하면 검증 응답의 license와 같은 형태의 라이선스 객체가 와요.
활성화 수가 maxActivations를 넘으면 409 MAX_ACTIVATIONS_REACHED로 막혀요.
폐기·만료된 키는 활성화할 수 없어요.
maxActivations0이면 활성화 수 제한이 없어요.

비활성화

POSThttps://api.payri.kr/v1/licenses/deactivatescope licenses:write

활성화 한 건을 해제해요.
해제하면 활성화 수가 줄어 다른 디바이스를 켤 수 있어요.
activationId는 필수이고, 성공하면 갱신된 라이선스 객체가 와요.

curl -X POST https://api.payri.kr/v1/licenses/deactivate \ -H "X-Api-Key: pk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "key": "pyr_live_xxxxxxxxxxxxxxxxxxxxxxxx", "activationId": "act_91b" }'

라이선스 관련 에러

코드HTTP상황
LICENSE_NOT_FOUND404해당 스토어에 없는 키
LICENSE_REVOKED409폐기된 키를 활성화 시도
LICENSE_EXPIRED409만료된 키를 활성화 시도
MAX_ACTIVATIONS_REACHED409활성화 가능 수 초과
ACTIVATION_NOT_FOUND404없거나 이미 해제된 활성화를 비활성화 시도

발급 방식 자체(자동 발급·webhook·pool·shared)는 라이선스 연동에서 다뤄요.

Last updated on