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

iOS内购:自动续期订阅总结,第1张

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

主要参考如下解决:

上面的部分解决了消耗型商品内购的功能。

但是此篇是自动订阅:所以需要增加一个参数: password: 秘钥, 就可以了, 但是官方文档说秘钥仅仅用在自动续订上面

大家叫后台加个验证,如果苹果验证返回21004的话(21004 你提供的共享密钥和账户的共享密钥不一致),就加上password字段去验证,可以成功。 秘钥去 https://itunesconnectapplecom/ 里面对应的APP里创建

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

31 订阅状态的处理

主要处理如下:

如果您阅读了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://forumsdeveloperapplecom/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://helpapplecom/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://buyitunesapplecom/WebObjects/MZFinancewoa/wa/manageSubscriptions

参考:

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

就是程序内有付费的内容

以下为介绍:

  In App Purchase 给您支持各种不同的商业模型提供了灵活性。您可以在您的程序内给客户提供附加的服务和内容。

  例如,您可以创建一个订阅杂志的程序,而用户可以按月,按年,或者按照您选择的周期付款。在游戏中客户需要付费以进行更高级别的体验。在一个通用的城市地图程序中,用户可以按照选择的城市来付费。这种新的能力带来了很多商机。

  您只需创建程序,我们提供付款机制。新Store Kit框架提供了通过 iTunes Store 处理付款的能力。您将付款项提交到 iTunes Store 中并设定价格。当客户选择付款时,您的程序会创建一个支付请求并发送给 iTunes Store 来处理。在 iTunes Store 验证并批准该请求后,您的程序会得到通知从而可以提供随后的功能或内容。

  相似的商业条款。In App Purchase 使用和 App Store 中同样的商业条款。您将收到您的程序中付款项价格的 70%,按月付款 — 没有额外的信用卡费用。

  大体来讲,购买成功后,苹果AppStore服务器会向app端返回此次交易的数据,其中有这笔付款的收据(Receipt)。然后app与游戏服务器通讯,把购买成功的信息通知服务器端(为了防止越狱和IAP free等插件造成的欺诈性购买,还需要把收到的receipt发给游戏服务器,游戏服务器再将其发往苹果AppStore服务器验证其真实性)。服务器端确认此次购买成功后,修改服务器端记录的此客户端对应的财富值,并将修改后的结果反馈回App端,App端随之作相应更新。

       与服务器端的通信,就是一个RPC的过程,服务器端写好一些供调用的API接口,在客户端联网调用,具体有什么xmlrpc, jsonrpc的,都有开源的框架可以使用。

注意:客户端与游戏服务器端通信的时候,必需附带一个标识其身份的代码(UUID或者帐号名称),否则服务器端无法知道是谁进行了充值。

是的。

网站api接口开发不仅仅局限在某些类型的网站上,市面上很多的网站只要是想传输数据给他人的都需要做网站api接口开发。通过api接口开发,他人可以获取我们网站上的数据,这里头的数据不仅仅是指一些账号密码数据,还有其他的各种类型的数据;也可以是传输给我们数据在我们现有数据库上做验证。市面上我们经常在接触的网站API接口开发有腾讯账号同步登录、微信公众号/小程序系统、微博账号密码同步等等,这些都是很常见的。还有的就是各种网站为了提供数据而开发的各种API接口了,也就是不同网站间要数据传输,API接口开发就是必要的。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » iOS内购:自动续期订阅总结

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情