对于iOS应用内购买,我们可以使用在线API进行验证,这意味着我们可以在自己的服务器上验证购买。
是否有任何适用于OS X应用内购买验证的方式(API)?
我只发现了有关Mac应用内验证的代码片段,似乎Apple没有提供任何在线验证的API。
或者,苹果是否有计划支持OS X的在线验证?
是否有任何适用于OS X应用内购买验证的方式(API)?
我只发现了有关Mac应用内验证的代码片段,似乎Apple没有提供任何在线验证的API。
或者,苹果是否有计划支持OS X的在线验证?
我的应用EasyBooks提供一个在线组件,用户每年需要付费。将其设置为非消耗性类型没有意义,因为它只能作为可消耗品使用(虽然在iOS中它实际上是非重复订阅)。我想在应用内提供这个功能,我认为我终于有了解决方案...
我使用了我的一个苹果DTS票据来查询StoreKitGuide文档中的一项声明。它说...
"OS X支持本章描述的服务器验证方法和本地验证方法..."
我收到了苹果的回复...
“验证Mac应用程序内购买产品的步骤与iOS应用程序相同。不同之处在于您将分配您的base64编码的应用程序收据(而不是transactionReceipt属性的内容)到receipt-data字段。检索您的应用程序的完整Mac App Store收据,然后使用base64编码对其进行编码。创建一个名为receipt-data的单个键的JSON对象,并将编码的收据分配给它。按照In-App Purchase编程指南中的验证应用商店收据部分的说明进行操作。”找到Mac应用的购买凭证文件(一旦您运行应用程序并输入了您的(测试)Apple ID和密码,它就在应用程序包中)。
在命令行上,base64 -i receipt
将使用没有换行符(这很重要)的方式对收据进行base64编码。
再次在命令行上,curl -d '{ "receipt-data": "<your b64 string here>" }' https://sandbox.itunes.apple.com/verifyReceipt
这将返回JSON格式的数据。
{"status":0,
"environment":"Sandbox",
"receipt":{"adam_id":"0",
"bundle_id":"uk.co.geode.easybooks",
"application_version":"2.2.7",
"download_id":"0",
"in_app":[ {"quantity":"1",
"product_id":"uk.co.geode.easybooks.syncing",
"transaction_id":"1000000034508678",
"purchase_date":"2012-09-05 12:00:17 Etc/GMT",
"original_transaction_id":"1000000034508678",
"original_purchase_date":"2012-01-24 10:16:17 Etc/GMT"} ]}}
SwiftyStoreKit 很受欢迎:
InAppReceipt 用于本地收据验证: