mcpField
F
flutter-in-app-purchases

flutter-in-app-purchases

github.com/thienqo开发1777 次安装4 天前更新
代码仓库

关于 flutter-in-app-purchases

面向实现 Flutter 应用内购买的开发者,指导将商店交易、验证和权益状态作为异步协调流程处理。强调幂等验证、恢复购买及账户切换时的权益隔离。

主要功能

  1. 01区分商店目录、交易与权益
  2. 02验证完成交易并幂等处理
  3. 03按商品类型完成确认或消耗
  4. 04覆盖恢复、续订与账户切换
  5. 05使用模拟对象和沙盒验证流程

适用场景

  1. 01实现待处理交易完成后的权益授予
  2. 02测试重复交易及确认失败恢复
  3. 03验证订阅状态变化和购买恢复

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/thienqo/flutter-skills --skill flutter-in-app-purchases

安装后在 Claude Code 中输入/flutter-in-app-purchases确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
purchase-lifecycle-and-entitlements.md
store-testing-and-release.md
subscriptions-and-restoration.md

详细介绍

Flutter 应用内购买

将商店账单建模为异步对账系统,而不是按钮回调。除非明确要求迁移,否则保留项目当前的商店包、订阅服务、后端、账户模型和状态管理。

未经明确授权,不要创建商品、更改定价、上传构建版本或修改线上商店配置。

前置检查

阅读 pubspec.yaml、SDK 约束、支持的平台、商店包和原生配置、商品标识符、购买监听器的所有权、权益的事实来源、后端验证、身份验证、持久化、测试、flavor 和沙盒设置。在修改流程前,区分消耗型商品、非消耗型商品和订阅。

将以下三个概念分开:

  • 商店目录:商品、本地化价格、可用性、优惠和商店元数据。
  • 交易:商店支持的待处理、已购买、已恢复、已取消、失败、已消耗、已确认或已完成状态。
  • 权益:应用当前授予账户或设备的商品能力。

切勿根据按钮点击、客户端声明、未经验证的载荷或待处理交易授予权益。幂等地处理已验证且已完成的交易,然后严格根据商品类型执行商店要求的确认、消耗或完成步骤。

按需加载参考资料

  • 处理监听器所有权、验证、幂等性、待处理交易、确认、消耗和账户归属时,阅读购买生命周期与权益。
  • 处理续订、宽限期和暂停状态、过期、恢复或对账流程、升级、降级和账户切换时,阅读订阅与恢复。
  • 处理沙盒账户、商品就绪状态、中断的流程、平台矩阵和发布凭据时,阅读商店测试与发布。

职责边界

  • flutter-authentication 负责账户登录和会话生命周期;本技能负责将已验证的交易绑定到正确账户,并防止账户切换时权益泄漏。
  • flutter-networking 负责通用传输;本技能负责商店和权益协议语义。
  • flutter-persistence 负责本地持久化;缓存的权益状态必须公开其新鲜度,且绝不能覆盖权威撤销结果。
  • flutter-security 负责全面的威胁审查;本技能要求可信验证,并尽量减少购买令牌的暴露。
  • flutter-product-analytics 可以记录购买漏斗事件,但不能成为权益的事实来源。
  • flutter-build-release 负责已签名的应用构件和上传。商店发布仍须作为明确的外部操作。

验证

使用伪对象进行确定性的状态机测试,并使用沙盒或测试轨道进行端到端验证。覆盖成功、取消、失败、重启后待处理交易完成、重复交易、交付后确认前的恢复、恢复购买、切换账户、离线对账、订阅状态变更以及商品不可用等情况。

对于沙盒就绪工作,不要止步于场景检查清单。更改配置前,明确要求检查应用和 Bundle 标识符、构建变体和环境、Android 与 Apple 签名、Entitlements 或清单、现有商店商品、测试账户以及后端路由。提供可复现的具体案例,包括前置条件、操作及中断点、预期的商店和 Entitlement 状态、确认或完成结果,以及可观察的通过/失败证据。若相关流程在范围内,至少包含一次中断的购买,以及一次恢复或对账案例。

说明实际测试过的商店、商品类型、账户模式、平台和后端路径。仅有成功的购买界面或客户端回调,并不能证明已完成验证、Entitlement 交付、确认、跨设备恢复或续订处理。

来源

评论

支持 Markdown