SuperAPI AI 工具集

implement-in-app-purchases

编程与开发

查看项目

更新于 10-16 02:33

技能介绍

用途:在 Unity 项目中实现、配置和调试应用内购买(IAP),依据 com.unity.purchasing 包与 UnityEngine.Purchasing(安全校验用 UnityEngine.Purchasing.Security)命名空间,处理订阅、收据校验以及通过 Stripe 或 Coda 的直客(D2C)支付(需 v5.4+)。

主要能力:Unity IAP 有独立初始化路径,使用 UnityIAPServices.StoreController() → store.Connect(),不依赖 UnityServices.InitializeAsync(),但可与其它 UGS 服务共存;若存在 Analytics 并调用了 InitializeAsync(),IAP 会自动发送交易事件。支持商品类型 ProductType.Consumable、NonConsumable、Subscription;支持 StoreSpecificIds 区分 Apple/Google 商品 ID,复杂目录可用 CatalogProvider。

使用方式(要点):先阅读 references/pre-check.md 完成项目扫描与路径分流,未解决分流前不要读其它参考文件或做改动。初始化建议放在 Awake():获取 StoreController,先在 Connect() 前订阅所需事件,再 await store.Connect(),在 OnStoreConnected 时调用 store.FetchProducts(List<ProductDefinition>),在 OnProductsFetched 后商品才可展示与购买。购买为强制两步:PurchaseProduct → OnPurchasePending 收到 PendingOrder → 校验收据并发放内容 → ConfirmPurchase(pendingOrder) → OnPurchaseConfirmed 再区分 ConfirmedOrder 与 FailedOrder。注意 GetProducts()/FetchProducts() 不可互换,须先 FetchProducts。

限制与注意:必须同时订阅成功与失败事件,否则产生运行时警告;需订阅 OnPurchaseDeferred,否则延迟购买会被静默丢弃;订阅应在 Connect() 前完成。未确认的购买会在下次启动重新投递,需做去重;确认后的消耗型商品不会由 FetchPurchases 返回,需自行追踪。iOS 恢复交易须提供“Restore Purchases”按钮,Apple 不可续期订阅无法通过 RestoreTransactions 恢复。Google Play 可用 CrossPlatformValidator 本地校验,Apple(StoreKit 2)本地校验为空操作,应使用 order.Info.Apple?.jwsRepresentation 做服务端校验。IsSubscribed() 返回 Result 枚举,应与 Result.True 比较。校验阶段需确认代码符合 v5 签名,不使用 v4 的 IStoreListener、UnityPurchasing.Initialize、ConfigurationBuilder 等旧模式,并注意各失败类型的属性名差异。更多 API 签名、平台扩展与迁移(v4→v5、原生 Google Billing、iOS StoreKit、Essential Kit、UniPay、RevenueCat、Adapty)参见对应 references 文件。