# 数据类型说明

> phone | 2in1 | tablet | tv | wearable

## PurchaseOrderPayload

> phone | 2in1 | tablet | tv | wearable

购买数据模型，支持消耗型商品、非消耗型商品、自动续期订阅商品和非续期订阅商品。

|参数|是否必选|类型|说明|
|:--------------------------------|:---|:------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|environment|是|String|环境类型。 - NORMAL：生产环境 - SANDBOX：沙盒环境|
|purchaseOrderId|是|String|具体一笔订单中对应的购买订单号ID。最大长度256。|
|purchaseToken|是|String|购买token，在购买消耗型/非消耗型/非续期订阅商品场景中与具体购买订单一一对应，在自动续期订阅商品场景中与订阅ID一一对应。一个购买令牌（purchaseToken）只能发货一次，对购买令牌（purchaseToken）需要进行发货次数限制，否则可能会导致某些场景下向用户多次发货，造成损失。最大长度256。|
|applicationId|是|String|应用ID，获取方式参见[配置应用身份信息](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/iap-config-app-identity-info)。|
|productId|是|String|商品ID。|
|productType|是|String|商品类型。具体取值如下： 0：消耗型商品 1：非消耗型商品 2：自动续期订阅商品 3：非续期订阅商品|
|quantity|否|Long|购买的商品数量。仅适用于消耗型商品和非续期订阅型商品的批量购买场景。 一次请求数量不超过10个。 **说明：** 如果开发者使用了quantity参数以支持商品的批量购买，则需要在发货时校验下单的商品数量和最终发货商品数量是否一致，避免造成漏发、多发的情况。 **元服务API：** 从版本5.0.3(15)开始，该接口支持在元服务中使用。 **起始版本：** 5.0.3(15)|
|purchaseTime|是|Long|购买时间，UTC时间戳，以毫秒为单位。 如果没有完成购买，则没有值。|
|finishStatus|否|String|发货状态。具体取值如下： 1：已发货 2：未发货|
|needFinish|否|Boolean|是否需要确认发货，完成购买。具体取值如下： - true：必须确认发货，完成购买 - false：可选确认发货，完成购买|
|price|是|Long|价格，单位：分。|
|currency|是|String|币种，请参见[ISO 4217](https://www.iso.org/iso-4217-currency-codes.html)标准。例如CNY、USD、MYR。|
|developerPayload|否|String|商户侧保留信息，由开发者在调用[支付接口](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/iap-iap#iapcreatepurchase)时传入。|
|purchaseOrderRevocationReasonCode|否|String|购买订单撤销原因。 0：其他 1：用户遇到问题退款|
|revocationTime|否|Long|购买订单撤销时间，UTC时间戳，以毫秒为单位。|
|offerTypeCode|否|String|优惠类型。 消耗型/非消耗型/非续期订阅商品: 1：优惠促销 自动续期订阅商品： 1：推介促销 2：优惠促销 4：挽留促销|
|offerId|否|String|优惠ID。|
|countryCode|是|String|国家/地区码，用于区分国家/地区信息，请参见[ISO 3166](https://www.iso.org/iso-3166-country-codes.html)标准。|
|signedTime|是|Long|签名时间，UTC时间戳，以毫秒为单位。|

以下参数只在自动续期订阅商品场景返回：

|参数|是否必选|类型|说明|
|:-------------------|:---|:-----|:------------------------------------------------------------------------------------------------------------------------------------------------------------|
|subGroupGenerationId|是|String|订阅组的代ID。 - 用户切换订阅商品时，此ID不会改变。 - 订阅失效且超出[保留期](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/iap-subscription-functions#保留期)后，用户重新购买商品时，此ID会改变。|
|subscriptionId|是|String|商品的订阅ID。以下场景，此ID会发生改变： - 用户切换订阅商品时。 - 订阅失效且超出[保留期](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/iap-subscription-functions#保留期)后，用户重新购买商品时。|
|subGroupId|是|String|订阅型商品所属的商品组ID。|
|duration|是|String|此次购买的有效周期，采用[ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)格式。例如：P1W表示一周，P1M表示一个月。|
|durationTypeCode|是|String|订阅周期段类型。 0：正常周期段 1：延期段|

## PurchaseReservedInfo

> phone | 2in1 | tablet | tv | wearable

购买优惠策略扩展信息。

|参数|是否必选|类型|说明|
|:----------|:---|:----------|:------|
|productItem|是|ProductItem|购买商品信息。|
|offerInfo|是|OfferInfo|优惠策略参数。|

## ProductItem

> phone | 2in1 | tablet | tv | wearable

购买商品信息。

|参数|是否必选|类型|说明|
|:------------|:---|:-----|:-----------------------------------------------------------------------------------------------------------------|
|applicationId|是|String|应用ID，获取方式参见[配置应用身份信息](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/iap-config-app-identity-info)。|
|productId|是|String|商品ID。|

## OfferInfo

> phone | 2in1 | tablet | tv | wearable

优惠策略参数。

|参数|是否必选|类型|说明|
|:------------------|:---|:-----|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|offerId|是|String|优惠ID。优惠ID来源于开发者在AppGallery Connect中配置商品信息时设置优惠促销信息，配置的优惠ID，具体请参见[设置促销价格](https://developer.huawei.com/consumer/cn/doc/app/set-0000001931995712)。|
|applicationUserName|否|String|用户账户相关联的混淆字符串，唯一标识用户，传递优惠ID场景，可以传递该字段，若传递了本字段则需在[PurchaseParameter](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/iap-iap#purchaseparameter)请求参数中传递一个相同的applicationUserName。|
|nonce|是|String|唯一的UUID，由开发者生成，全小写，需要保证系统内全局唯一。|

