3

我们最近推出了只有消耗品应用内购买的应用。我们注意到很多虚假购买 - 购买带有无效收据和“有效”收据,但来自苹果的验证响应中的“in_app”数组是空数组。我需要知道用户如何形成这样的“有效”收据?是收到应用下载而不是应用内购买还是什么?我现在将以下检查用于验证。从 Apple 的 json 响应中提取“in_app”字段,如果它非空,则检查 product_id 是否匹配。我需要知道这张支票是否足够,或者他们是一个更好的万无一失的支票。

4

2 回答 2

0

所有应用程序都有收据。那些购买了 IAP 的应用在其收据中有一个 in_app 字段。您的用户正在将虚假呼叫推送到他们的 updatedTransaction 方法中,并且您正在获取他们的收据(没有 IAP,因为他们没有购买)并将其发送到您的服务器。其他用户可能会从某个地方交换一些收据(例如,30 个窃贼中的一个进行购买并提取该有效收据并将其发送给他们的 29 个共同窃贼)。如果他们将该收据粘贴到他们的设备中,然后推送对 updatedTransactions 的调用,那么您的服务器将获得他们现在有效但重复的收据。您的服务器需要检查 *** 收据的日期,并发现它比最近更早,或者甚至比您需要共同发送到服务器的 paymentRequest 更早。(最好在设备上解码 - 更安全)

*** 您曾经能够检查 transaction_id 是否有重复的 transaction_id。不幸的是,您不能再这样做了,因为 restoreCompletedTransaction 返回与原始购买相同的 transaction_id。我已经告诉苹果这件事,他们不理我。

于 2016-05-05T01:32:44.007 回答
0

请参阅此应用内购买常见问题解答我的应用在成功购买后通过 paymentQueue:updatedTransactions: 在 App Store 验证其收据。但是,返回的收据包含一个空的 in_app 数组,而不是预期的产品。

一个空的 in_app 数组表示 App Store 还没有为用户记录任何交易。可能是申请回执尚未更新。发生这种情况时,您的应用程序可以通知用户收据不是最新的,并询问是否刷新它。

有关消耗品的信息会在付款时添加到收据中,并保留在收据中,直到您完成交易。完成交易后,下次更新收据时会删除此信息。因此,如果您的应用只销售消耗品,则会导致一个空的 in_app 数组。

于 2019-08-20T11:21:51.353 回答