# 11. V21로 원스토어 인앱결제 업그레이드 하기

### v19에서 v21로 업그레이드 하기 <a href="#id-11.v21-v19-v21" id="id-11.v21-v19-v21"></a>

#### 결제 라이브러리 변경하기 <a href="#id-11.v21" id="id-11.v21"></a>

원스토어 InApp Purchase(IAP) SDK는 v21버전부터 maven을 통한 배포를 제공하고 있습니다.

maven을 통해 IAP library를 사용하고 싶은 경우 다음의 내용에 따라 변경을 해야합니다.

* v19 AAR 파일 삭제
  * Project의 libs 폴더의 iap\_sdk-v19.XX.XX.aar 파일을 삭제합니다.&#x20;
* &#x20;maven 종속성 추가

  <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>원스토어 IAP SDK 저장소는 <strong>2026년 4월 1일부터 Maven Central로 이관됩니다.</strong></p><p>자세한 내용은 <a href="https://dev.onestore.net/devpoc/support/news/noticeView.omp?noticeId=33714">원스토어 IAP SDK 저장소 이관 안내</a>를 참고하시기 바랍니다.</p></div>

  * 프로젝트의 최상위 *build.gradle* 파일에 원스토어 결제 라이브러리 종속 항목을 추가합니다.

    ```
    allprojects {
        repositories {
            ...
            mavenCentral() 
        }
    }
    ```

  * 앱의 *build.gradle* 파일에 원스토어 결제 라이브러리 종속 항목을 추가합니다.

    ```gradle

    dependencies {
        def onestore_iap_version = "21.04.00"
        implementation "com.onestorecorp.sdk:sdk-iap:$onestore_iap_version"
    }

    ```

#### Json file 변경하기 <a href="#id-11.v21-jsonfile" id="id-11.v21-jsonfile"></a>

원스토어는 IAP SDK v19부터 SDK에서 사용하기 위한 필수 param들을 global-appstores.json을 통해 제공하였습니다.

v21부터는 좀더 편리하게 해당 값을 적용하기 위해 maven으로 해당 값을 배포하고 있습니다.

해당 내용을 변경하기 위해서는 다음을 따라 주세요.

* global-appstores.json 삭제
  * Project의 assets 폴더의 global-appstores.json파일을 삭제합니다.&#x20;
* &#x20;maven 종속성 추가
  * 프로젝트 최상위 *build.gradle* 파일에 원스토어 maven 주소를 등록합니다.

    ```gradle

    allprojects {
        repositories {
            ...
            maven { url 'https://repo.onestore.net/repository/onestore-sdk-public' }
        }
    }

    ```
  * 다음은 앱의 *build.gradle* 파일에 원스토어 결제 라이브러리 종속 항목을 추가합니다.

    ```gradle

    dependencies {
        def onestore_configuration_version = "1.0.0"
        implementation "com.onestorecorp.sdk:sdk-configuration-kr:$onestore_configuration_version"
    }

    ```

#### Deprecated 항목 수정하기 <a href="#id-11.v21-deprecated" id="id-11.v21-deprecated"></a>

v21 SDK에서 다음의 항목들이 Deprecated 되었습니다.

사용하는데는 문제는 없으나, 추후 원활한 사용을 위해 변경이 필요합니다.

* Interface

  | name              | description                                                   |
  | ----------------- | ------------------------------------------------------------- |
  | PurchasesListener | v21부턴 ~~PurchasesListener~~ 대신 QueryPurchasesListener를 사용하세요. |
* Method

  <table><thead><tr><th>class</th><th>method name</th><th>description</th></tr></thead><tbody><tr><td><pre><code>PurchaseClient
  </code></pre><p><br><br></p></td><td>manageRecurringProductAsync</td><td><p>v21부터 Auto(월정액) 상품 대신 Subscription(구독) 상품을 지원하며 정기 결제 메뉴를 통해 해당 기능들을 지원합니다.</p><p>정기 결제 메뉴의 경우 월정액 상품을 지원하지 않기 때문에 해당 API를 이용하여 이용해지 예약/취소를 기존처럼 제공해야 합니다.</p><p>구독 상품의 경우 정기 결제 메뉴로 사용자에게 안내하도록 구현이 필요합니다.</p></td></tr><tr><td>launchLoginFlowAsync</td><td><p>인증 관련 flow는 별도의 class로 분리하였습니다.</p><p>자세한 사항은 <a href="../sdk#id-04.-sdk-5">원스토어 로그인하기</a>를 참고하시기 바랍니다.</p></td><td></td></tr></tbody></table>

### v17에서 v21로 업그레이드 하기 <a href="#id-11.v21-v17-v21" id="id-11.v21-v17-v21"></a>

#### 결제 라이브러리 변경하기 <a href="#id-11.v21-.1" id="id-11.v21-.1"></a>

v17에서 v21로 변경 시 라이브러리가 jar 에서 aar로 변경됩니다.

v17 라이브러리를 사용하는 개발사의 경우 v19에서 v21로 업그레이드를 가이드를 통해 maven으로 변경 후, jar 형태에서 aar배포로 바뀐 부분에 대한 추가적인 작업(meta-data 삭제)이 필요합니다.

* v17 jar 라이브러리 삭제
  * Project의 libs폴더의 jar파일을 삭제합니다.&#x20;
* AndroidManifest의 다음의 meta-data 삭제

  hljs.highlightAll();

  ```xml
            
  <meta-data android:name="iap:api_version" android:value="5"/>

  ```
* maven 종속성 추가 : [v19에서 v21로 업그레이드 하기](https://onestore-dev.gitbook.io/dev/tools/billing/v21/upgrade)를 참고하세요. &#x20;

#### Json file 종속성 추가 <a href="#id-11.v21-jsonfile" id="id-11.v21-jsonfile"></a>

v19 이상 부터는 SDK의 동작을 위해 json 파일이 필요합니다. [v19에서 v21로 업그레이드 >  json file 변경하기 > maven종속성 추가](https://onestore-dev.gitbook.io/dev/tools/billing/v21/upgrade) 를 참고하여 Project에 종속성을 추가 해주세요.

#### 변경 사항 수정하기 <a href="#id-11.v21" id="id-11.v21"></a>

[원스토어 인앱결제 SDK 업그레이드 안내](https://onestore-dev.gitbook.io/dev/tools/billing/old-version/v19/undefined-6)를 참고하여 변경 사항을 수정해주세요.

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://onestore-dev.gitbook.io/dev/tools/billing/v21/upgrade.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
