원스토어 인앱결제 서버 API

원스토어 인앱결제 서버 API란 원스토어에서 결제된 인앱 상품의 데이터를 개발사에 제공하기 위한 Open API를 말합니다. 해당 API를 사용하기 위해서는 OAuth 인증이 필요합니다.

HOST URL

본 문서에서 사용되는 {host}의 URL은 아래와 같습니다.

원스토어 OAuth v2

  • OAuth v2 개요

    • 원스토어 서버 Open API를 연동하기 위해서는 OAuth 인증이 필요합니다.

      • 원스토어 OAuth v2의 이해

      • AccessToken은 원스토어의 Server Open API를 통하여 발급받을 수 있는 값으로 원스토어에서 제공하는 Server Open API 호출시 인증값으로 사용됩니다.

      • AccessToken은 기본적으로 3600초의 유효기간이 있으며, 유효기간이 만료 되거나 600초 미만으로 남은 경우에 getAccessToken()을 호출하면 새로운 AccessToken이 발급됩니다.

      • 기존의 AccessToken도 유효기간이 끝날 때까지는 사용이 가능합니다.

      • 다수의 AccessToken이 발행되는 방식이므로 개발사의 서비스 인스턴스 별로 서로 다른 AccessToken을 취득하고 사용할 수 있는 형태가 됩니다.

      • 일반적인 연동 흐름은 다음과 같습니다.

        AccessToken을 얻는 과정(1번)은 API 호출 시 인증 오류가 발생했을 때 호출하면 됩니다.

      • 원스토어의 Server OpenAPI 의 호출을 위해서는 Authorization Bearer 스킴을 사용하며 호출 샘플은 아래와 같습니다.

        Authorization 헤더에는 위 예제와 같이 Bearer + 공백 + AccessToken이 대소문자 구분하여 정확히 입력되어야 합니다. Bearer의 값은 getAccessToken()을 호출하여 발급받은 AccessToken 값입니다.

      • 잘못된 예

OAuth API 상세

  • AccessToken 발급

    • URI: https://{host}/v2/oauth/token

    • Method: POST, PUT

    • Request Header

      parameter

    • Response Body : JSON 형식

      Request Example

      Response Example

  • AccessToken 발급 예시

    • curl을 사용해서 발급하는 샘플입니다.

      검증(개발) 환경인 Sandbox와 상용환경의 AccessToken은 독립적으로 관리되므로, 환경 별로 AccessToken을 분리하여 관리하셔야 합니다.

서버 API 상세

  • getPurchaseDetails (구매상품 상세조회)

    • Desc: 구매한 상품의 상세정보를 조회합니다.

    • URI: https://{host}/v2/purchase/details/{purchaseId}/{packageName}

    • Method: GET

    • Parameters: String packageName : API를 호출하는 앱의 패키지 네임 (Data Size : 128) String purchaseId : 구매 ID (Data Size : 20)

    • Request Header

      Example

      Request Body: 없음

      Response Body:

      Example

getPurchaseDetailsByProductId (구매상품 상세조회)

  • Desc: 구매한 상품의 상세정보를 조회합니다. 해당 인앱 상품(productId)의 구매가 맞는지 체크 후 응답하므로 더욱 보안성이 높습니다.

  • URI: https://{host}/v2/purchase/details-by-productid/{purchaseId}/{packageName}/{productId}

  • Method: GET

  • Parameters: String packageName : API를 호출하는 앱의 패키지 네임 (Data Size : 128) String purchaseId : 구매 ID (Data Size : 20) String productId : 상품 ID (Data Size : 150)

  • Request Header

    Example

    Request Body: 없음 Response Body:

    Example

getRecurringPurchaseDetails (월정액 상품 구매 상세조회)

  • Desc: 구매 ID 기준, 월정액 상품의 상세정보를 조회합니다.

  • URI: https://{host}/v2/purchase/recurring-details/{purchaseId}/{packageName}

  • Method: GET

  • Parameters: String packageName : API를 호출하는 앱의 패키지 네임 (Data Size : 128) String purchaseId : 구매 ID (Data Size : 20)

  • Request Header

    Example

    Request Body: 없음

    Response Body:

    Example

getLastRecurringPurchaseDetails (월정액 상품 마지막 구매 상세조회)

  • Desc: 월정액 상품의 최초 구매 ID로 해당 상품의 이용종료일 및 마지막(최신) 구매의 상세정보를 조회합니다.

  • URI: https://{host}/v2/purchase/last-recurring-details/{purchaseId}/{packageName}

  • Method: GET

  • Parameters: String packageName : API를 호출하는 앱의 패키지 네임 (Data Size : 128) String purchaseId : 월정액 상품의 첫 구매 ID (Data Size : 20)

  • Request Header

    Example

    Request Body: 없음

    Response Body:

    Example

manageRecurringPaymentStatus (자동결제해지/해지취소)

  • Desc: 자동결제 상태를 변경합니다.(해지 및 해지취소)

  • URI: https://{host}/v2/purchase/manage-payment-status/{purchaseId}/{packageName}/{action}

  • Method: POST

  • Parameters: String packageName : API를 호출하는 앱의 패키지 네임 (Data Size : 128) String purchaseId : 구매 ID (Data Size : 20) String action: 상태 변경 타입. cancel(자동결제 해지), reactivate(자동결제 해지취소) (Data Size : 10)

  • Request Header

    Example

    Request Body: 없음

    Response Body:

    Example

getVoidedPurchases (구매취소 내역조회)

  • Desc: 구매취소내역을 조회합니다.

  • URI: https://{host}/v2/purchase/voided-purchases/{packageName}

  • Method: GET

  • Parameters: String packageName : API를 호출하는 앱의 패키지 네임 (Data Size : 128)

  • Optional Query Parameters :

    • String continuationKey : 구매취소 건이 많을 경우 원스토어 서버에서 이 값을 반환합니다. 응답에 continuationKey가 있을 경우, getVoidedPurchases를 다시 호출하면서 continuationKey를 전달하면 추가 구매취소 내역을 전달받을 수 있습니다. (Data Size : 41)

    • String startTime : 조회하고자 하는 취소건 검색 시작일 (milliseconds). 현재시간기준 과거 1개월까지만 설정가능하며 startTime 단독으로 사용할 경우 endTime은 startTime기준 미래 1개월로 설정됩니다. (Data Size : 13)

    • String endTime : 조회하고자 하는 취소건의 검색 종료일 (milliseconds). 현재시간보다 클 수 없으며 endTime 단독으로 사용할 경우 startTime은 endTime기준 과거 1개월로 설정됩니다. (Data Size : 13)

    • unsigned integer maxResults : 최대조회건수 default 100 (Data Size : 3)

  • Request Header

    Example

    Request Body: 없음

    Response Body:

    Example

consumePurchase (구매상품 소비)

  • Desc: 구매한 상품을 소비한 상태로 변환합니다.

  • URI: https://{host}/v2/purchase/consume/{purchaseId}/{packageName}

  • Method: POST

  • Parameters: String packageName : API를 호출하는 앱의 패키지 네임 (Data Size : 128) String purchaseId : 구매 ID (Data Size : 20)

  • Request Header

    Example

    Request Body: 없음

    Response Body:

    Example

Error Response

  • 서버 API에서는 정상적인 응답외에 Error 발생시, JSON 형식의 별도 Response를 응답합니다. 아래 내용을 참고하시기 바랍니다.

  • Response Body : JSON 형식

    Error Codes

Last updated