# ONE store In-App支付发布说明

### ONE Billing Lab发售 <a href="#id09.onebillinglab-fa-shou" id="id09.onebillinglab-fa-shou"></a>

ONE Billing Lab作为研发工具，帮助ONE store In-App支付库统一测试。

可通过大韩民国、新加坡、台湾、美国各国家/地区的账户登录进行支付测试，不需要为了支付测试安装各国家/地区的所有商店App。

可以不使用实际支付系统，仅使用响应模拟程序功能测试支付流程。

可以在ONE store App或GitHub下载 ONE Billing Lab。

* [在ONE store App安装](https://onesto.re/0001002700)
* [在GitHub安装](https://github.com/ONE-store/one_billing_lab)

{% hint style="info" %}
需要在ONE store研发者中心注册支付测试ID才能进行测试。（Sandbox或商用测试）

ONE Billing Lab会员和ONE store会员一致。可用原有账户在ONE Billing Lab注册，在ONE Billing Lab进行加入/退出会员也按照ONE store会员加入程序。
{% endhint %}

### ONE store In-App支付SDK 21.01 发行

ONE store In-App支付（内部App支付）SDK 21.01 已经发行。

主要变更事项如下。

* 解决了与检测App健全性的网络安全解决方案不兼容的问题。
* 解决了安装有韩国One store App时，下载安装全球One store App动线中发生的加载问题。
* 提供在研发阶段可以改变研发环境的设置。提供以下两种设置,可以选择国内One store和全球One store进行研发的环境。

### **ONE store In-App支付library API V7(SDK V21) 发布** <a href="#onestoreinapp-zhi-fu-fa-bu-shuo-ming-onestoreinapp-zhi-fu-libraryapiv7sdkv21-fa-bu" id="onestoreinapp-zhi-fu-fa-bu-shuo-ming-onestoreinapp-zhi-fu-libraryapiv7sdkv21-fa-bu"></a>

ONE store In-App支付library API V7(SDK V21.00)现已发布，主要变更事项如下。&#x20;

新商品必须应用ONE store In-App支付library API V7(SDK V21)。

应用ONE store In-App支付API V5(SDK V17)以上的应用软件可以迁移到API V7(SDK V21)。

由于ONE store In-App支付API V4(SDK V16)的设计结构与之后的版本完全不同，因此无法迁移到ONE store In-App支付API V6(SDK V19)。

#### 订阅型商品 <a href="#onestoreinapp-zhi-fu-fa-bu-shuo-ming-ding-yue-xing-shang-pin" id="onestoreinapp-zhi-fu-fa-bu-shuo-ming-ding-yue-xing-shang-pin"></a>

代替SDK V19以下版本中使用的包月型商品而提供订阅型商品。

订阅型商品不仅提供用户在ONE store应用软件内直接管理定期支付商品的多种功能，还为开发者提供各种功能，例如为新用户流入的促销活动、定期支付状态变

更的通知功能等。\
&#x20;

### **ONE store In-App支付library API V6(SDK V19) 发布** <a href="#onestoreinapp-zhi-fu-fa-bu-shuo-ming-onestoreinapp-zhi-fu-libraryapiv6sdkv19-fa-bu" id="onestoreinapp-zhi-fu-fa-bu-shuo-ming-onestoreinapp-zhi-fu-libraryapiv6sdkv19-fa-bu"></a>

ONE store In-App支付library API V6(SDK V19.00)现已发布，主要变更事项如下。

新商品必须应用ONE store In-App支付library API V6(SDK V19)。

应用ONE store In-App支付API V5(SDK V17)的应用软件可以迁移到API V6(SDK V19)。

由于ONE store In-App支付API V4(SDK V16)的设计结构与之后的版本完全不同，因此无法迁移到ONE store In-App支付API V6(SDK V19)。

<br>

#### 删除ONE store In-App支付API版本 <a href="#onestoreinapp-zhi-fu-fa-bu-shuo-ming-shan-chu-onestoreinapp-zhi-fu-api-ban-ben" id="onestoreinapp-zhi-fu-fa-bu-shuo-ming-shan-chu-onestoreinapp-zhi-fu-api-ban-ben"></a>

现在，您无需在应用软件的manifest中添加In-App API版本。

In-App支付SDK V19将添加API Version meta-data。

#### 确认购买 <a href="#onestoreinapp-zhi-fu-fa-bu-shuo-ming-que-ren-gou-mai" id="onestoreinapp-zhi-fu-fa-bu-shuo-ming-que-ren-gou-mai"></a>

如果软件使用的是ONE store In-App支付library API  v6（SDK 19）以上版本，则必须在3天内进行购买确认。

如果在3天内无法确认购买，将被认为item无法正常支付，并取消购买。

可以使用以下method之一确认购买：

* 对于消耗性产品，请使用PurchaseClient.consumeAsync()。
* 非消耗性产品，请使用PurchaseClient.acknowledgeAsync()。

对于包月型商品，只需确认首次支付的购买即可。

{% hint style="info" %}
如果应用了ONE store In-App API V6(SDK V19)，则必须在3天内进行购买确认。

请注意，如果3天内未确认购买，购买将被取消。
{% endhint %}

#### 获取市场分类代码 <a href="#onestoreinapp-zhi-fu-fa-bu-shuo-ming-huo-qu-shi-chang-fen-lei-dai-ma" id="onestoreinapp-zhi-fu-fa-bu-shuo-ming-huo-qu-shi-chang-fen-lei-dai-ma"></a>

从IAP library V6开始，为了使用Server to Server API，需要市场分类代码。

可以通过getStoreInfoAsync()获取市场分类代码。

#### 变更PurchaseClient API <a href="#onestoreinapp-zhi-fu-fa-bu-shuo-ming-bian-geng-purchaseclientapi" id="onestoreinapp-zhi-fu-fa-bu-shuo-ming-bian-geng-purchaseclientapi"></a>

|                        | **V5 (SDK V17)**            | **V6(SDK V19)**             |
| ---------------------- | --------------------------- | --------------------------- |
| **与支付模块的连接**           | connect                     | startConnection             |
| **断开与支付模块的连接**         | terminate                   | endConnection               |
| **确认是否支持**             | isBillingSupportedAsync     | X                           |
| **购买In-App商品**         | launchPurchaseFlowAsync     | launchPurchaseFlow          |
| **消费In-App商品**         | consumeAsync                | consumeAsync                |
| **In-App商品购买确认**       | X                           | acknowledgeAsync            |
| **未消费商品的订单（包括每月自动支付）** | queryPurchasesAsync         | queryPurchasesAsync         |
| **In-App商品详情**         | queryProductsAsync          | queryProductDetailsAsync    |
| **更改每月自动支付状态**         | manageRecurringProductAsync | manageRecurringProductAsync |
| **更新或安装支付模块**          | launchUpdateOrInstallFlow   | launchUpdateOrInstallFlow   |
| **调用ONE store登录**      | launchLoginFlowAsync        | launchLoginFlowAsync        |
| **确认市场分类代码**           | X                           | getStoreInfoAsync           |

#### 变更Server API  <a href="#onestoreinapp-zhi-fu-fa-bu-shuo-ming-bian-geng-serverapi" id="onestoreinapp-zhi-fu-fa-bu-shuo-ming-bian-geng-serverapi"></a>

| **区分** | **API目录**             | **API URI**                                                               |                                                                                        | **变更事项**                                                                                                              |
| ------ | --------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
|        |                       | **V6 (SDK V19)**                                                          | **V6 (SDK V19)**                                                                       |                                                                                                                       |
| 变更     | 发放OAuth token         | /v2/oauth/token                                                           | /v6/oauth/token                                                                        | <p>在响应规格里删除status字段<br>使用Http response code检查是否正常(200)</p>                                                            |
| 删除     | 购买商品详情查询              | /v2/purchase/details/{purchaseId}/{packageName}                           | N/A                                                                                    | <p>为加强安全性，删除购买商品详情查询API<br>整合为购买商品详情查询By In-App商品ID</p>                                                               |
| 变更     | 购买商品详情查询By In-App商品ID | /v2/purchase/details-by-productid /{purchaseId}/{packageName}/{productId} | /v6/apps/{packageName}/purchases/inapp/products /{productId}/{purchaseToken}           | 在响应规格里添加 purchaseId, acknowledgeState 字段                                                                              |
| 变更     | 包月型商品购买详情查询           | /v2/purchase/recurring-details/{purchaseId}/{packageName}                 | /v6/apps/{packageName}/purchases/auto/products /{productId}/{purchaseToken}            | <p>在响应规格里添加 acknowledgeState, lastPurchaseId, lastPurchaseState<br>在响应规格里删除price, developerPayload, purchaseState</p> |
| 删除     | 包月型商品最后购买订单详情查询       | /v2/purchase/last-recurring-details/{purchaseId}/{packageName}            | N/A                                                                                    | 整合为包月型商品购买详情查询API                                                                                                     |
| 变更     | 解除自动支付                | /v2/purchase/manage-payment-status/{purchaseId}/{packageName}/cancel      | /v6/apps/{packageName}/purchases/auto/products /{productId}/{purchaseToken}/cancel     | 变更成功处理响应规格                                                                                                            |
| 变更     | 取消解除自动支付              | /v2/purchase/manage-payment-status/{purchaseId}/{packageName}/reactivate  | /v6/apps/{packageName}/purchases/auto/products /{productId}/{purchaseToken}/reactivate | 变更成功处理响应规格                                                                                                            |
| 变更     | 取消购买订单 查询             | /v2/purchase/voided-purchases/{packageName}                               | /v6/apps/{packageName}/voided-purchases                                                | <p>为了提高API的易用性，购买取消订单查询标准(startTime, endTime)从购买日变更为购买取消日<br>在响应规格添加 purchaseToken, marketCode</p>                    |
| 变更     | 消费购买商品                | /v2/purchase/consume/{purchaseId}/{packageName}                           | /v6/apps/{packageName}/purchases/all/products/ {productId}/{purchaseToken}/consume     | 变更成功处理响应规格                                                                                                            |
| 添加     | 购买确认                  | N/A                                                                       | /v6/apps/{packageName}/purchases/all/products/ {productId}/{purchaseToken}/acknowledge | 添加新的购买确认API                                                                                                           |

&#x20;\
&#x20;

#### 变更PNS消息规格  <a href="#onestoreinapp-zhi-fu-fa-bu-shuo-ming-bian-geng-pns-xiao-xi-gui-ge" id="onestoreinapp-zhi-fu-fa-bu-shuo-ming-bian-geng-pns-xiao-xi-gui-ge"></a>

* 为了支持韩币以外的货币，支付金额（price）的数据类型从Number变更为String。
* 为了支持韩币以外的货币，增加了支付金额的货币代码（priceCurrencyCode）。
* 为了支持韩币以外的货币，按支付方式分类的金额（amount）的数据类型从Number改为String。
* 在响应规格中添加了purchaseToken，environment和marketCode字段。

详细规格可在[PNS消息详细变更历史记录](https://onestore-dev.gitbook.io/dev/chi/tools/billing/v21/pns)中查看。\
&#x20;

### **ONE store In-App支付 library API V5(SDK V17)**   <a href="#onestoreinapp-zhi-fu-fa-bu-shuo-ming-onestoreinapp-zhi-fu-libraryapiv5sdkv17" id="onestoreinapp-zhi-fu-fa-bu-shuo-ming-onestoreinapp-zhi-fu-libraryapiv5sdkv17"></a>

* API版本必须在开发公司应用软件的"AndroidManifest.xml"文件中如下注明。
* 有关更多信息，请参见应用In-App支付的前期准备页上的"Android Manifest文件设置"部分。
* 在API V5（SDK V17）中的改进包括:

<table data-header-hidden><thead><tr><th width="145.33333333333331">项目</th><th> 详细改进项目</th><th>说明</th></tr></thead><tbody><tr><td><strong>API</strong></td><td>引入Consume概念</td><td>发生未发放item情况时，提供从应用软件中恢复的逻辑。</td></tr><tr><td></td><td>支持Custom PID</td><td>开发者可以直接输入In-App商品ID(PID)，通过直观的PID创建和操作。</td></tr><tr><td></td><td>提供通用的In-App支付interface</td><td>以其他市场为方向开发的应用软件，无需在编码投入开发时间，即可向ONE store方向启动。</td></tr><tr><td><strong>支付测试环境</strong></td><td>分别提供开发环境和商用环境</td><td><p>提供与开发公司的验证环境相同水平的ONE store支付环境。<br>在开发公司的开发环境中，可以与ONE store Sandbox联合开发/测试，在开发公司的商用环境中，可以在ONE store商用环境中进行实际支付。<br>在ONE store开发者中心以测试ID注册的ID登录到ONE store后，在实际支付的情况下，开发者可以自由地取消购买。</p><table data-header-hidden><thead><tr><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td>区分</td><td><br></td><td>开发者</td><td><br></td></tr><tr><td><br></td><td><br></td><td><strong>开发环境</strong></td><td><strong>商用环境</strong></td></tr><tr><td>ONE store支付环境</td><td><strong>Sandbox</strong></td><td>O</td><td>-</td></tr><tr><td><br></td><td><strong>商用环境 (实际支付)</strong></td><td>-</td><td>O</td></tr></tbody></table></td></tr><tr><td><strong>支付窗口UI</strong></td><td>可选择全屏支付和弹窗支付界面</td><td>您可以选择全屏支付或弹窗支付（弹窗支付指南）。<br>支付界面设置请参考应用In-App支付的前期准备页的"Android Manifest文件设置"部分。</td></tr><tr><td><strong>联动方式</strong></td><td>可选择IAP SDK, AIDL</td><td>除了传统的SDK方法，您还可以使用AIDL直接与OSS进行联动。<br>但是，在没有安装ONE store service（OSS）应用软件的智能手机上，In-App支付不能正常工作。<br>有关安装ONE store service应用软件的内容，请参考应用In-App支付的前期准备页上的"ONE store应用软件安装"部分。</td></tr><tr><td><strong>开发者中心</strong></td><td>改进其他应用市场应用软件商品信息抓取功能</td><td><p>您可以轻松地将已注册的其他应用市场的应用软件商品注册到ONE store。</p><p><br></p></td></tr><tr><td></td><td>提供其他应用市场In-App商品信息导入功能</td><td></td></tr><tr><td><strong>认证中心</strong></td><td>OAuth发放/认证/管理</td><td>加强开发者服务器与ONE store In-App支付服务器联动时的数据安全性。</td></tr></tbody></table>
