Apple内购(IAP)数据处理

Apple内购(IAP)数据处理

App 内购买项目允许顾客通过访问 App Store 购买 App 中的内容、功能或服务,并安全处理来自用户的付款。本文主要记录IAP数据处理的一些主要逻辑和官方文档概要,会持续完善。

自动续订服务端通知

App Store Server-to-Server Notifications 官方文档

通知类型 文档通知类型的值(notification_type)CANCEL表示Apple客户支持取消了订阅或用户升级了订阅。 cancel_date键包含更改的日期和时间。

DID_CHANGE_RENEWAL_PREF指示客户对其订购计划进行了更改,该更改在下一次续订时生效。 当前有效的计划不受影响。

DID_CHANGE_RENEWAL_STATUS指示订阅续订状态的更改。 在JSON响应中,检查auto_renew_status_change_date_ms以了解上一次状态更新的日期和时间。 检查auto_renew_status以了解当前的续订状态。

DID_FAIL_TO_RENEW表示由于计费问题而无法续订的订阅。 检查is_in_billing_retry_period以了解订阅的当前重试状态。 如果订阅处于计费宽限期内,请检查grace_period_expires_date以了解新服务的到期日期。

DID_RECOVER表示成功的自动更新已过期的订阅,而该订阅过去无法更新。 检查expires_date,以确定下一个续订日期和时间。

DID_RENEW表示客户的订阅已成功自动续订了新的交易期。

INITIAL_BUY在用户最初购买订阅时发生。 通过在App Store上对其进行身份验证,可以将Latest_receipt作为令牌存储在服务器上,以随时验证用户的订阅状态。

INTERACTIVE_RENEWALI表示客户使用您的应用程序界面或在“帐户订阅设置”中的App Store上以交互方式续订了订阅。 立即提供服务。

PRICE_INCREASE_CONSENT表示App Store已开始要求客户同意您的应用的订阅价格上涨。 在Unified_receipt.Pending_renewal_info对象中,price_consent_status值为0,表示App Store正在征求客户的同意,但尚未收到。 除非用户同意新价格,否则订阅不会自动续订。 当客户同意提价时,系统将price_consent_status设置为1。使用verifyReceipt检查收货以查看更新的价格同意状态。

REFUND表示App Store已成功退款交易。 cancel_date_ms包含已退款交易的时间戳。 original_transaction_id和product_id标识原始交易和产品。 cancel_reason包含原因。

RENEWAL (DEPRECATED IN SANDBOX)表示成功的自动更新已过期的订阅,而该订阅过去无法更新。 检查expires_date,以确定下一个续订日期和时间。 此通知在沙盒环境中已弃用,计划于2021年3月在生产中弃用。更新现有代码以改为依赖DID_RECOVER通知类型。

处理通知事件

订阅或应用内购买活动

触发通知类型

客户完成了对订阅的初次购买

INITIAL_BUY

订阅处于活动状态; 用户升级到另一个SKU

CANCEL, DID_CHANGE_RENEWAL_STATUS, INTERACTIVE_RENEWAL

订阅处于活动状态; 用户降级到另一个SKU

DID_CHANGE_RENEWAL_PREF

订阅已过期; 用户重新订阅了相同的SKU

DID_CHANGE_RENEWAL_STATUS

订阅已过期; 用户重新订阅了另一个SKU(升级或降级)

INTERACTIVE_RENEWAL, DID_CHANGE_RENEWAL_STATUS

用户在App Store帐户的“订阅”设置中禁用了自动续订的订阅,从而有效地取消了订阅

DID_CHANGE_RENEWAL_STATUS

AppleCare退还了订阅

CANCEL, DID_CHANGE_RENEWAL_STATUS

由于结算问题,订阅无法续订

DID_FAIL_TO_RENEW

App Store通过计费重试恢复了已过期的订阅

DID_RECOVER

失败的帐单重试尝试后,订阅流失

DID_CHANGE_RENEWAL_STATUS

AppleCare成功退还了有关消耗性,非消耗性或非续订订阅的交易

REFUND

您已经提高了订阅价格,并且客户必须同意涨价后才能自动续订订阅

PRICE_INCREASE_CONSENT

订阅成功自动续订

DID_RENEW

使用沙盒测试通知事件沙箱中提供以下通知类型:INITIAL_BUY,DID_CHANGE_RENEWAL_PREF,DID_CHANGE_RENEWAL_STATUS,DID_RENEW和INTERACTIVE_RENEWAL。

有关测试应用内购买的更多信息,请参阅使用沙盒测试应用内购买。

Receipt验证数据解析当完成支付或更新订单状态后,从沙箱中读取到支付凭证(Receipt)

[[NSBundle mainBundle] appStoreReceiptURL]

将receipte数据使用base64编码字符串,和共享秘钥一起,拼接成json。使用POST请求向Apple服务器获取验证数据。

1234{ "receipt-data" : "BASE64 RECEIPT", "password" : "SHARED KEY"}

向Apple服务器验证receipt沙箱验证地址https://sandbox.itunes.apple.com/verifyReceipt正式验证地址https://buy.itunes.apple.com/verifyReceipt

相关推荐

欧路词典|英汉-汉英词典 服务员是什么意思
365bet网址是多少

欧路词典|英汉-汉英词典 服务员是什么意思

📅 08-06 👁️ 335
男性陰莖尺寸正常值及測量方式探討-泌尿科
365bet足球比分直播

男性陰莖尺寸正常值及測量方式探討-泌尿科

📅 09-04 👁️ 3900
2018年世界杯完整赛程:日期、时间与场馆一览
365bet足球比分直播

2018年世界杯完整赛程:日期、时间与场馆一览

📅 09-18 👁️ 5264