# 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>
