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

如何在发起内购前阻止不同应用用户使用同一Apple ID修改自动续费订阅?

解决方案

1. 购买前预获取当前Apple ID的订阅标识

在用户点击购买、发起正式支付请求前,先通过StoreKit获取当前设备Apple ID下有效自动续费订阅的原始交易ID(original transaction ID):

  • iOS 15+:调用SKSubscriptionStoreManager的fetchSubscriptionInfos(completion:)接口,直接提取订阅信息中的originalTransactionId。
  • iOS 14及更早:可调用SKPaymentQueue.default().restoreCompletedTransactions(),在交易更新回调里从恢复的交易中提取originalTransactionId;也可以用SKReceiptRefreshRequest拉取本地收据,解析出original_transaction_id,避免触发Apple ID密码弹窗。

2. 后端做绑定关系校验

将获取到的originalTransactionId传给后端服务器,后端执行以下校验逻辑:

  • 查询数据库中该originalTransactionId绑定的应用用户账号。
  • 如果绑定的账号不是当前登录的用户B,直接返回校验失败结果。

3. 前端拦截购买并提示

收到后端校验失败的结果后,前端直接弹出提示:“当前Apple ID已绑定其他账号,请更换Apple ID后再尝试购买”,终止购买流程,不发起正式支付请求。
若校验通过,再正常执行购买流程。

优化细节

  • 用户登录应用后立即执行一次校验,进入购买页面时直接给出提示,无需等用户点击购买按钮。
  • 监听设备Apple ID切换事件,切换完成后重新拉取订阅信息并校验,覆盖更多场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:55:20