You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程方式创建Apple订阅价格变更?

如何通过App Store Connect API创建订阅价格变更?

我尝试通过编程方式修改订阅价格,找到了两个相关API方法:创建价格变更、列出应用的所有价格点。第一个方法需要第二个方法获取的价格点ID,第二个方法返回的价格点格式如下:

{
    "type" : "appPricePoints",
    "id" : "eyJzIjoiMTU2MTYxMTU2OSIsInQiOiJBRkciLCJwIjoiMTAwNDkifQ",
    "attributes" : {
      "customerPrice" : "3.99",
      "proceeds" : "2.8"
    },
    "relationships" : {
      "equalizations" : {
        "links" : {
          "self" : "https://api.appstoreconnect.apple.com/v3/appPricePoints/eyJzIjoiMTU2MTYxMTU2OSIsInQiOiJBRkciLCJwIjoiMTAwNDkifQ/relationships/equalizations",
          "related" : "https://api.appstoreconnect.apple.com/v3/appPricePoints/eyJzIjoiMTU2MTYxMTU2OSIsInQiOiJBRkciLCJwIjoiMTAwNDkifQ/equalizations"
        }
      }
    },
    "links" : {
      "self" : "https://api.appstoreconnect.apple.com/v3/appPricePoints/eyJzIjoiMTU2MTYxMTU2OSIsInQiOiJBRkciLCJwIjoiMTAwNDkifQ"
    }
}

其中价格点ID是包含s、t、p三个字段的JSON的base64编码值。

更新
感谢@inkerdusk,我了解到价格变更是由Apple预先创建的,应直接使用而非自行创建。于是我尝试发送以下请求,分别使用base64值本身或其解码后JSON中的三个字段值:

{
    "data": {
        "attributes": {
        },
        "relationships": {
            "subscription": {
                "data": {
                    "id": "subscription-id",
                    "type": "subscriptions"
                }
            },
            "subscriptionPricePoint": {
                "data": {
                    "id": <HERE_TRIED_TO_SPECIFY_BASE64_ITSELF_OR_ANY_OF_THREE_VALUES_OF_DECODED_JSON>,
                    "type": "subscriptionPricePoints"
                }
            }
        },
        "type": "subscriptionPrices"
    }
}

但每次都会收到如下错误:

{
  "errors" : [ {
    "id" : "466aa984-1491-4da3-8e5d-9b26dc9e844f",
    "status" : "422",
    "code" : "ENTITY_UNPROCESSABLE",
    "title" : "The request entity is not a valid request document object",
    "detail" : "Unexpected or invalid value at 'data.relationships.subscriptionPricePoint.data.id'.",
    "meta" : {
      "position" : {
        "row" : -1,
        "column" : -1
      }
    }
  } ]
}

问题解决方法

核心问题是你误用了资源类型:从「列出应用价格点」接口拿到的是appPricePoints类型的ID,但创建订阅价格变更时,需要关联的是**subscriptionPricePoints类型**的资源ID,两者不能混用。

具体操作步骤:

  1. 获取订阅专属的价格点ID:调用针对订阅的价格点列表接口,获取目标订阅对应的subscriptionPricePoints资源,这类资源的ID才是请求中需要填入的有效值。
  2. 修正请求体:将subscriptionPricePoint.data.id替换为上述获取到的subscriptionPricePoints类型ID,保持type字段为subscriptionPricePoints不变。

修正后的请求体示例:

{
    "data": {
        "attributes": {
            // 可按需添加价格变更属性,比如生效日期"effectiveDate": "2024-01-01T00:00:00Z"
        },
        "relationships": {
            "subscription": {
                "data": {
                    "id": "你的订阅ID",
                    "type": "subscriptions"
                }
            },
            "subscriptionPricePoint": {
                "data": {
                    "id": "从订阅价格点接口获取的ID",
                    "type": "subscriptionPricePoints"
                }
            }
        },
        "type": "subscriptionPrices"
    }
}

补充说明:

  • appPricePoints是应用级的通用价格基准,而subscriptionPricePoints是绑定到具体订阅的价格资源,必须使用后者的ID才能创建有效的价格变更。
  • 如果找不到目标订阅的subscriptionPricePoints,需要先在App Store Connect后台为该订阅配置对应价格点,或通过API创建订阅价格点后再发起变更请求。

内容的提问来源于stack exchange,提问作者Vassily

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 21:57:46