前段时刻刚做完内购,然后做了一下整理:

内购产品类型

类型 阐明 举例
耗费型项目 耗费性购买项目会随着运用逐步耗尽,并能够再次购买 比方:游戏里的宝石,抖音的抖币,王者的点劵(花了就没有了属于耗费型)
非耗费型项目 永久性的购买项目可一次性购买,而且不会到期,例如相片滤镜或化妆品。 比方:永久会员,游戏角色时装,宠物等(买了就不会消失永久拥有的)
非续期订阅 用户能够购买服务或内容的限时拜访权限,例如游戏内内容的季票。此类订阅不会主动续期,因此若用户希望保存拜访权限,则需求在订阅完毕后购买新的订阅。 比方:1个月会员,1年会员(有时刻期效的,过了这个时刻就没有了)
主动续期订阅 订阅是答应用户在固定时刻段内购买动态内容的产品。除非用户挑选撤销,不然此类订阅会主动续期。 比方:哔哩哔哩的大会员(会按周期[一年,一个月,…]主动续费的)
订阅群组 一切订阅有必要属于某个群组。用户一次只能订阅一个群组内的一个项目,但能够更改为同一群组内的另一个订阅项目。

一、预备内购

1、银行账户信息

到App Store Connect后台填写银行账户信息,填写报税表等 appstoreconnect.apple.com/,参阅填写银行卡信息

留意:银行卡信息等需求填写中文的拼音,不能填写中文

iOS内购In App Purchase从准备、测试到上架

iOS内购In App Purchase从准备、测试到上架

需求等候协议两项都是『有用』状况,信息填完大约1天内/1天左右就会更新状况。『有用』状况才干正常测验购买,不然客户端获取的产品都是空,无法进行后续操作。

2、内购产品介绍、创立

产品类型主要有:耗费型项目、非耗费型项目、主动续期订阅、非续期订阅

iOS内购In App Purchase从准备、测试到上架

留意:创立产品前需求清楚了解产品各个类型,请看【内购产品类型】;

添加内购产品的时分,【参阅名称】是能够修正的,【产品ID】是仅有的,创立了之后即使删去这个产品,这个ID也无法重复运用了,推荐运用产品ID命名:包名+类型+产品编号,比方: com.xxx.xxx.Vip.ABC123

3.1、耗费型、非耗费型产品创立

iOS内购In App Purchase从准备、测试到上架

iOS内购In App Purchase从准备、测试到上架

2.2、订阅型产品创立

iOS内购In App Purchase从准备、测试到上架

2.2.1、主动续期订阅

一个群组内的产品,支撑晋级降级订阅,同组内一起只会订阅一个产品。

比方说,组内有3个产品,1个月会员,6个月会员,1年会员,用户能够在这个组内升降级修正订阅产品,最终扣费以最后一个订阅的扣费。

N个组内的产品,能够一起订阅N个产品。

订阅群组 组内产品 用户订阅的
组A 产品A,产品B,产品C 订阅A/B/C
组B 产品E,产品F,产品G 订阅E/F/G
用户一共订阅 A/B/C 和 E/F/G 【一起订阅了两个产品】

iOS内购In App Purchase从准备、测试到上架

2.2.2、主动订阅群组产品升降级阐明

在同一群组创立产品的时分,需求留意升降级跨级问题,从提供最高级别服务的选项开端,按降序排列你的订阅。

产品等级升降 阐明
晋级 从较低等级的订阅切换到较高等级的订阅时,用户从前的 App 内购买项目金额将会按比例退还到原始付款方法。新的 App 内购买项目将收取完好价格并当即收效,用户的续期日期也随之更改为晋级日期。
降级 用户从较高等级的订阅切换到较低等级的订阅时,在下一个续期日期,会以新费率向用户收费。
跨级 在相同等级的订阅间进行切换时,假如 App 内购买项目的时限相同,那么用户从前的 App 内购买项目金额将会按比例退还到原始付款方法。新的 App 内购买项目将收取完好价格并当即收效,用户的续期日期也随之更改为晋级日期。假如 App 内购买项目的时限不同,那么跨级将会在用户的下一个续期日期收效。

iOS内购In App Purchase从准备、测试到上架

2.2.3、非主动续期订阅

iOS内购In App Purchase从准备、测试到上架

2.2.4、产品详细信息修正

iOS内购In App Purchase从准备、测试到上架

3、装备沙箱测验账号

沙盒环境阐明:

1、有必要是真实设备才干测验内购,模拟器不可;

2、假如设备装置的是adhoc包,xcode直接run的包,测验时需求登录沙盒测验员账号进行购买,审阅人员审阅时分的付出也都是运用沙盒环境(此处关系到验签)。

3、TestFlight里装置的包,也是运用沙盒环境,可是运用真实的Apple ID进行购买,不会扣钱。

3.1、添加沙盒人员

iOS内购In App Purchase从准备、测试到上架

3.2、清除购买前史,删去沙盒人员

iOS内购In App Purchase从准备、测试到上架

3.3、修正主动续期测验时刻

iOS内购In App Purchase从准备、测试到上架

iOS内购In App Purchase从准备、测试到上架

4、装备服务器告诉地址

装备好服务端与苹果交互的回调地址,才干完成付出流程服务端与苹果的通讯,比方:购买验单回调,订阅续订回调,退款回调。

iOS内购In App Purchase从准备、测试到上架

二、开端购买

1、非订阅型购买流程概览

iOS内购In App Purchase从准备、测试到上架

2、主动续期型购买流程概览

留意:初次订阅,客户端会上传receipt data给服务端,进行验单;一起Apple也会有一个订阅成功的回调到服务端,成功处理一个即可,不要重复赋予权益。

iOS内购In App Purchase从准备、测试到上架

3、订单凭据验签

订单凭据验签成功与否,决议此次购买的结果。

留意:为了保证不影响审阅,服务器验签需求运用两层验证。优先验证生产环境,回来错误代码21007后,进行测验环境验签。

3.1、Apple验签地址

沙盒测验:sandbox.itunes.apple.com/verifyRecei…

正式:buy.itunes.apple.com/verifyRecei…

3.2、凭据receipt data参数预览

Apple官方文档的参数解说

参数 阐明 补白
environment 付出环境:沙盒、非沙盒
transaction_id 买卖凭据ID
original_transaction_id 原始买卖凭据ID
quantity 购买数量
product_id 产品ID
is_trial_period 是否享用免费试用
is_in_intro_offer_period 是否享用首单优惠 订阅型产品有的
auto_renew_status 订阅状况 1:续订中 0:封闭续期订阅 auto_renew_status=1 而且 is_in_billing_retry_period=1, 此时用户的状况并不能标记为已封闭, 而应该是扣费失败,仍在尝试订阅
is_in_billing_retry_period 主动续期订阅状况 1:尝试订阅 0:停止尝试订阅
latest_receipt_info 主动续费订阅的一切收据凭据
pending_renewal_info 续订订单的状况信息
cancellation_date 退款的订单凭据 撤销的应用内购买将无限期保存在收据中。仅适用于非耗费性产品、主动续订订阅、非续订订阅或免费订阅的退款。
cancellation_reason 退款的原因 1:应用程序中的实践或感知问题客户撤销了买卖 0:买卖因其他原因被撤销,意外购买等

3.3、验签错误码

错误码 阐明 补白
21000 App Store无法读取你提供的JSON数据
21002 收据数据不符合格局
21003 收据无法被验证
21004 你提供的共享密钥和账户的共享密钥不共同
21005 收据服务器当时不可用
21006 收据是有用的,但订阅服务现已过期。当收到这个信息时,解码后的收据信息也包含在回来内容中
21007 收据信息是测验用(sandbox),但却被发送到产品环境中验证
21008 收据信息是产品环境中运用,但却被发送到测验环境中验证
21010 此收据无法授权。
21100-21199 内部数据拜访错误

一个receipt data示例,购买了非续期订阅型和续期订阅型产品:

{
        environment = Sandbox,
        receipt = {
                receipt_type = ProductionSandbox,
                app_item_id = 0,
                receipt_creation_date = 2023-02-21 08:36:06 Etc/GMT,
                bundle_id = bundle_id,
                original_purchase_date = 2013-08-01 07:00:00 Etc/GMT,
                in_app = [
                        {
                                quantity = 1,
                                purchase_date_ms = 1670220887000,
                                transaction_id = 2000000218924423, // 此次买卖订单ID
                                is_trial_period = false,  // 是否享用免费试用
                                original_transaction_id = 2000000218924423, // 原始买卖订单ID
                                purchase_date = 2022-12-05 06:14:47 Etc/GMT,
                                product_id = product_id1,  // 产品ID
                                original_purchase_date_pst = 2022-12-04 22:14:47 America/Los_Angeles,
                                in_app_ownership_type = PURCHASED,
                                original_purchase_date_ms = 1670220887000,
                                purchase_date_pst = 2022-12-04 22:14:47 America/Los_Angeles,
                                original_purchase_date = 2022-12-05 06:14:47 Etc/GMT
                        },
                        {
                                quantity = 1,
                                purchase_date_ms = 1671013613000,
                                transaction_id = 2000000227571624,
                                is_trial_period = false,
                                original_transaction_id = 2000000227571624,
                                purchase_date = 2022-12-14 10:26:53 Etc/GMT,
                                product_id = product_id2,
                                original_purchase_date_pst = 2022-12-14 02:26:53 America/Los_Angeles,
                                in_app_ownership_type = PURCHASED,
                                original_purchase_date_ms = 1671013613000,
                                purchase_date_pst = 2022-12-14 02:26:53 America/Los_Angeles,
                                original_purchase_date = 2022-12-14 10:26:53 Etc/GMT
                        },
                        {
                                quantity = 1,
                                purchase_date_ms = 1670228982000,
                                transaction_id = 2000000219098229,
                                is_trial_period = false,
                                original_transaction_id = 2000000219098229,
                                purchase_date = 2022-12-05 08:29:42 Etc/GMT,
                                product_id = product_id3,
                                original_purchase_date_pst = 2022-12-05 00:29:42 America/Los_Angeles,
                                in_app_ownership_type = PURCHASED,
                                original_purchase_date_ms = 1670228982000,
                                purchase_date_pst = 2022-12-05 00:29:42 America/Los_Angeles,
                                original_purchase_date = 2022-12-05 08:29:42 Etc/GMT
                        },
                        {
                                quantity = 1,
                                purchase_date_ms = 1676968560000,
                                expires_date = 2023-02-21 08:39:00 Etc/GMT,
                                expires_date_pst = 2023-02-21 00:39:00 America/Los_Angeles,
                                is_in_intro_offer_period = false, // 是否享用首单优惠
                                transaction_id = 2000000282464020,
                                is_trial_period = false,
                                original_transaction_id = 2000000282464020,
                                purchase_date = 2023-02-21 08:36:00 Etc/GMT,
                                product_id = product_id4,
                                original_purchase_date_pst = 2023-02-21 00:36:05 America/Los_Angeles,
                                in_app_ownership_type = PURCHASED,
                                original_purchase_date_ms = 1676968565000,
                                web_order_line_item_id = 2000000021347684,
                                expires_date_ms = 1676968740000,
                                purchase_date_pst = 2023-02-21 00:36:00 America/Los_Angeles,
                                original_purchase_date = 2023-02-21 08:36:05 Etc/GMT
                        }
                ],
                adam_id = 0,
                receipt_creation_date_pst = 2023-02-21 00:36:06 America/Los_Angeles,
                request_date = 2023-02-21 08:36:10 Etc/GMT,
                request_date_pst = 2023-02-21 00:36:10 America/Los_Angeles,
                version_external_identifier = 0,
                request_date_ms = 1676968570311,
                original_purchase_date_pst = 2013-08-01 00:00:00 America/Los_Angeles,
                application_version = 17,
                original_purchase_date_ms = 1375340400000,
                receipt_creation_date_ms = 1676968566000,
                original_application_version = 1.0,
                download_id = 0
        },
        pending_renewal_info = [ // 续订订单的状况信息
                {
                        product_id = product_id4, // 续订的产品ID [留意:用户在订阅周期内切换产品,此ID是新一期续订的产品ID]
                        original_transaction_id = 2000000282464020, // 初次创立续订订单的ID
                        auto_renew_product_id = product_id4, 
                        auto_renew_status = 1  // 1:续订中 0:封闭续期订阅 [留意:auto_renew_status=1 而且 is_in_billing_retry_period=1, 此时用户的状况并不能标记为已封闭, 而应该是扣费失败]
                }
        ],
        status = 0,
        latest_receipt_info = [ // 主动续费订阅的一切收据 [留意:退款后会呈现cancellation_date和cancellation_reason字段, 未退款则没有这两个字段]
                {
                        quantity = 1,
                        purchase_date_ms = 1670221172000,
                        transaction_id = 2000000218930621,
                        is_trial_period = false,
                        original_transaction_id = 2000000218930621,
                        purchase_date = 2022-12-05 06:19:32 Etc/GMT,
                        product_id = product_id1,
                        original_purchase_date_pst = 2022-12-04 22:19:32 America/Los_Angeles,
                        in_app_ownership_type = PURCHASED,
                        original_purchase_date_ms = 1670221172000,
                        purchase_date_pst = 2022-12-04 22:19:32 America/Los_Angeles,
                        original_purchase_date = 2022-12-05 06:19:32 Etc/GMT
                },
                {
                        quantity = 1,
                        purchase_date_ms = 1676968560000,
                        expires_date = 2023-02-21 08:39:00 Etc/GMT,
                        expires_date_pst = 2023-02-21 00:39:00 America/Los_Angeles,
                        is_in_intro_offer_period = false,
                        transaction_id = 2000000282464020,
                        is_trial_period = false,
                        original_transaction_id = 2000000282464020,
                        purchase_date = 2023-02-21 08:36:00 Etc/GMT,
                        product_id = product_id4,
                        original_purchase_date_pst = 2023-02-21 00:36:05 America/Los_Angeles,
                        in_app_ownership_type = PURCHASED,
                        subscription_group_identifier = 21218554,
                        original_purchase_date_ms = 1676968565000,
                        web_order_line_item_id = 2000000021347684,
                        expires_date_ms = 1676968740000,
                        purchase_date_pst = 2023-02-21 00:36:00 America/Los_Angeles,
                        original_purchase_date = 2023-02-21 08:36:05 Etc/GMT
                }
        ],
        latest_receipt = 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
}

4、康复购买

留意:康复购买是针对【非耗费型】【主动续期订阅型】产品的。在客户端获取可康复购买产品列表的时分,会回来该Apple ID购买过的【非耗费型】【主动续期订阅型】产品。其他类型产品,需求自己保护用户新旧设备、多个设备的权益同步。

适用场景:假如用户在iPhone A购买了永久会员,然后换了新手机iPhone B,两台设备登录了同一个Apple ID,那么他能够在iPhone B运用康复购买,把购买过的永久会员同步到新设备运用,即需求完成两个设备都能够运用永久会员功用。

4.1、有账号系统的App

康复的购买产品与账号绑定,只要登录这个账号的设备都能够享用购买过的服务。可由App业务决议是否在一端登录账号后,其他端被逼下线,比方某个游戏的账号;也可像一些工具类行产品限制答应在线设备个数。

4.2、无账号系统的App

无账号系统的App,能够在N个登录了购买过产品的Apple ID设备,点击运用康复购买之后,享用相同的产品。

无账号系统的App,建议创立【主动续期订阅】【非耗费型】产品,运用苹果自己的康复购买来保护用户购买过的权益。

iOS内购In App Purchase从准备、测试到上架

5、产品优惠促销(免费试用)

优惠促销是只支撑续期订阅的产品,每个订阅群组只能享用一个推介促销优惠,推介促销优惠适用于运转 iOS 10、Apple TVOS 10 和 macOS 10.12.6 及更高版别的用户。

5.1、促销优惠类型

类型 适用人群 公司SDK是否已支撑 收费方法 补白
订阅价格 现已订阅或之前订阅过该群组产品的用户 支撑 订阅时按订阅价格收费 已接收过推介促销优惠的,仍可享用订阅价格优惠兼容版别iOS12.2+
推介促销优惠 未享用过该订阅群组当时促销的用户 支撑 促销期内,按促销价收费,促销期过后,按原价收费。 兼容版别iOS10+
优惠代码 一切用户 不支撑
促销优惠 一切用户 支撑

5.2、优惠付出类型

付出类型 阐明 示例
随用随付 用户将按选定时限的每个结算周期付出扣头价格 例如,订阅的规范价格为9.99美元,扣头价为前3个月每月1.99美元)。可设定以下时限:。1周订阅,1至12周。1个月订阅,1至12个月。2个月订阅,2、4、6、8、10和12个月。3个月订阅,3、6、9和12个月。6个月订阅,6和12个月。1年订阅,1年
提前付出 用户将一次性付出选定时限的扣头价格 例如,订阅的规范价格为9.99美元,扣头价为前2个月199美元)。可设定以下时限:1个月、2个月、3个月、6个月、1年
免费 顾客在选定的时限内免费 例如:免费试用时限能够是3天,1周,2 周、1个月、2个月、3个月、6个月或1年。一个月的免费试用在28到31天不等。

5.3、添加促销优惠

iOS内购In App Purchase从准备、测试到上架

iOS内购In App Purchase从准备、测试到上架

iOS内购In App Purchase从准备、测试到上架

iOS内购In App Purchase从准备、测试到上架

iOS内购In App Purchase从准备、测试到上架

促销优惠产品购买视图,有免费试用等字样,并注明初次扣费日期;

iOS内购In App Purchase从准备、测试到上架

5.4、促销优惠测验

沙盒账号:需求一个没有购买过当时优惠促销产品的沙盒测验账号,或许购买过的账号需求去手机【设置】-【App Store】- 沙盒账号【办理】-【重设优惠资格】

iOS内购In App Purchase从准备、测试到上架

iOS内购In App Purchase从准备、测试到上架

6、退款

退款请求地址,退款请求可请求半年内的付费订单

用户能够就现已购买的项目建议退款,咱们需求在 appstoreconnect.apple.com/ 后台,App信息处,装备退款的回调地址,回调处理逻辑由后端人员接入

iOS内购In App Purchase从准备、测试到上架

『耗费型』『非耗费型』『非续期订阅型』退款:

Apple官方退款文档[后端技术人员接入]

『订阅型』退款:

Apple官方退款文档[后端技术人员接入]

三、上架

1、初次添加内购上架

初次添加内购产品,内购产品需求勾选和包一起提交审阅

iOS内购In App Purchase从准备、测试到上架

iOS内购In App Purchase从准备、测试到上架

2、非初次添加内购上架

非初次添加内购产品,能够在【订阅】【App内购买项目】中创立完产品,提交审阅

iOS内购In App Purchase从准备、测试到上架

3、内购拒审反馈

①、提审包含【非耗费型】产品的,有必要在购买页面上展现『康复购买』按钮,并完成其功用。

②、Guideline 2.1

提审时,只要有非续期订阅型产品(不支撑康复购买,UI界面上没有康复购买功用的)可添加一段关于这些产品,怎么办理、康复这些用户购买的权益。不然容易收到Apple的审阅邮件反馈:

iOS内购In App Purchase从准备、测试到上架

③、在Apple产品创立的后台,产品截图上的信息,价格,购买的权益,有必要与App内展现的共同。不要后台装备了价格下发,让Apple审阅人员看到价格都不相同,不可。

iOS内购In App Purchase从准备、测试到上架

④、Guideline 3.1.2

提审时产品里有订阅型产品、促销优惠:
1、需求标示促销内容,和促销期过后怎么收费,比方:当用户选到某个促销产品时,需求展现案牍:前3天免费试用,试用完毕后续费订阅99元/年,可随时撤销订阅。确保优惠按钮隶属案牍里有必要有优惠完毕后主动扣费规范。

比方:

iOS内购In App Purchase从准备、测试到上架
iOS内购In App Purchase从准备、测试到上架

2、在页面上展现隐私协议、会员协议、主动续费协议,协议内和应用描绘案牍里需求包含(也能够参阅腾讯、爱奇艺那些App):

主动订阅服务阐明

(1)订阅服务:xxxxVIP接连包月(1个月)、xxxx VIP接连包年(12个月)

(2)订阅价格:xxxxVIP接连包月(1个月)为每月19.8元,接连包年产品为30元/年,详细价格会依据不同期活动优惠调整,以应用内实践展现为准

(3)付款:用户确认购买并付款后计入iTunes账户

(4)主动续费:苹果iTunes账户会在到期前24小时内扣费,扣费成功后订阅周期顺延一个订阅周期

(5)封闭服务:您能够在苹果手机“设置”–>进入“iTunesStore与AppStore”–>点击“AppleID”挑选”检查AppleID”,进入”账户设置”页面,点击“订阅”,办理主动订阅服务,如需撤销,每个计费周期完毕前24小时封闭即可,到期前24小时内则不再扣费

iOS内购In App Purchase从准备、测试到上架

8、资料参阅

苹果官方文档-内购