# 数据类型说明

#### PurchaseOrderPayload

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

| 参数 | 是否必选 | 类型 | 说明 |
| --- | --- | --- | --- |
| environment | 是 | String | 环境类型。 - NORMAL：生产环境 - SANDBOX：沙盒环境 |
| purchaseOrderId | 是 | String | 具体一笔订单中对应的购买订单号ID。最大长度256。 |
| purchaseToken | 是 | String | 购买token，在购买消耗型/非消耗型/非续期订阅商品场景中与具体购买订单一一对应，在自动续期订阅商品场景中与订阅ID一一对应。一个购买令牌（purchaseToken）只能发货一次，对购买令牌（purchaseToken）需要进行发货次数限制，否则可能会导致某些场景下向用户多次发货，造成损失。最大长度256。 |
| applicationId | 是 | String | 应用ID，获取方式参见配置应用身份信息。 |
| 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标准。例如CNY、USD、MYR。 |
| developerPayload | 否 | String | 商户侧保留信息，由应用在调用支付接口时传入。 |
| purchaseOrderRevocationReasonCode | 否 | String | 购买订单撤销原因。 0：其他 1：用户遇到问题退款 |
| revocationTime | 否 | Long | 购买订单撤销时间，UTC时间戳，以毫秒为单位。 |
| offerTypeCode | 否 | String | 优惠类型。 消耗型/非消耗型/非续期订阅商品: 1：优惠促销 自动续期订阅商品： 1：推介促销 2：优惠促销 4：挽留促销 |
| offerId | 否 | String | 优惠ID。 |
| countryCode | 是 | String | 国家/地区码，用于区分国家/地区信息，请参见ISO 3166标准。 |
| signedTime | 是 | Long | 签名时间，UTC时间戳，以毫秒为单位。 |

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

| 参数 | 是否必选 | 类型 | 说明 |
| --- | --- | --- | --- |
| subGroupGenerationId | 是 | String | 订阅组的代ID。 - 用户切换订阅商品时，此ID不会改变。 - 订阅失效且超出保留期后，用户重新购买商品时，此ID会改变。 |
| subscriptionId | 是 | String | 商品的订阅ID。以下场景，此ID会发生改变： - 用户切换订阅商品时。 - 订阅失效且超出保留期后，用户重新购买商品时。 |
| subGroupId | 是 | String | 订阅型商品所属的商品组ID。 |
| duration | 是 | String | 此次购买的有效周期，采用ISO 8601格式。例如：P1W表示一周，P1M表示一个月。 |
| durationTypeCode | 是 | String | 订阅周期段类型。 0：正常周期段 1：延期段 |

#### PurchaseReservedInfo

购买优惠策略扩展信息。

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

#### ProductItem

购买商品信息。

| 参数 | 是否必选 | 类型 | 说明 |
| --- | --- | --- | --- |
| applicationId | 是 | String | 应用ID，获取方式参见配置应用身份信息。 |
| productId | 是 | String | 商品ID。 |

#### OfferInfo

优惠策略参数。

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