asc-iap
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseasc In-App Purchases
asc 应用内购买(IAP)
Manage IAPs via the CLI.
asc通过 CLI管理IAP。
ascList IAPs
列出IAP
bash
asc iap list --app-id <APP_ID> [--limit N] [--pretty]bash
asc iap list --app-id <APP_ID> [--limit N] [--pretty]Create IAP
创建IAP
bash
asc iap create \
--app-id <APP_ID> \
--reference-name "Gold Coins" \
--product-id "com.app.goldcoins" \
--type consumable--typeconsumablenon-consumablenon-renewing-subscriptionbash
asc iap create \
--app-id <APP_ID> \
--reference-name "Gold Coins" \
--product-id "com.app.goldcoins" \
--type consumable--typeconsumablenon-consumablenon-renewing-subscriptionSubmit IAP for Review
提交IAP审核
bash
asc iap submit --iap-id <IAP_ID>State must be . The affordance appears on only when .
READY_TO_SUBMITsubmitInAppPurchasestate == READY_TO_SUBMITbash
asc iap submit --iap-id <IAP_ID>状态必须为。只有当时,中才会显示操作选项。
READY_TO_SUBMITstate == READY_TO_SUBMITInAppPurchasesubmitIAP Price Points
IAP价格档位
bash
undefinedbash
undefinedList available price tiers (optionally filtered by territory)
列出可用价格档位(可按地区筛选)
asc iap price-points list --iap-id <IAP_ID> [--territory USA]
asc iap price-points list --iap-id <IAP_ID> [--territory USA]
Set price schedule (base territory; Apple auto-prices all other territories)
设置价格方案(基准地区;Apple会自动为其他所有地区定价)
asc iap prices set
--iap-id <IAP_ID>
--base-territory USA
--price-point-id <PRICE_POINT_ID>
--iap-id <IAP_ID>
--base-territory USA
--price-point-id <PRICE_POINT_ID>
Each price point result includes a `setPrice` affordance with the ready-to-run `prices set` command.asc iap prices set
--iap-id <IAP_ID>
--base-territory USA
--price-point-id <PRICE_POINT_ID>
--iap-id <IAP_ID>
--base-territory USA
--price-point-id <PRICE_POINT_ID>
每个价格档位结果中都包含一个`setPrice`操作选项,附带可直接运行的`prices set`命令。IAP Localizations
IAP本地化
bash
undefinedbash
undefinedList
列出
asc iap-localizations list --iap-id <IAP_ID>
asc iap-localizations list --iap-id <IAP_ID>
Create
创建
asc iap-localizations create
--iap-id <IAP_ID>
--locale en-US
--name "Gold Coins"
[--description "In-game currency"]
--iap-id <IAP_ID>
--locale en-US
--name "Gold Coins"
[--description "In-game currency"]
undefinedasc iap-localizations create
--iap-id <IAP_ID>
--locale en-US
--name "Gold Coins"
[--description "In-game currency"]
--iap-id <IAP_ID>
--locale en-US
--name "Gold Coins"
[--description "In-game currency"]
undefinedIAP Offer Codes
IAP优惠码
Manage offer codes for in-app purchases. Offer codes let you distribute promotional codes to customers.
管理应用内购买的优惠码。优惠码可用于向用户分发促销码。
List Offer Codes
列出优惠码
bash
asc iap-offer-codes list --iap-id <IAP_ID> [--pretty]bash
asc iap-offer-codes list --iap-id <IAP_ID> [--pretty]Create Offer Code
创建优惠码
bash
asc iap-offer-codes create \
--iap-id <IAP_ID> \
--name "FREEGEMS" \
--eligibility NON_SPENDER \
--eligibility CHURNED_SPENDER--eligibilityNON_SPENDERACTIVE_SPENDERCHURNED_SPENDERbash
asc iap-offer-codes create \
--iap-id <IAP_ID> \
--name "FREEGEMS" \
--eligibility NON_SPENDER \
--eligibility CHURNED_SPENDER--eligibilityNON_SPENDERACTIVE_SPENDERCHURNED_SPENDERUpdate Offer Code (activate/deactivate)
更新优惠码(激活/停用)
bash
asc iap-offer-codes update --offer-code-id <ID> --active falsebash
asc iap-offer-codes update --offer-code-id <ID> --active falseCustom Codes
自定义码
Custom codes are specific redeemable strings (e.g. "FREEGEMS100") tied to an offer code.
bash
undefined自定义码是与优惠码绑定的特定可兑换字符串(例如"FREEGEMS100")。
bash
undefinedList
列出
asc iap-offer-code-custom-codes list --offer-code-id <ID>
asc iap-offer-code-custom-codes list --offer-code-id <ID>
Create
创建
asc iap-offer-code-custom-codes create
--offer-code-id <ID>
--custom-code "FREEGEMS100"
--number-of-codes 500
[--expiration-date 2026-12-31]
--offer-code-id <ID>
--custom-code "FREEGEMS100"
--number-of-codes 500
[--expiration-date 2026-12-31]
asc iap-offer-code-custom-codes create
--offer-code-id <ID>
--custom-code "FREEGEMS100"
--number-of-codes 500
[--expiration-date 2026-12-31]
--offer-code-id <ID>
--custom-code "FREEGEMS100"
--number-of-codes 500
[--expiration-date 2026-12-31]
Deactivate
停用
asc iap-offer-code-custom-codes update --custom-code-id <ID> --active false
undefinedasc iap-offer-code-custom-codes update --custom-code-id <ID> --active false
undefinedOne-Time Use Codes
一次性使用码
Generated code batches — Apple creates unique codes for distribution.
bash
undefined生成的代码批次 —— Apple会创建唯一的代码用于分发。
bash
undefinedList
列出
asc iap-offer-code-one-time-codes list --offer-code-id <ID>
asc iap-offer-code-one-time-codes list --offer-code-id <ID>
Create
创建
asc iap-offer-code-one-time-codes create
--offer-code-id <ID>
--number-of-codes 3000
--expiration-date 2026-06-30
--offer-code-id <ID>
--number-of-codes 3000
--expiration-date 2026-06-30
asc iap-offer-code-one-time-codes create
--offer-code-id <ID>
--number-of-codes 3000
--expiration-date 2026-06-30
--offer-code-id <ID>
--number-of-codes 3000
--expiration-date 2026-06-30
Deactivate
停用
asc iap-offer-code-one-time-codes update --one-time-code-id <ID> --active false
undefinedasc iap-offer-code-one-time-codes update --one-time-code-id <ID> --active false
undefinedCAEOAS Affordances
CAEOAS Affordances
Every IAP response embeds ready-to-run follow-up commands:
json
{
"affordances": {
"listLocalizations": "asc iap-localizations list --iap-id <ID>",
"createLocalization": "asc iap-localizations create --iap-id <ID> --locale en-US --name <name>",
"listOfferCodes": "asc iap-offer-codes list --iap-id <ID>",
"listPricePoints": "asc iap price-points list --iap-id <ID>",
"submit": "asc iap submit --iap-id <ID>"
}
}submitstate == READY_TO_SUBMITsetPriceIAP Offer Code affordances:
json
{
"affordances": {
"listOfferCodes": "asc iap-offer-codes list --iap-id <ID>",
"listCustomCodes": "asc iap-offer-code-custom-codes list --offer-code-id <ID>",
"listOneTimeCodes":"asc iap-offer-code-one-time-codes list --offer-code-id <ID>",
"deactivate": "asc iap-offer-codes update --offer-code-id <ID> --active false"
}
}deactivateisActive == true每个IAP响应中都嵌入了可直接运行的后续命令:
json
{
"affordances": {
"listLocalizations": "asc iap-localizations list --iap-id <ID>",
"createLocalization": "asc iap-localizations create --iap-id <ID> --locale en-US --name <name>",
"listOfferCodes": "asc iap-offer-codes list --iap-id <ID>",
"listPricePoints": "asc iap price-points list --iap-id <ID>",
"submit": "asc iap submit --iap-id <ID>"
}
}只有当时才会显示。只有当地区已知时,每个价格档位才会包含。
state == READY_TO_SUBMITsubmitsetPriceIAP优惠码可用操作:
json
{
"affordances": {
"listOfferCodes": "asc iap-offer-codes list --iap-id <ID>",
"listCustomCodes": "asc iap-offer-code-custom-codes list --offer-code-id <ID>",
"listOneTimeCodes":"asc iap-offer-code-one-time-codes list --offer-code-id <ID>",
"deactivate": "asc iap-offer-codes update --offer-code-id <ID> --active false"
}
}只有当时才会显示。
isActive == truedeactivateResolve App ID
获取App ID
See project-context.md — check before asking the user or running .
.asc/project.jsonasc apps list参考project-context.md —— 在询问用户或运行之前,请检查。
asc apps list.asc/project.jsonTypical Workflow
典型工作流
bash
APP_ID=$(cat .asc/project.json 2>/dev/null | jq -r '.appId // empty')bash
APP_ID=$(cat .asc/project.json 2>/dev/null | jq -r '.appId // empty')If empty: ask user or run asc apps list | jq -r '.data[0].id'
asc apps list | jq -r '.data[0].id'如果为空:询问用户或运行asc apps list | jq -r '.data[0].id'
asc apps list | jq -r '.data[0].id'1. Create a consumable IAP
1. 创建可消耗型IAP
IAP_ID=$(asc iap create
--app-id "$APP_ID"
--reference-name "Gold Coins"
--product-id "com.app.goldcoins"
--type consumable
| jq -r '.data[0].id')
--app-id "$APP_ID"
--reference-name "Gold Coins"
--product-id "com.app.goldcoins"
--type consumable
| jq -r '.data[0].id')
IAP_ID=$(asc iap create
--app-id "$APP_ID"
--reference-name "Gold Coins"
--product-id "com.app.goldcoins"
--type consumable
| jq -r '.data[0].id')
--app-id "$APP_ID"
--reference-name "Gold Coins"
--product-id "com.app.goldcoins"
--type consumable
| jq -r '.data[0].id')
2. Add localizations
2. 添加本地化
asc iap-localizations create --iap-id "$IAP_ID" --locale en-US --name "Gold Coins" --description "In-game currency"
asc iap-localizations create --iap-id "$IAP_ID" --locale zh-Hans --name "金币"
asc iap-localizations create --iap-id "$IAP_ID" --locale en-US --name "Gold Coins" --description "In-game currency"
asc iap-localizations create --iap-id "$IAP_ID" --locale zh-Hans --name "金币"
3. Set pricing and submit
3. 设置定价并提交
PRICE_ID=$(asc iap price-points list --iap-id "$IAP_ID" --territory USA
| jq -r '.data[] | select(.customerPrice == "0.99") | .id') asc iap prices set --iap-id "$IAP_ID" --base-territory USA --price-point-id "$PRICE_ID" asc iap submit --iap-id "$IAP_ID"
| jq -r '.data[] | select(.customerPrice == "0.99") | .id') asc iap prices set --iap-id "$IAP_ID" --base-territory USA --price-point-id "$PRICE_ID" asc iap submit --iap-id "$IAP_ID"
PRICE_ID=$(asc iap price-points list --iap-id "$IAP_ID" --territory USA
| jq -r '.data[] | select(.customerPrice == "0.99") | .id') asc iap prices set --iap-id "$IAP_ID" --base-territory USA --price-point-id "$PRICE_ID" asc iap submit --iap-id "$IAP_ID"
| jq -r '.data[] | select(.customerPrice == "0.99") | .id') asc iap prices set --iap-id "$IAP_ID" --base-territory USA --price-point-id "$PRICE_ID" asc iap submit --iap-id "$IAP_ID"
4. Create an offer code with custom codes
4. 创建带自定义码的优惠码
OC_ID=$(asc iap-offer-codes create
--iap-id "$IAP_ID"
--name "LAUNCH_PROMO"
--eligibility NON_SPENDER
--eligibility CHURNED_SPENDER
| jq -r '.data[0].id')
--iap-id "$IAP_ID"
--name "LAUNCH_PROMO"
--eligibility NON_SPENDER
--eligibility CHURNED_SPENDER
| jq -r '.data[0].id')
asc iap-offer-code-custom-codes create
--offer-code-id "$OC_ID"
--custom-code "LAUNCH2026"
--number-of-codes 1000
--expiration-date 2026-12-31
--offer-code-id "$OC_ID"
--custom-code "LAUNCH2026"
--number-of-codes 1000
--expiration-date 2026-12-31
OC_ID=$(asc iap-offer-codes create
--iap-id "$IAP_ID"
--name "LAUNCH_PROMO"
--eligibility NON_SPENDER
--eligibility CHURNED_SPENDER
| jq -r '.data[0].id')
--iap-id "$IAP_ID"
--name "LAUNCH_PROMO"
--eligibility NON_SPENDER
--eligibility CHURNED_SPENDER
| jq -r '.data[0].id')
asc iap-offer-code-custom-codes create
--offer-code-id "$OC_ID"
--custom-code "LAUNCH2026"
--number-of-codes 1000
--expiration-date 2026-12-31
--offer-code-id "$OC_ID"
--custom-code "LAUNCH2026"
--number-of-codes 1000
--expiration-date 2026-12-31
5. Or generate one-time use codes
5. 或生成一次性使用码
asc iap-offer-code-one-time-codes create
--offer-code-id "$OC_ID"
--number-of-codes 5000
--expiration-date 2026-12-31
--offer-code-id "$OC_ID"
--number-of-codes 5000
--expiration-date 2026-12-31
undefinedasc iap-offer-code-one-time-codes create
--offer-code-id "$OC_ID"
--number-of-codes 5000
--expiration-date 2026-12-31
--offer-code-id "$OC_ID"
--number-of-codes 5000
--expiration-date 2026-12-31
undefinedState Semantics
状态语义
InAppPurchaseState| Boolean | True when state is |
|---|---|
| |
| |
| |
IAPCustomerEligibilityNON_SPENDERACTIVE_SPENDERCHURNED_SPENDERNil optional fields (, , ) are omitted from JSON output.
descriptionstatetotalNumberOfCodesInAppPurchaseState| 布尔值 | 为True时的状态 |
|---|---|
| |
| |
| |
IAPCustomerEligibilityNON_SPENDERACTIVE_SPENDERCHURNED_SPENDER可为空的字段(、、)不会出现在JSON输出中。
descriptionstatetotalNumberOfCodes