购买数据模型,支持消耗型商品、非消耗型商品。
| 名称 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
| applicationId | 是 | number | 应用ID。最小长度为1,最大长度为64。 |
| applicationIdString | 是 | string | 字符串应用ID。最小长度为1,最大长度为64。 |
| autoRenewing | 是 | boolean | 是否自动续订。 - true:表示自动续订。 - false:表示非自动续订。 |
| orderId | 是 | string | 订单ID,唯一标识一笔需要收费的订单,由IAP服务器在创建订单以及自动续期订阅商品续费时生成。 每一笔新的订单都会使用不同的orderId。 |
| kind | 是 | number | 商品类别,取值包括: 0:消耗型商品 1:非消耗型商品 |
| packageName | 否 | string | 应用安装包名。 |
| productId | 是 | string | 商品ID。 说明: 为避免资金损失,开发者在对支付结果验签成功后,必须对其进行校验。 |
| productName | 否 | string | 商品名称。 |
| purchaseTime | 否 | number | 商品购买时间,UTC时间戳,以ms为单位。 如果没有完成购买,则没有值。 |
| purchaseTimeMillis | 否 | number | 历史接口兼容用,同purchaseTime,新接入无需关注本字段。 |
| purchaseState | 是 | number | 订单交易状态。 -1:初始化 0:已购买 1:已取消 2:已退款 3:待处理 |
| developerPayload | 否 | string | 商户侧保留信息,由开发者在调用支付接口时传入。 |
| developerChallenge | 否 | string | 应用发起消耗请求时自定义的挑战字,可唯一标识此次消耗请求。 |
| consumptionState | 否 | number | 消耗状态,取值包括: 0:未消耗 1:已消耗 |
| confirmed | 否 | number | 确认状态,取值包括: 0:未确认 1:已确认 没有值表示不需要确认 说明: 该字段当前仅做兼容用,开发者无需关注。 |
| purchaseToken | 是 | string | 用于唯一标识商品和用户对应关系的购买令牌,在支付完成时由IAP服务器生成。 说明: - 当前92位,后续存在扩展可能,如要进行存储,建议预留128位的长度。 - 如要进行存储,为保证安全,建议加密存储。 |
| purchaseType | 否 | number | 购买类型。 0:沙盒环境(暂不支持)。 1:促销(暂不支持)。 正式购买不会返回该参数。 |
| currency | 否 | string | 币种。例如CNY。 说明: 为避免资金损失,在对支付结果验签成功后,必须对其进行校验 |
| price | 否 | number | 价格,单位:分。价格受如下因素影响: - 开发者在AppGallery Connect中配置的商品价格 - 使用优惠后的价格,优惠类型包含推介促销、优惠促销、挽留促销 - 批量购买商品的总价格 说明: 为避免资金损失,在对支付结果验签成功后,必须对其进行校验。 |
| country | 否 | string | 国家/地区码,用于区分国家/地区信息,请参见ISO 3166标准。 |
| payType | 否 | string | 支付方式,取值请参见payType说明。 |
| payOrderId | 否 | string | 交易单号,用户支付后生成。 |
payType取值说明。
| 取值 | 说明 |
|---|---|
| 0 | 花币。 |
| 4 | 支付宝。 |
| 94 | 华为支付。 |
包含jws格式的订单信息、订阅状态信息。
| 名称 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
| type | 是 | number | 商品类型。 0:消耗型商品 1:非消耗型商品 2:自动续期订阅商品 3:非续期订阅商品 |
| jwsPurchaseOrder | 否 | string | 包含订单信息的JWS格式数据。可参见对返回结果验签解码验签获取相关购买数据的JSON字符串,其包含的参数请参见PurchaseOrderPayload。 |
| jwsSubscriptionStatus | 否 | string | 包含订阅状态信息的JWS格式数据。可参见对返回结果验签解码验签获取相关订阅状态信息的JSON字符串,其包含的参数请参见SubGroupStatusPayload。 |
订单信息模型,支持消耗型商品、非消耗型商品、自动续期订阅商品和非续期订阅商品。
| 参数 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
| environment | 是 | string | 环境类型。 - NORMAL:生产环境 - SANDBOX:沙盒环境 |
| purchaseOrderId | 是 | string | 具体一笔订单中对应的购买订单号ID。最大长度256。 |
| purchaseToken | 是 | string | 购买token,在购买消耗型/非消耗型商品/非续期订阅场景中与具体购买订单一一对应,在自动续期订阅商品场景中与订阅ID一一对应。 |
| applicationId | 是 | string | 应用ID。 |
| productId | 是 | string | 商品ID。 |
| productType | 是 | string | 商品类型。具体取值如下: 0:消耗型商品 1:非消耗型商品 2:自动续期订阅商品 3:非续期订阅商品 |
| quantity | 否 | number | 购买参数。表示所购买消耗型/非续期订阅商品的数量,需满足以下限制。 一次仅针对单商品类型,不支持不同类型混合 一次请求数量不超过10个 说明: 如果开发者使用了quantity参数以支持商品的批量购买,则需要在发货时校验下单的商品数量和最终发货商品数量是否一致,避免造成漏发、多发的情况。 元服务API: 从版本5.0.3(15)开始,该接口支持在元服务中使用。 起始版本: 5.0.3(15) |
| purchaseTime | 是 | number | 购买时间,UTC时间戳,以ms为单位。 如果没有完成购买,则没有值。 |
| finishStatus | 否 | string | 发货状态。具体取值如下: 1:已发货 2:未发货 |
| needFinish | 否 | boolean | 是否需要确认发货,完成购买。具体取值如下: - true:必须确认发货,完成购买 - false:可选确认发货,完成购买 |
| price | 是 | number | 价格,单位:分。价格受如下因素影响: - 开发者在AppGallery Connect中配置的商品价格 - 使用优惠后的价格,优惠类型包含推介促销、优惠促销、挽留促销 - 批量购买商品的总价格 |
| currency | 是 | string | 币种,请参见ISO 4217标准。例如CNY、USD、MYR。 |
| developerPayload | 否 | string | 商户侧保留信息,由开发者在调用支付接口时传入。 |
| purchaseOrderRevocationReasonCode | 否 | string | 购买订单撤销原因。 0:其他 1:用户遇到问题退款 |
| revocationTime | 否 | number | 购买订单撤销时间,UTC时间戳,以ms为单位。 |
| offerTypeCode | 否 | string | 优惠类型。 1:推介促销 2:优惠促销 4:挽留促销 |
| offerId | 否 | string | 优惠ID。 |
| countryCode | 是 | string | 国家/地区码,用于区分国家/地区信息,请参见ISO 3166标准。 |
| signedTime | 是 | number | 签名时间,UTC时间戳,以ms为单位。 |
以下参数只在自动续期订阅商品场景返回:
| 参数 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
| subGroupGenerationId | 是 | string | 订阅组的代ID。 - 用户切换订阅商品时,此ID不会改变。 - 订阅失效且超出保留期后,用户重新购买商品时,此ID会改变。 |
| subscriptionId | 是 | string | 商品的订阅ID。以下场景,此ID会发生改变: - 用户切换订阅商品时。 - 订阅失效且超出保留期后,用户重新购买商品时。 |
| subGroupId | 是 | string | 订阅型商品所属的商品组ID。 |
| duration | 是 | string | 此次购买的有效周期,采用ISO 8601格式。例如:P1W表示一周,P1M表示一个月。 |
| durationTypeCode | 是 | string | 订阅周期段类型。 0:正常周期段 1:延期段 |
订阅组相关的订阅状态信息。
| 名称 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
| environment | 是 | string | 环境类型。 - NORMAL:生产环境 - SANDBOX:沙盒环境 |
| applicationId | 是 | string | 应用ID。 |
| packageName | 是 | string | 应用包名。 |
| subGroupId | 是 | string | 订阅型商品所属的商品组ID。 |
| lastSubscriptionStatus | 否 | object | 订阅组中最后生效的订阅状态SubscriptionStatus,比如A切换B,B切换C,此处是C的订阅状态。 |
| historySubscriptionStatusList | 否 | object[] | 订阅组最近生效的历史订阅状态SubscriptionStatus的列表,按订阅切换时间升序 ,最多包含10条有效订阅状态信息的记录 。比如A切换B,B切换C,这里包含A,B,C三个订阅状态信息。 |
订阅状态信息。
| 名称 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
| subGroupGenerationId | 是 | string | 订阅组的代ID。 - 用户切换订阅商品时,此ID不会改变。 - 订阅失效且超出保留期后,用户重新购买商品时,此ID会改变。 |
| subscriptionId | 是 | string | 商品的订阅ID。以下场景,此ID会发生改变: - 用户切换订阅商品时。 - 订阅失效且超出保留期后,用户重新购买商品时。 |
| purchaseToken | 是 | string | 购买token,在购买消耗型/非消耗型商品以及非续期订阅商品场景中与具体购买订单一一对应,在订阅型商品场景中与订阅ID一一对应。 |
| status | 是 | string | 订阅状态。 1:生效中 2:已到期 3:尝试扣费 5:撤销 |
| expiresTime | 是 | number | 自动续期订阅商品的过期时间,UTC时间戳,以ms为单位。 |
| lastPurchaseOrder | 否 | object | 当前订阅最新的一笔购买订单。购买订单包含的参数请参见PurchaseOrderPayload。 |
| recentPurchaseOrderList | 否 | object[] | 当前订阅最新的购买订单列表,包含续期、折算、延期等产生的购买订单。购买订单包含的参数请参见PurchaseOrderPayload。 |
| renewalInfo | 否 | object | 当前订阅最新的未来扣费计划,包含的参数请参见SubRenewalInfo。 |
订阅的扣费计划信息。
| 名称 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
| environment | 是 | string | 环境类型。 - NORMAL:生产环境 - SANDBOX:沙盒环境 |
| subGroupGenerationId | 是 | string | 订阅组的代ID。 - 用户切换订阅商品时,此ID不会改变。 - 订阅失效且超出保留期后,用户重新购买商品时,此ID会改变。 |
| nextRenewPeriodProductId | 否 | string | 下一个计费周期续订的商品ID。 |
| productId | 是 | string | 当前生效的商品ID。 |
| autoRenewStatusCode | 是 | string | 自动续期状态。 0:关闭 1:打开 |
| hasInBillingRetryPeriod | 是 | boolean | 系统是否还在尝试扣费。 - true:是 - false:否 |
| priceIncreaseStatusCode | 否 | string | 目前涨价状态码。 1:用户暂未同意涨价 2:用户已同意涨价 |
| offerTypeCode | 否 | string | 优惠类型。 1:推介促销 2:优惠促销 4:挽留促销 |
| offerId | 否 | string | 优惠ID。 |
| renewalPrice | 否 | number | 下期续费价格,取消订阅场景下不返回,单位:分。 |
| currency | 否 | string | 币种,请参见ISO 4217标准。例如CNY、USD、MYR。 |
| renewalTime | 否 | number | 续期时间,UTC时间戳,以ms为单位。 |
| expirationIntent | 否 | string | 订阅续期失败的原因。 1:用户取消 2:商品无效 3:签约无效 4:扣费异常 5:用户不同意涨价 6:未知 7:存在未发货的订阅 |