问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

iOS内购:自动续期订阅总结

发布网友 发布时间:2023-01-12 07:26

我来回答

1个回答

热心网友 时间:2023-10-31 03:22

前期准备无非就是在App Store 建内购的选项,这部分网上有很多文章,我直接推荐看此篇 https://www.jianshu.com/p/479cf9e31104 完成前期准备及一些常理的知识了解。当然,项目中我也是直接集成IAPHelper https://github.com/saturngod/IAPHelper 进行内购API集成。

主要参考如下解决:

上面的部分解决了消耗型商品内购的功能。
但是此篇是自动订阅:所以需要增加一个参数: password: 秘钥, 就可以了, 但是官方文档说秘钥仅仅用在自动续订上面
大家叫后台加个验证,如果苹果验证返回21004的话(21004 你提供的共享密钥和账户的共享密钥不一致),就加上password字段去验证,可以成功。
秘钥去 https://itunesconnect.apple.com/ 里面对应的APP里创建

2中主要是手机内购成功后传receipt给服务端,然后去验证的。然后有没有想到很多需解决的问题?
3.1 订阅状态的处理

主要处理如下:
如果您阅读了RENEWAL事件的描述,您将注意到 - “过期订阅的自动续订成功。检查订阅到期日期以确定下一个续订日期和时间。” 通常,iTunes会在计划自动续订订阅到期前一天尝试向用户帐户收费。如果续订成功,则没有服务器到服务器通知,因为自动续订订阅未进入过期状态。但是,在少数情况下,iTunes无法续订订阅(通常与信用卡服务器存在连接问题)并且在expiration_date通过之前未续订自动续订订阅,从技术上讲,自动续订订阅被视为“过期”。然而,iTunes仍将继续尝试续订订阅。iTunes成功,然后发送“RENEWAL”事件。出于这个原因,提出了建议 - “检查订阅到期日期以确定下一个续订日期和时间”。

要验证自动续订订阅In-App Purchase是否是最新的,请使用verifyReceipt服务器验证appStoreReceipt。假设in_app数组中存在自动续订订阅项,则查看latest_receipt_info记录并查找具有晚于当前日期的expires_date的订阅记录,其中一个未设置cancellation_date字段。备注:被退款订单的唯一标识是:它带有一个cancellation_date字段。
参考: https://forums.developer.apple.com/message/283579#283579

in_app与latest_receipt_info
测试时发现,这两个字段的数值几乎相同,不过有几点需要注意:
(1)自动续订订阅类型,在到期后会再生成一条购买记录,这条记录会出现在last_receipt_info里,但不会出现在in_app里
(2)自动续订订阅类型可以配置试用,试用记录只有在latest_receipt_info里,is_trial_period字段才是true
(3)消耗型购买记录有可能不会出现在latest_receipt_info,因此需要检查in_app来确保校验正确

购买了一个订阅后得全额付款,只有通过联系苹果客服服务才能退款。 比如,如果用户意外买错了产品,客服中心可以取消该交易并退款。 用户不能在订阅周期中间改变注意不支付剩余的订阅。
要想确认某次交易是否已经被取消,在收据 (receipt) 中查找 Cancellation Date (取消日期)字段。 如果该字段有日期,不管该订阅的过期日期是什么,该交易都已经被取消---取消交易就是跟没有购买过一样。
根据产品类型,只能检查当前的活动交易,可能需要检查过去所有的交易。比如,杂志应用需要检查过去所有的交易来决定用户访问了那些期刊。

官方文档 https://help.apple.com/app-store-connect/#/dev7e89e149d

如果用户再同一自动订阅组,如用户自动订阅买过,免费试用标识就要隐藏掉。因为内购支付购买不会出现免费试用。
首次购买 is_trial_period = true; is_in_intro_offer_period是否是否是在试用期 ; expires_date-purchase_date 就是免费的周期

自动订阅expires_date 会苹果会自动订阅,然后App启动会- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

在APP启动时候要增加侦听:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

让用户管理订阅
不需要编码实现订阅管理 UI ,应用程序可以打开以下 URL

https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/manageSubscriptions

参考:

记录:微信和支付宝支付-看我的,用我的就够了 https://www.jianshu.com/p/020621c3a660#

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
孤胆枪手怎么设置局域网啊、 我家小狗刚领来,没有名字,拜托大家起个名字。 护肤品代加工 水浒Q传跨服PK是怎么回事啊 新水浒Q传什么叫PK保护状态,上号不到一分钟就被打,求解 水浒Q传 为什么要pk有什么好处? 为什么贷款每次都审核失败 有谁能说一下手机贷审核不通过的原因吗?我都审核好多次了都不能通过... 贷款审核失败是什么原因 为什么贷款未通过审核 飞机票安心退礼包怎么退订 你好 我想问下 座机灯不亮 没有声音怎么回事 而且也没有欠费 别的电话打座机能打通 但是座机没有响应 12123满期驾驶证用体检吗 七七芽亩产 七七芽有什么功效 为什么拼多多要实名制? "如果不相见 便可不相念 如果不相知 便可不相思"是哪首歌中的歌词 大家说的iphone滑动跟手是个什么意思 宁化和长汀哪个好 福建龙岩长汀经济,交通怎么样? 长汀还是贫困县吗 长汀县哪个镇最富裕 惠普typec转hdmi线 关于福建省龙岩市长汀县有没有人比较了解? 飞致150发动机什么材质 无剑和飞致谁快 三星s105g红外怎么用 飞致150和天剑车架一样吗 雅马哈飞致150和天剑150的车头一样吗 超导中的电流大小由什么决定啊? 为什么酷狗音乐自动续费取消了还不退钱 哈弗H2代步——详细分享今日380公里的用车经过 369公里路程,开哈弗H2跑高速的整个过程分享! 哈弗h2可以植入软件吗 手机淘宝被显示为恶意应用程序为哪般? 三星s10屏幕划痕 cat5e支持1000m宽带吗 天猫店进账款怎么能不走基本账户 2019 天猫提现怎么可以不经过对公账户 微信头像黑底红圈是什么意思 ipad air2可以用联通4g吗 iPadair2 4g版支持移动联通电信234g都支持吗? ipad mini 2支持联通4g吗 华为mate20怎么开启蓝牙两种方法分享给您 英语二2021真题-完型“关于目标设定” 英语二2021年真题-翻译 为什么我的微信老是提示被举报? 手机的ip地址在哪里查看 酷狗直播怎么直播 我想问问苹果x镜头是什么镜头