我在我的应用程序中成功实现了Apple iOS IAP并在沙箱中进行了测试。效果很好。
我担心用户可以用IAP购买东西,将其下载到我的应用程序中,然后向Apple投诉并获得退款。没有明显的退款方式报告给我的应用程序。它们是否被排除在“恢复”操作期间收到的产品列表之外?是否有一些未记录的交易类型会在退款时异步显示在我的SKPaymentTransactionObserver中?
现在我的运营假设我需要在执行恢复之前删除用户的IAP事务,并且退回的任何内容都不会出现在已恢复的事务列表中。这是正确的方法吗?有没有办法在沙箱中测试?
有没有人在生产环境中看到过退款并且可以解释它们是如何工作的?
答案 0 :(得分:9)
The in-app purchasing guide讨论了“取消”订阅的概念。这是我见过的唯一一个讨论这个主题的地方。
有关取消日期字段的Further details也可以在App Store收据验证文档中找到。
cancellation_date
解码收据后,您可以获得取消日期,该日期将告诉您以下内容:
对于Apple客户支持取消的交易,取消的时间和日期。
答案 1 :(得分:6)
我今天(2018年12月6日)收到了Apple开发人员关系的回复:
你好约翰尼斯,
很遗憾,回答您的问题时,没有支持的方法来检测用户已联系Apple Care并从应用内购买消耗品获得退款。我可以推荐给您的唯一选择是提交API增强请求,以使API可用于应用程序,以检测是否向应用程序内购买用户提供了退款。目前,此支持实际上仅适用于提供可自动续订的应用内购买的应用。
您可以使用Apple开发人员错误报告网页-http://bugreport.apple.com
提交增强请求。由于这是一个增强请求类型的问题,我将安排将此事件从您的帐户中取消开帐单,以备将来使用。
所以我们有它。
答案 2 :(得分:4)
已退款,但您的应用根本不会收到任何通知。无论是应用程序内购买,应用程序下载还是任何其他iTunes内容,即使用户要求退款,用户仍可以使用该内容。
答案 3 :(得分:4)
策略是:
您在数据库中保存latest_receipt
(“MIIUJgYJKoZIhvc ...”base64)字段,并与用户帐户相关联。
每天您通过向已保存的latest_receipt
字段发送base64收据来查询apple以验证所有收据。
在收据中,您检查是否有cancellation_date
字段。如果您找到它,请根据documentation:
对待已取消的收据,就像没有购买一样。
同样您还要检查订阅续订(请查看expires_date_ms
字段)。
答案 4 :(得分:1)
在iOS 14中,将新方法添加到SKPaymentTransactionObserver协议中,当用户不再有权进行一次或多次应用内购买时调用该方法?https://developer.apple.com/documentation/storekit/skpaymenttransactionobserver/3564804-paymentqueue 尽管文档中没有说明在哪种情况下调用此方法,但Apple确实在WWDC2020视频中的26:55 tell https://developer.apple.com/videos/play/wwdc2020/10661/
中对此进行了说明。答案 5 :(得分:0)
根据最新文档,类型为length.out
的{{3}}正在由Apple客户支持处理取消情况。