从StoreKit指南中可以得到以下信息:
如果用户尝试购买他们已经购买过的非消耗品或可续订订阅,您的应用将会收到一笔常规交易而不是恢复交易。但是,用户不会再次被收费。您的应用程序应该像处理原始交易一样处理这些交易。
这在我正在开发的应用中带来了一个巨大的问题。我们已经从出版商那里获得了大量内容许可,以通过应用内购买进行销售。他们要求我们每次销售这些内容(即用户向我们付款)时,我们的服务器都必须调用他们服务器上的API来报告交易。这是为了会计目的,并最终用于确定我们在月底向他们支付多少款项,根据我们与他们的协议。
我已经读到了一些关于频繁调用restoreCompletedTransactions并在设备上维护对用户已经购买的内容的本地理解的建议,以便不能让他们再次购买。对我来说,这似乎应该能够在服务器端实现。然而,我们从Apple服务器收到的收据对于购买和重新购买确实是完全相同的,就像StoreKit指南所承诺的那样。
如果无法信任StoreKit的付款回调作为这种情况下的有效会计机制("您已经付款"与"您没有付款"),那么还有哪些实时交易流量洞察可用?我认为,我们正在与之合作的出版商如果告诉他们我们必须在月底之后等待45天才能从iTunes Connect中获得真正的付款金额,他们是不会高兴的。