IPHONE应用内购买:是否可以在不使用外部服务器的情况下验证收据?

时间:2009-10-04 01:39:43

标签: iphone iphone-sdk-3.0

交易完成后,我收到了应用程序存储的记录交易的收据,如果收据有效,我想询问苹果的服务器。

有没有办法不使用外部服务器

4 个答案:

答案 0 :(得分:6)

  

如果此收据有效,我想询问Apple的服务器。

     

有没有办法在不使用外部服务器的情况下执行此操作?

也许只是我,但似乎你要求在不联系服务器的情况下联系服务器,这恐怕是不可能的。

答案 1 :(得分:2)

据我所知,Apple提供的json服务很少:

一个用于In App沙箱(提交前):
https://sandbox.itunes.apple.com/verifyReceipt

App Store版本之一:
https://buy.itunes.apple.com/verifyReceipt

您可以致电他们发送收据:

{
    "receipt-data" : "(actual receipt bytes here)"
}

它返回答案:

{
    "status" : 0,
    "receipt" : { ... }
}

我假设您可以在iPhone应用程序中直接调用该服务,或者您可以调用自己的服务器脚本作为Apple服务的代理。这取决于您的应用程序逻辑。如果您需要检查服务器上的收据(IE。授权下载),您应该调用服务器脚本,否则您可以直接从应用程序验证收据。

文档参考: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.html

答案 2 :(得分:1)

这个案子解决了。只使用iphone就可以做到这一点。

答案 3 :(得分:1)

澄清:

  • 只有Apple Server才能提供有关a的有效性的信息 交易收据。事实上,你必须联系这台服务器 找出产品是否仍然有效(或者用户是否有效) 取消订阅)。
  • 在网络上,您会得到这样的印象 它根本不是,或者至少不是以任何安全的方式,可能的 只需通过HTTP-POST从您的应用程序中联系此Apple Server。 似乎每个人都相信你需要一个Web服务器 从您的应用程序联系,您应该只联系Apple的 来自您的Web服务器的服务器。
然而,Apple甚至提供了如何在没有其他Web服务器的情况下安全地联系验证服务器的实现代码(我希望我之前已经找到): http://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidation/_index.html 这个实现类似于lomanf提到的,更详细,并且具有使其即使使用iOS 5.x也能工作所需的所有安全性。 所以答案是肯定的:是的。