首先,我不是在谈论呼叫 https://buy.itunes.apple.com/verifyReceipt/,相反,我要问的是如何验证来自我们一位用户的iTuneStore收据。
我们的应用中有应用内购买,并且在授予产品之前,我们会在服务器上验证游戏内收据。但是,该特定用户声称他被iTunes商店收取了费用,但没有获得购买的产品,并将他的收据发送给我们作为证明。
所以我想知道我们是否可以验证这样的收据。iTunes Store收据中有"收据编号"和"订单号",但是,通过游戏内收据验证,我们会得到transaction_id,并且这些数字完全不同。知道吗?
提前谢谢。
您应该联系Apple的开发人员支持。如果您在自己的系统中找不到相应的交易,我怀疑是否有办法自己验证它。
没有手动方法可以做到这一点,除非你可以以某种方式从他的设备获取收据数据,在这种情况下,你可以使用你提到的Apple的API来验证他的说法。如果他说的是真的,那么建议他要求退款,然后重新购买。他应该能够在这里做到这一点。
现在,App Store Server API 的查找订单 ID 可以使用订单 ID 从收据中获取客户的应用内购买。
GET https://api.storekit.itunes.apple.com/inApps/v1/lookup/{orderId}
您可以从此 API 响应中找到相应的transactionId
JWSTransactionDecodedPayload
有关如何请求查找订单 ID,请参阅 https://github.com/richzw/appstore#look-up-order-id
https://github.com/roddi/ValidateStoreReceipt/blob/master/validatereceipt.m 有源代码可以验证收据,并允许您解析它并转储所有交易。如果 IAP 交易在那里,您将看到它。
您必须编写一个使用该代码的特殊用途iOS应用程序,并向其提供收据。这似乎有很多工作要做。
我不是在谈论打电话给 https://buy.itunes.apple.com/verifyReceipt/
实际上,您有在线收据验证工具,可通过上面的链接访问。没有更好的方法来验证您的收据。离线验证是可能的,但即使成功了,也没有人可以 100% 保证您的收据有效(也许只是相同的签名,但仍然是假的)。
Apple在其服务器上处理每次购买,如果成功,收据将保存到数据库中。如果您想检查收据,您必须访问该数据库并请求您的收据。所以你有一个工具,但不想使用它?那就没有可靠的方法了。