我正在测试应用内购买功能并停留在收据验证步骤中。我的收据验证是自定义的,并且基于我在服务器端进行的检查数量(调用我的服务器 API),其中之一是 transactionID 唯一性以确认付款的条件。因此,使用 RMStore 我成功获得了收据,并且 addPayment 函数将唯一交易返回到成功块。之后,我正在运行 verifyTransaction 并在成功块内调用receiptURL。不幸的是,看起来我总是使用receiptURL获得相同的收据,当我将它发送到我的服务器时,它会以错误响应我事务ID已经存在于数据库中并且事务ID不是唯一的。此错误表明即使我进行新付款,我也会发送相同的收据。请注意,我使用的是消耗品。
有人可以向我展示我在下面提供的功能的正确工作流程吗(?):
- [RMStore productRequest] - 我在 init 函数中直接调用它。
- [RMStore addPayment] - 这是我需要了解的后果的开始。
- [[[RMStore defaultStore].transactionPersistor consumeProductOfIdentifier:pID] -- 我需要调用这个函数吗?每次付款时,Apple 都会向我发送唯一的 transactinID,调用此函数没有任何影响。
- [[[RMStore] defaultStore].receiptVerificator verifyTransaction:transaction] -- 我需要调用交易验证吗?
- [RMStore receiptURL] 或 [[NSBundle mainBundle] appStoreReceiptURL] - 这些方法可以让receiptURL 相等吗?两者都不像我预期的那样工作。
- [NSData dataWithContentOfURL:receiptURL] - 这是我遇到的主要问题。经过我上面提到的功能组合的不同尝试后,该方法总是返回具有相同事务ID的收据。这让我觉得在运行#5、#6 之前我需要刷新现金才能获得最后一张收据,但目前尚不清楚如何做到这一点。
所以,RMStore wiki 看起来不错,但我一直期望这个库会给我一个机会,让我不完全了解幕后发生的事情。不幸的是,对于 RMStore,我必须调查 Apple in app purchase API 的工作原理。如果将提供函数调用的结果,则可以解决此问题,但我无法在任何地方找到它(!)
有人可以查看我在上面提供的功能列表并帮助我将它们按正确顺序排列是什么让我解决了在购买后获得最后一张收据的问题?