# 将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升级指南](/dev/chi/tools/billing/v21/upgrade.md)修改变更事项。&#x20;


---

# 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/chi/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.
