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

iOS应用如何处理App Store取消订阅事件 是否需要存储用户Apple ID

处理iOS订阅取消事件的NodeJS实现指引

苹果官方提供了App Store Server Notifications服务来推送订阅状态变更事件,你可以通过以下步骤完成对接:

  • 第一步:登录App Store Connect,进入你的应用配置页,在「App 信息」-「服务端通知」板块配置你的NodeJS服务回调地址,勾选需要接收的事件类型,其中DID_REVOKE对应主动取消订阅、SUBSCRIPTION_EXPIRED对应到期未续费取消两类核心场景。
  • 第二步:NodeJS侧建议使用苹果官方提供的@apple/app-store-server-librarySDK完成回调处理,避免自行实现签名校验出现安全问题。
    首先安装依赖:
    npm install @apple/app-store-server-library
    基础回调接口示例:
    const express = require('express');
    const { SignedDataVerifier, Environment } = require('@apple/app-store-server-library');
    const app = express();
    app.use(express.json());
    
    // 初始化签名校验器
    const verifier = new SignedDataVerifier({
      // 填入苹果官方根证书内容
      appleRootCertificates: [readFileSync('./AppleRootCA-G3.cer')],
      bundleId: '你的应用Bundle ID',
      environment: Environment.Production, // 沙箱测试时改为Environment.Sandbox
      enableOnlineChecks: true
    });
    
    // 订阅状态回调接口
    app.post('/apple/subscription/callback', async (req, res) => {
      try {
        // 解析并验证苹果推送的签名数据
        const notification = await verifier.verifyAndDecodeNotification(req.body.signedPayload);
        // 匹配取消订阅相关事件
        if (['DID_REVOKE', 'EXPIRED'].includes(notification.notificationType)) {
          // 解析交易信息,获取用户标识
          const transaction = await verifier.verifyAndDecodeTransaction(notification.data.signedTransactionInfo);
          const userToken = transaction.appAccountToken; // 你自行传入的用户唯一标识
          // 此处更新对应用户的订阅状态
        }
        res.sendStatus(200);
      } catch (error) {
        console.error('回调处理失败', error);
        res.sendStatus(500);
      }
    });
    
    app.listen(3000);
    
用户身份匹配问题说明
  • 仅存储手机号无法直接定位取消订阅的用户:苹果的回调通知不会返回手机号、Apple ID这类用户隐私信息,无法直接做匹配。
  • 不需要额外登记用户的Apple ID:苹果不允许强制收集用户Apple ID,且回调数据中也不会返回Apple ID字段,收集后无法用于匹配,没有实际意义。
  • 正确的匹配方案:用户在应用内发起订阅请求时,生成和当前用户手机号绑定的UUID作为appAccountToken参数传入苹果支付接口,苹果会在后续所有该用户的订阅状态回调中带回该字段,你只需在数据库中存储appAccountToken和用户手机号的绑定关系,即可通过回调返回的appAccountToken准确定位到对应取消订阅的用户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:36:01