# 将One store In-App支付升级至V21

## 从v19升级至v21 <a href="#id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-cong-v19-sheng-ji-zhi-v21" id="id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-cong-v19-sheng-ji-zhi-v21"></a>

### 变更支付library <a href="#id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-bian-geng-zhi-fu-library" id="id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-bian-geng-zhi-fu-library"></a>

ONE store In-App Purchase(IAP) SDK从v21版本开始提供通过maven的发布。

如想要通过maven使用IAP library，请根据以下内容进行更改。

* 删除v19 AAR文件
  * 删除Project的libs文件夹中的iap\_sdk-v19.XX.XX.aar文件。
* 添加maven从属性&#x20;

  <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>ONE Store IAP SDK 存储库将于 <strong>2026 年 4 月 1 日</strong> 起迁移至 <strong>Maven Central</strong>。</p><p>详细信息请参考 <a href="https://dev.onestore.net/devpoc/support/news/noticeView.omp?noticeId=33714">Notice on Migration of ONE store IAP SDK Repository</a></p></div>

  * 在项目的顶层 `build.gradle` 文件中添加 ONE store 计费库依赖项。

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

  * 以下是在应用软件的*build.gradle*文件中添加ONE store支付library从属项目。

    ```gradle

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

    ```

### 变更Json file <a href="#id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-bian-geng-jsonfile" id="id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-bian-geng-jsonfile"></a>

ONE store从IAP SDK v19开始， 通过global-appstores.json提供SDK使用时必备 param。

从v21开始为了更方便地应用相应值，通过maven发布相应值。

为了变更相关内容，请按照以下内容进行。

* 删除global-appstores.json<br>
  * 删除Project的assets文件夹中的global-appstores.json文件
* 添加maven从属性
  * 在project最上面*build.gradle*文件中注册ONE store的maven地址。&#x20;

    ```gradle

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

    ```
  * 以下是在应用软件的*build.gradle*文件中添加ONE store支付library从属项目。

    ```gradle

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

    ```

### 修改Deprecated项目 <a href="#id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-xiu-gai-deprecated-xiang-mu" id="id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-xiu-gai-deprecated-xiang-mu"></a>

v21 SDK中的以下项目已被Deprecated。

使用上没有问题，但是为了以后的顺利使用需要变更。

* Interface&#x20;

  | **name**          | **description**                                          |
  | ----------------- | -------------------------------------------------------- |
  | PurchasesListener | 从v21开始，不使用PurchasesListener ，请使用 QueryPurchasesListener。 |
* Method

  | **class**                  | **method name**             | **description**                                                                                                                          |
  | -------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
  | <p>PurchaseClient<br> </p> | manageRecurringProductAsync | <p>从v21开始支持Subscription(订阅)商品，而不支持Auto(包月型)商品，通过定期支付菜单支持相应功能。<br>定期支付菜单不支持包月型商品，因此必须使用相应API提供使用解除的预约/取消。<br>订阅商品则需要体现为通过定期支付菜单向用户说明。</p> |
  | <p><br></p>                | launchLoginFlowAsync        | <p>认证相关的flow被分离为单独的 class。<br>详情请参考InApp Auth运行指南</p>                                                                                    |

## 从v17升级至v21 <a href="#id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-cong-v17-sheng-ji-zhi-v21" id="id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-cong-v17-sheng-ji-zhi-v21"></a>

### 变更支付library <a href="#id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-bian-geng-zhi-fu-library.1" id="id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-bian-geng-zhi-fu-library.1"></a>

从v17变更为v21时，library从jar变更为aar。

使用v17 library的开发公司，通过指南将v19升级至v21变更为maven后，需要对从jar形态转换为aar发布的部分进行追加操作(删除meta-data)。

* 删除v17 jar library <br>
  * 删除Project的libs文件夹中的jar文件
* 删除AndroidManifest的以下meta-data&#x20;

  ```xml

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

  ```
* 添加maven从属性 : 参考从v19升级至v21&#x20;

### 添加Json file从属性 <a href="#id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-tian-jia-jsonfile-cong-shu-xing" id="id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-tian-jia-jsonfile-cong-shu-xing"></a>

v19以上开始，SDK的操作需要json文件。请参考[从v19升级至v21 > 变更json file > 添加maven从属性](#id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-tian-jia-jsonfile-cong-shu-xing)在Project里添加从属性。

### 修改变更事项 <a href="#id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-xiu-gai-bian-geng-shi-xiang" id="id-jiang-onestoreinapp-zhi-fu-sheng-ji-zhi-v21-xiu-gai-bian-geng-shi-xiang"></a>

请参考[ONE store In-App支付SDK升级指南](https://onestore-dev.gitbook.io/dev/chi/tools/billing/v21/upgrade)修改变更事项。&#x20;
