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