验证Mac App Store收据服务器端

koo*_*jah 6 macos mac-app-store receipt-validation

我已将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];
Run Code Online (Sandbox Code Playgroud)

然后我将数据发送到我的服务器,然后查询https://buy.itunes.apple.com/verifyReceipt以查看收据是否有效.无论我在尝试什么,我总是收到无效的收据.当我将收据文件作为纯文本提供或使用命令行工具编码时,我也尝试使用具有相同问题的gem Venicebase64.但同时它失败了我从我的所有应用程序中尝试的任何收据文件/Applications.

有没有人在Mac Appstore上成功实施了收据验证?

koo*_*jah 3

经过更多调查后,我终于找到了一个可以与 Mac Appstore 收据配合使用的宝石: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'
Run Code Online (Sandbox Code Playgroud)