苹果内购续订产品

关于苹果内购续订产品的理解

App端

1、正常购买逻辑不变。

2、切记购买结束,我们服务器验证成功之后一定要finishTransaction  finishTransaction  finishTransaction  重要的事情说三遍 那些打开APP收到很多次购买凭证的都是没有正确的finishTransaction。

3、自动订阅的续费 ,我们在APP启动时一定要加内购监听 苹果会在自动续订快到期时间24小时发送凭证的。

4、附上一个别人的链接。https://www.jianshu.com/p/687c34c11002  自动订购的比较详细但是正如我上面所说的finish他没有完全理解。

服务端

返回值说明

如果用户的收据是有效的,订阅被激活,则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包含。你的服务器可以使用新的收据来维护最新更新订阅的信息。

你可能感兴趣的:(苹果内购续订产品)