苹果如何通知iOS应用程序退款的应用程序内购买(IAP)?
我已经在我的应用程序中成功实现了Apple iOS IAP,并在沙箱中进行了testing。 很好用。
我担心用户可以用IAP购买东西,下载到我的应用程序,然后抱怨苹果,并获得退款。 退款没有明显的方式报告给我的应用程序。 他们是否被简单地从我在“恢复”操作期间收到的产品列表中排除? 是否有一些未logging的交易types在退款时在我的SKPaymentTransactionObserver中asynchronous显示?
现在,我正在假设我需要在执行还原之前删除用户的IAP事务,并且任何退还的内容都不会包含在还原的事务列表中。 这是正确的做法吗? 有什么方法可以在沙盒中testing吗?
有没有人在生产环境中看到退款,并可以解释他们如何工作?
应用内购买指南讨论了订阅“取消”的概念。 这是我见过的唯一讨论这个问题的地方。
有关取消date字段的更多详细信息,也可以在App Store收据validation文档中find。
cancellation_date
解码收据后,你可以得到取消date,这将告诉你以下几点:
对于Apple客户支持取消的交易,取消的时间和date。
退款是给出的,但你的应用程序根本没有得到他们的通知。 无论是应用程序内购买,应用程序下载还是任何其他iTunes内容,即使用户要求退款,用户也仍然可以使用该内容。
策略是:
-
您保存数据库中与用户帐户关联的
latest_receipt
(“MIIUJgYJKoZIhvc …”base64)字段。 -
你每天查询苹果来validation所有的收据,通过发送他们从保存的
latest_receipt
字段的base64收据。 -
在收据中检查是否存在
cancellation_date
字段。 如果你find它,请按照文件处理 :
把取消的收据当作没有任何购物一样进行处理。
您也一样检查订阅续订(检查expires_date_ms
字段)。