验证 Mac App Store 收据服务器端

Posted

技术标签:

【中文标题】验证 Mac App Store 收据服务器端【英文标题】:Validate Mac App Store receipt server side 【发布时间】:2014-05-22 08:05:49 【问题描述】:

我已将 IAP 添加到我的 Mac Appstore 应用程序中。我无法正确验证收据服务器端。我正在使用此代码阅读收据:

NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];

// This is my own method to convert to base64
NSString *receiptString = [NSData base64forData:receipt];

然后我将数据发送到我的服务器,该服务器依次查询https://buy.itunes.apple.com/verifyReceipt 以查看收据是否有效。无论我尝试什么,我总是以无效收据告终。我也尝试过使用gem Venice,当我将我的收据文件作为纯文本提供或使用base64 命令行工具编码时,它也会出现同样的问题。但与此同时,无论我在/Applications 中的所有应用程序中尝试使用哪个收据文件,它都会失败。

有人在 Mac Appstore 上成功实现了收据验证吗?

【问题讨论】:

【参考方案1】:

在对此进行了更多调查后,我终于找到了一个适用于 Mac Appstore 收据的 gem:itunes-receipt

require 'itunes/receipt'

# pass Base64 encoded raw receipt data which you received from your app
receipt = Itunes::Receipt.verify! 'ewoJInNpZ25hdHVyZSIgPSAi...'
receipt.product_id     # => 'com.example.products.100gems'
receipt.transaction_id # => '1234567890'

【讨论】:

以上是关于验证 Mac App Store 收据服务器端的主要内容,如果未能解决你的问题,请参考以下文章

在哪里可以找到 iOS App Store 收据验证的共享密钥?

我们如何在服务器端验证 Android 应用内计费收据?

在服务器端验证 Mac OS X 的耗材应用内购买

App for Mac App Store 签名后不运行

是否有一种简单的方法可以在 App Store 上检查用户的订阅状态,或者唯一的方法是进行收据和订阅验证?

iOS中应用内购买的服务器端验证最佳实践