iOS内购(IAP)自动续订订阅类型概述

一、介绍

iOS 的 App 内购类型主要分为四种:

  1. 消耗型商品:只可使用一次的产品,使用后即失效,需再次购买。
    示例:钓鱼 App 中的鱼食。

  2. 非消耗型商品:只需购买一次,不会过期或随着使用而减少的产品。
    示例:游戏 App 的赛道。

  3. 自动续期订阅:允许用户在固定时间段内购买动态内容的产品。除非用户选择取消,否则此类订阅会自动续期。
    示例:每月订阅提供流媒体服务的 App。

  4. 非续期订阅:允许用户购买有时限性服务的产品,此类订阅不会自动续期。
    示例:为期一年的已归档文章目录订阅。

在完成这个项目的过程中,我发现自动续期订阅类型是最复杂的。其他几类内购都是一次性的,而自动续期订阅涉及到免费试用期促销期等概念,用户还可以选择取消续订恢复续订。后台需要处理许多相应的逻辑操作。以下是我在实现自动续订订阅类型过程中遇到的一些问题和经验,希望能对大家有所帮助。

二、创建自动续订类型时需要注意的地方

1. App 专用共享密钥

需要创建一个 “App 专用共享密钥”,用于接收此 App 自动续订订阅收据的唯一代码。该秘钥用于向苹果服务器校验票据 receipt,不仅需要传递 receipt,还需传递此秘钥。如果需要将此 App 转让给其他开发人员,或将主共享密钥设置为专用,可能需要使用 App 专用共享密钥

App 专用共享密钥示意图

2. 订阅群组

创建自动续订类型时,如果还不存在订阅群组,就需要创建一个,以向用户提供一系列内容供应、服务等级或时限。名字可以随意起,只要有代表意义即可。一个群组下可以有多个自动续订订阅。如果要进行促销优惠,每个顾客可以享受每个订阅群组的一个推介促销优惠一次。

一个订阅群组中的订阅是 互斥 的,意味着用户只能一次订阅一个群组中的一个选项。如果希望用户能够一次购买多个订阅,可以将这些 App 内购买项目放在不同的订阅群组中。

订阅群组示意图

3. 订阅状态 URL

自动续订订阅还需要填写订阅状态 URL。在 App 信息 中配置后,后台就能收到 server to server 的通知。文章最后将详细讲解后台的相关操作。

订阅状态 URL 示意图

4. 推介促销优惠

推介促销优惠可以设置各种优惠,例如前七天免费试用,或前两个月半价等。

推介促销优惠示意图

推介促销优惠的三种类型:

| 属性 | 描述 |
|————–|——————————————————————————————|
| 随用随付 | 顾客按选定时限的每个结算周期支付折扣价格(例如,标准价格为 9.99 美元,折扣价为前 3 个月每月 1.99 美元)。 |
| 提前支付 | 顾客一次性支付选定时限的折扣价格(例如,标准价格为 9.99 美元,折扣价为前 2 个月 1.99 美元)。 |
| 免费 | 顾客在选定的时限内免费访问订阅。时限可以是 3 天、1 周、2 周、1 个月、2 个月、3 个月、6 个月或 1 年。 |

⚠️ 注意:此价格面向新顾客。推介促销优惠可用于吸引新顾客。用户享受过七天免费试用后,下次将无法再享受。

三、内购流程

1. 流程简述

iOS内购的通用流程如下:

支付流程

  1. 用户向苹果服务器发起购买请求,收到购买完成的回调(购买完成后会将款项打入申请内购的银行卡)。
  2. 购买成功后,向服务器发起验证凭证(app端也可以自行验证)。
  3. 自己的服务器工作分为 4 步:
  4. 接收 iOS 端发过来的购买凭证。
  5. 判断凭证是否已经存在或验证过,然后存储该凭证。
  6. 将凭证发送到苹果的服务器(区分沙盒环境和正式环境)验证,并将验证结果返回给客户端。
  7. 修改用户相应的会员权限或发放虚拟物品。

简单来说,将购买凭证用 Base64 编码,然后 POST 给苹果的验证服务器,苹果将验证结果以 JSON 形式返回。

验证流程

2. 具体实现

自动订阅类型需要注意

  • app开始运行时,一定要添加监听:

objc
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

因为自动订阅类型,除了第一次购买行为是用户主动触发的,后续续费都是 Apple 自动完成的。一般在到期前 24 小时开始,苹果会尝试扣费,扣费成功后会在 APP 下次启动时主动推送给 APP。因此,APP 启动时一定要添加上述代码。

⚠️ 订单结束后一定要执行 finishTransaction 操作:

objc
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

以下是重要的几个代理方法的实现:

首先引入苹果内购必须的库 StoreKit

objc

import

(1) 开始调起支付流程,请求商品信息

objc
– (void)payWithAppleProductID:(NSString )productId {
if ([SKPaymentQueue canMakePayments]) {
NSArray
productIdentifiers = @[productId];
NSSet set = [NSSet setWithArray:productIdentifiers];
SKProductsRequest
request = [[SKProductsRequest alloc] initWithProductIdentifiers:set];
request.delegate = self;
[request start];
} else {
// 用户手机禁止应用内付费购买
}
}

(2) 判断购买结果

objc
– (void)paymentQueue:(SKPaymentQueue )queue updatedTransactions:(NSArray )transactions {
for (SKPaymentTransaction *tran in transactions) {
switch (tran.transactionState) {
case SKPaymentTransactionStatePurchased:
NSLog(@”交易完成”);
// 处理交易
break;
case SKPaymentTransactionStatePurchasing:
NSLog(@”商品添加进列表”);
break;
case SKPaymentTransactionStateRestored:
NSLog(@”已经购买过商品”);
[[SKPaymentQueue defaultQueue] finishTransaction:tran];
break;
case SKPaymentTransactionStateFailed:
NSLog(@”交易失败”);
[[SKPaymentQueue defaultQueue] finishTransaction:tran];
break;
default:
break;
}
}
}

四、各种情况

1. 升级和计划变更

用户可以在 App Store 或应用的帐户设置中管理他们的订阅。对于每个订阅,App Store 会显示所有续订选项,用户可以随时选择升级、降级或交叉评级。

2. 到期和续订

订阅续订过程在到期日期前十天开始。App Store 会检查可能会延迟或阻止订阅自动续订的任何结算问题,例如客户的付款方式不再有效等。

3. 取消

用户只能通过联系 Apple 客户服务获得退款。客户可以在订阅期间取消订阅,但订阅仍在同一时期结束时支付。

五、服务端验证

为了安全起见,大部分公司都会选择让服务器端去验证订单的有效性。首先要在 itunes connection 上配置自动续期订阅,具体可参考苹果官方文档。

如果配置了 server to server 的通知,后台将收到几种状态更新通知类型:

| NOTIFICATION_TYPE | 描述 |
|—————————|——————————————————————————————|
| INITIAL_BUY | 初次购买订阅。通过在App Store中验证,可以随时将您的服务器存储在服务器上以验证用户的订阅状态。 |
| CANCEL | Apple客户支持取消了订阅。检查Cancellation Date以了解订阅取消的日期和时间。 |
| RENEWAL | 已过期订阅的自动续订成功。检查Subscription Expiration Date以确定下一个续订日期和时间。 |
| INTERACTIVE_RENEWAL | 客户通过应用程序界面或在App Store中以交互方式续订订阅。服务立即可用。 |
| DID_CHANGE_RENEWAL_PREF | 客户更改了在下次续订时生效的计划。当前的有效计划不受影响。 |

六、沙盒测试

在测试自动续期订阅时,时限会缩短,测试订阅最多仅能自动续期 6 次。

| 实际时限 | 测试时限 |
|———-|———-|
| 1 周 | 3 分钟 |
| 1 个月 | 5 分钟 |
| 2 个月 | 10 分钟 |
| 3 个月 | 15 分钟 |
| 6 个月 | 30 分钟 |
| 1 年 | 1 小时 |

⚠️ 注意:如果通过 TestFlight 安装的,则需要使用真实的账号进行购买。

七、关于审核

1. 自动续订订阅的说明

自动续订订阅必须在 app 中有详细的说明。

2. 不允许强制用户必须登录才能购买

苹果规定所有内购绑定的账号都应该是 apple 账号,因此未登录状态下也应能购买。

👉 野卡 | 一分钟注册,轻松订阅海外线上服务

(0)
上一篇 2025年3月11日
下一篇 2025年3月11日

相关推荐

  • ChatGPT4技巧揭秘:深入了解野卡渠道

    什么是野卡虚拟卡?(常见问题解答) 野卡虚拟信用卡平台为用户提供了便捷的方式来订阅ChatGPT等国外软件。本文将详细介绍如何使用该平台,并解答常见问题。 野卡虚拟卡注册流程 填写…

    文章 2025年4月8日
  • 如何取消 App Store 订阅

    在使用 Apple 设备时,您可能会订阅一些应用程序或服务,但有时您可能需要取消这些订阅。以下是一些常见的取消订阅的方法。 取消 Apple 订阅的步骤 打开设置 在您的 iPho…

    2025年6月18日
  • 如何在 Suno 创建你的第一首音乐?

    在数字时代,音乐创作已不再是专业人士的专利。今天,我们将介绍一个让音乐梦想触手可及的平台——Suno。凭借其友好的界面和强大的音乐生成能力,Suno 使每个人都能成为创作者。接下来…

    2025年5月27日
  • 2025最新教程:Claude 3 注册与登录指南,简单易懂的小白教程

    1. 如何进入 Claude 3 登录 Claude 官方网站,链接:Claude 官方网站 点击“Try Claude 3”,进入 Claude 页面。 点击“Try Claud…

    2025年8月28日
  • 为什么使用虚拟信用卡支付 ChatGPT 会被拒绝?

    如果你经常在网上购物或使用各种平台,可能会发现许多海外购物网站、APP 订阅、影视会员、VPS 服务器等服务在使用国内信用卡时常常无法支付。 最近,热门的 ChatGPT 无论是 …

    2025年5月6日
  • 如何订阅 Midjourney?详细步骤解析

    问:如何开通 Midjourney 付费会员? 答:大陆用户可以通过开通 BinGoCard 的卡片,几分钟内完成注册,并通过支付宝充值,享受便捷的订阅服务。 Midjourney…

    文章 2025年5月4日
  • Ultra Mobile 常规电话卡:全球免费电话与短信服务(开户赠送 $25)

    黑五活动更新 【2024.11 更新】黑五活动预热,套餐费用最高可享受 25% 折扣,并可与推荐奖励($25 话费)叠加。 开户奖励提升 【2024.9 更新】通过推荐链接开户奖励…

    文章 2025年8月20日
  • Chipper Cash支付平台详解:2025年注册与使用指南

    一、Chipper Cash支付平台概述 Chipper Cash是一家成立于2018年的跨境移动汇款服务商,总部位于美国旧金山,主要面向非洲地区提供服务。由哈姆·塞伦乔吉(Ham…

    文章 2025年3月13日
  • ChatGPT 如何彻底改变程序员的代码开发方式

    ChatGPT 彻底改变了开发代码的方式。 然而,许多软件开发人员和数据专家仍未充分利用 ChatGPT 来提升和简化他们的工作流程。本文将概述五个功能,帮助您提高日常工作的效率和…

    2025年8月29日
  • 如何在线开通虚拟信用卡?

    全球虚拟信用卡,又称为虚拟VISA信用卡、VISA虚拟卡、国际信用卡等,主要面向没有国际信用卡或担心信用卡付款安全的用户。随着越来越多的用户需要进行国外网上购物、激活各类网上账号和…

    2025年7月9日
  • 虚拟信用卡开卡时需关注的关键要素

    相较于实体信用卡,虚拟信用卡提供了更高的便利性。然而,在开卡过程中,有几个关键方面需要特别注意。本文将探讨在使用虚拟信用卡开卡平台(如 onekey、51vcard、小红卡、dup…

    文章 2025年4月4日
  • 如何获取 Midjourney AI 画图邀请码?

    微信悄然增强图文功能 微信正在对公众号文章页面的“在看”功能进行小范围的更新测试。这一变化将好友信息融入订阅号信息流中,旨在提升用户体验和产品增长之间的平衡。 AI作图:提升职场效…

    文章 2025年9月5日
  • 如何顺利升级到 ChatGPT 4.0?全面教程

    1. ChatGPT 4.0 的优势 如果你还没有 ChatGPT 账号,可以参考相关教程进行注册。虽然 ChatGPT 3.5 能满足日常需求,但许多人仍希望体验最新的 Chat…

    2025年8月16日
  • 美国虚拟信用卡406594:共享额度的便捷选择

    406594虚拟卡是一款由美国金融公司发行的VISA预付卡,发卡行为Metropolitan Commercial Bank,与MOVO虚拟卡同属该发卡行。 该金融公司成立于201…

    文章 2025年6月15日
  • ChatGPT 购买全攻略:快速订阅方法与避坑指南

    摘要:本文详细介绍了ChatGPT的购买流程,帮助用户快速、稳定地完成订阅并避开常见陷阱。访问OpenAI官网并注册或登录账户,确保账户信息准确。选择适合的订阅计划,如ChatGP…

    文章 2025年5月25日
  • Cursor与Claude-Dev:我的见解

    我最近一直在使用两个新工具——Cursor和Claude-Dev——这两个工具在开发者社区中引起了广泛关注。它们都旨在通过AI辅助使编码更快、更直观,但采用了不同的方法,各有优缺点…

    2025年2月17日
  • 跨境支付轻松无忧:美国Visa虚拟信用卡的优势与使用指南

    为什么中国用户需要美国Visa虚拟信用卡? 随着越来越多的中国用户希望进入国际市场,诸如购物网站、流媒体平台和广告支付服务等需求日益增加。然而,国内银行卡在跨境支付时常常面临交易失…

    2025年6月26日
  • Photoshop 免费试用版注册指南|试用版的限制与优势

    常见问题 Photoshop 可以免费使用吗? 有没有办法先测试一下? 不知道自己会不会学会 Photoshop? 试用版有什么限制? 引言 对于想学习 Photoshop 的人来…

    文章 2025年8月1日
  • 挖宝篇 _ 手把手教你寻找 Facebook 群组

    众所周知,Facebook 是一个社交平台,但随着时间的推移,它的商业化趋势已远超单纯的社交功能。除了通过平台投放广告来实现营销目标,还有其他有效的方法。今天,我们将深入探讨 Fa…

    2025年7月21日
  • OpenAI 绑卡指南

    最近,OpenAI 对免费试用账号进行了新的限制,每分钟调用 API 的次数限制为 3 次。具体详情可以查看官方文档。而在下午高峰期,响应速度也会变得很慢。因此,免费账号可能无法满…

    2025年8月6日