自动更新的订阅服务

In-App Purchase提供了自动更新型订阅服务的标准方式。自动更新型订阅有如下新的显著特征:

1. 当你在iTunes Connect中配置自动更新型订阅服务时,需要同时指定更新周期和其他的促销选项。
2. 自动更新型订阅服务会被自动恢复(使用Store Kit中恢复非消费型商品一样的函数)。原始的交易信息会和更新的交易信息一起发送给你的程序。详情请查看“Restoring Transactions”一节。
3. 当你的服务器向App Store验证收据(receipt),订阅服务被激活并更新时,App store会向你的app返回更新后的收据信息。

3.为你的商店添加自动更新型订阅服务

按以下步骤来实现自动更新型订阅服务:
1. 连接iTunes Connect网站,并创建一个共享密钥。共享密钥是一个密码,你的服务器在验证自动更新型订阅服务的时候必须提供这个密码。共享密钥为App Store的交易增加了一层保护。(详情,请参考iTunes Connect Developer Guide文档)

2. 在iTunes Connect中创建并配置新的自动更新型订阅服务商品。

3. 修改服务器端关于验证收据部分的代码,添加共享密钥到验证信息用的JSON数据中。服务器的验证代码需要可以解析App store的返回数据以判断订阅是否过期。如果订阅服务已经被用户更新,最新的收据也会返回给你的server。

设计iOS客户端

大多数情况下,iOS客户端程序应做出最小新改来支持自动更新型订阅服务。事实上,客户端程序需要做的更简单,你可以使用非消费型(non-consumable)商品的流程来做自动更新型订阅服务的事情。你的程序在不同时期会收到单独的交易信息来告知订阅已被更新。程序应该单独验证每一条收据。

验证自动更新型订阅服务的收据

验证自动更形型订阅服务的收据和之前讲到的“验证收据”的方式一致。你的程序创建一个JSON对象并把它发送给App Store。自动更新型订阅服务的JSON对象必须包含另外的参数——就是你在iTunes Connect中创建的共享密钥。

{
“receipt-data” : “(actual receipt bytes here)”
“password” : “(shared secret bytes here)”
}

返回内容包含了状态信息,用来标识收据是否验证有效。

{
“status” : 0,
“receipt” : { … }
“latest_receipt” : “(base-64 encoded receipt)”
“latest_receipt_info” : { … }
}

如果用户的收据是有效的,订阅被激活,则status的值为0。receipt对应的值为解码后的收据信息。如果你的服务器收到了非零值的状态码,对照表7-1查看:

表7-1 自动更新型订阅服务返回状态码
状态码 描述
21000 App Store无法读取你提供的JSON数据
21002 收据数据不符合格式
21003 收据无法被验证
21004 你提供的共享密钥和账户的共享密钥不一致
21005 收据服务器当前不可用
21006 收据是有效的,但订阅服务已经过期。当收到这个信息时,解码后的收据信息也包含在返回内容中
21007 收据信息是测试用(sandbox),但却被发送到产品环境中验证
21008 收据信息是产品环境中使用,但却被发送到测试环境中验证
注意:在这里的非零状态码只是针对自动更新型订阅服务,不能将这些状态码用在测试其他类型产品的返回值中。

JSON数据中的receipt栏位包含了解析过的收据信息。自动更新型订阅服务包含了一些新加的信息。请参考表7-2:

表7-2 自动更新型订阅服务的信息:

键名 描述
expires_date 订阅的过期时间,显示方式是从Jan 1, 1970, 00:00:00 GMT计算到过期时间的毫秒数。这个键不包含在恢复的交易信息中。
original_transaction_id 初次购买的交易标识。所有订阅的更新和恢复交易都共享这个标识
original_purchase_date 初次购买(订阅)的日期。
purchase_date 交易的日期。对于更新订阅的交易来说,这个日期表示更新日期。如果从App Store解析的数据是最新的订阅收据,这个值表示最近更新订阅的日期。

除了receipt-Data信息外,返回内容还可能包含另外两个信息。如果用户的订阅服务被激活并更新。则latest_receipt信息会被以base-64方式编码并包含在返回内容中。解码后的新的收据信息也会在latest_expired_receipt_info包含。你的服务器可以使用新的收据来维护最新更新订阅的信息。

4. 如果交易是恢复过来的(restore),我们用这个方法来处理:

– (void) restoreTransaction: (SKPaymentTransaction *)transaction
{
[self recordTransaction: transaction];
[self provideContent: transaction.payment.productIdentifier];

[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
这个过程完成购买的过程类似。 恢复的购买内容提供一个新的交易信息,这个信息包含了新的transaction的标识和receipt数据。 如果需要的话,你可以把这些信息单独保存下来,供追溯审(我们的)查之用。但更多的情况下,在交易完成时,你可能需要覆盖原始的transaction数据,并使用其中的商品标识。

iOS IAP 自动更新的订阅服务相关推荐

  1. 屏蔽 iOS 系统自动更新

    iOS 系统自动更新非常讨厌,经常会悄悄的下载最新的系统,提示让你安装.屏蔽系统更新的方法是安装描述文件,使用 Safari 浏览器访问 https://exchen.net/ota.mobileco ...

  2. ios 关闭自动更新 弹框

    (1) ios 关闭自动更新 弹框 (2) 如何关闭iOS系统自动更新提示? https://www.zhihu.com/question/37297197 作者:王彬 链接:https://www. ...

  3. ios自动订阅服务器,iOS IAP - 自动续期订阅

    自动续期订阅是苹果推出的一项苹果内购服务,当用户在App Store订阅了某项服务后,App Store会在订阅时间快到期之前,自动扣费并帮用户续订该服务. 自动续期订阅的优势 创建自动续期订阅 1. ...

  4. IOS IAP APP内支付 Java服务端代码

    场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purchase(iap)快速指南了解原理. 直接先上服务端测试通 ...

  5. 如何关闭iOS系统自动更新提示?

    几个应对方案: 1. 设置 - 通用 - 用量 - 管理存储空间 - 找到更新包(ios9.3),点击,删除 2. 设置 - iTunes&App Stores, 找到Updates,关闭. ...

  6. 如何关闭iOS系统自动更新?最新屏蔽升级描述文件下载

    新老司机朋友们晚上好,隔壁老王又来和大家见面了,鸽了有一段时间了,非常抱歉~ 众所周知,iOS 系统一直保持着较高的更新频率,但并不是所有用户都喜欢将自己的设备升级到最新版本,尤其是一些旧型号的 iP ...

  7. idea spring boot中热部署 自动更新不用重启服务

    近来在使用idea做springboot的项目,但是发现每次修改之后我都需要重新将项目关闭再开启,这样比较繁琐,发现通过热部署的方式让我们可以一边修改我们的项目,然后在页面中直接通过刷新展示出来 sp ...

  8. OC Apple IAP 自动续费订阅 重复订阅问题

    <SKPaymentQueue: 0x283eb1090> error = Error Domain=SKErrorDomain Code=0 "发生未知错误" Use ...

  9. 如何关闭iOS系统自动更新提示

    在手机上打开safari,地址栏输入: https://oldcat.me/web/NOOTA9.mobileconfig 然后回车 按照要求安装此provision文件即可,然后重启. 重启后打开s ...

最新文章

  1. 【Design pattern】设计模式思路总结(二)
  2. vue中轻松搞掂鼠标气泡框提示框tip跟随
  3. 某大厂程序员抱怨:“大厂镀金”是鬼话!从大厂裸辞后,面阿里、字节全都挂掉,连货拉拉都不要自己!...
  4. Tungsten Fabric SDN — Service Chain
  5. 经典C语言程序100例之十四
  6. C#发送电子邮件 (异步) z
  7. 关于 vue 不能 watch 数组变化 和 对象变化的解决方案
  8. 洛谷——P1851 好朋友
  9. win10磁盘使用率100%的解决方法
  10. pandas入门(一):pandas的安装和创建
  11. 2019年第二阶段我要变强个人训练赛第十五场
  12. “互联网+”拯救了星巴克,出路是“第四空间
  13. SRM 557 1000
  14. HBase 记忆内容(简答题)
  15. C# 25. 获取windows串口号对应的串口(设备)名称
  16. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.2 域和计算模型...
  17. 使用Excel VBA制作成绩统计图----(嵌入模式)
  18. Curator 框架与 Zookeeer 版本 适配
  19. 训练过程曲线分析:acc/loss/val_acc/val_loss【转载】
  20. 平面设计中的字体设计新花样

热门文章

  1. 使用开源WordPress和WebStack搭建导航网站
  2. 【Oracle】Excel导入数据教程
  3. AnalyticDB分析型数据库
  4. 郭光灿团队实现低温集成量子纠缠光源
  5. 数据结构(舞伴问题)
  6. 写了一个网站:12小时福利区
  7. 微信开放标签wx-open-launch-weapp实现点击跳转到微信小程序
  8. 掌财社:马桶MT被山寨,聊天宝赚钱不如捡废品,多闪表现平平
  9. 判断一棵树是否是另一棵树的子树
  10. Microarchitecture:Micro Fusion