- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于 iOS 的应用内购买,我们可以 use an online API for validation ,这意味着我们可以在我们自己的服务器上验证购买。
是否有任何方法(API)可以验证 OS X 的应用内购买?
我只找到this snippet about in-app validation for Mac而且Apple似乎没有提供任何在线验证的API。
或者 Apple 可能有一些支持 OS X 在线验证的计划?
最佳答案
我的应用程序EasyBooks提供用户每年付费的在线组件。将其作为非消耗类型提供是没有意义的,因为它实际上只能作为消耗品使用(但它实际上是 iOS 中的非重复订阅)。我想在应用程序内提供此功能,我想我终于找到了解决方案......
我使用了一张 Apple DTS 票证来查询 StoreKitGuide 文档中的声明。它说...
"OS X supports both the server validation method described in this chapter and the local validation method..."
我收到 Apple 的回复说...
"The steps for verifying your In-App Purchase products for Mac applications are the same used for iOS applications. The difference is that you will be assigning your base 64 encoded app receipt (rather than the content of the transactionReceipt property) to the receipt-data field. Retrieve the full Mac App Store receipt for your application, then encode it using base64 encoding. Create a JSON object with a single key named receipt-data and assign your encoded receipt to it. Proceed as outlined in the Verifying a Receipt with the App Store section of the In-App Purchase Programming Guide.
Note: In App Purchases receipt are included in the associated Mac app's receipt. You must check the receipt associated with your app to verify the validity of the In-App Purchase receipts that it contains. Doing so also allows you to enable the appropriate functionality in your app."
因此,经过几次失败的尝试后,我确实成功地实现了这一点,但需要注意的是,Apple 服务器返回的收据数据不包含“GUID 的哈希值”,因此不会将收据数据与任何特定硬件绑定(bind)。
可以使用以下步骤在 Mac 上轻松测试:
找到 Mac 应用收据文件(运行应用并输入(测试)Apple ID 和密码后,该文件位于应用的 bundle 中。
在命令行中,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"} ]}}
我还没有确认这一点,但显然(根据苹果工程师的说法)任何消耗类型的应用内购买都会在首次购买时添加到收据中,但在任何进一步购买或恢复操作后会被删除。我想知道让应用程序中运行的代码在每次购买后复制收据文件是否是一个好主意,以防万一我们自己的服务器在应用程序尝试验证收据时出现故障。用户可能会尝试恢复购买,但没有意识到这会删除任何消耗品收据。
希望对您有所帮助。
(以下为原始评论)
我也有同样的问题。我的商店中有一个 iOS 应用程序,其中包含可在应用程序内购买的消耗品和非消耗品。消费品是一种服务,由我的网络服务器实现。在 StoreKit 委托(delegate)方法 paymentQueue:updatedTransactions: 中,我使用 transactionReceipt 属性,它是一个 NSData 对象。我将其编码为 Base64 并将其发送到服务器。在服务器上,我将收据传递给 Apple 的服务器进行验证。
但对于 Mac OS,SKPaymentTransaction 上没有 transactionReceipt 属性,因此我们无法以相同的方式验证收据。
我们可以生产非消耗性产品,这可能会对您有所帮助。在 Mac OS 上进行应用内购买时,收据会在应用程序包中更新。然后可以解析收据文件,查找每个应用内收据,这些收据都存储在主包的收据文件中。有关更多信息,请参阅 http://developer.apple.com/library/mac/#releasenotes/General/ValidateAppStoreReceipt/_index.html
当我使用非消耗品时,这对我来说效果很好,但我有一种消耗品,并且它未更新到应用程序的收据文件中。如果没有 transactionReceipt 属性,我看不到服务器有任何方法来验证收据是否真实。如果其他人有任何其他经验,请告诉我们!
拥有 Apple 开发者帐户的任何人都可以在 Apple 开发者论坛上阅读此内容: https://devforums.apple.com/message/548411#548411
关于macos - Mac App Store 应用内购买的在线收据验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7598047/
我有一个 PowerBI Online 数据集,它是在 PowerBI 桌面中创建然后在线发布的。到目前为止,一切都很好。 我通过 PowerBI pusblish 从 Excel 连接到数据集,按预
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 2 年前。
我必须对一些太大而无法放入内存的数据训练分类模型,我正在使用 scikit learn 和 pandas 来进行分析。所以这是我的问题,如何在在线学习管道中使用验证来调整超参数? 我使用带有chuck
我正在开发一个应用程序,该应用程序将从 webservice 获取数据和图像并将其存储在设备中以供离线使用。同时,应用程序会将一些数据存储在 sqlite db 中,并将一些图像作为默认数据。 这是应
是否可以使用 FileReader API 和 onprogress 事件访问随 HTML5 传入的数据? 如果是这样,是否有 MD5 或其他快速散列算法的“在线”版本,以便我可以在文件完全读取之前开
希望任何人都可以帮助我更改下面的代码,我的临时文件包含以下代码: Temp=8.4* Humidity=70.4% 代替代码 Temp = 24 *C, Hum = 40 % 适用于以下脚本。 我需
我必须创建一个功能类似于联系人应用程序的应用程序。您可以在客户的 iPhone 上添加一个联系人,它应该会上传到客户的 iPad 上。如果客户在他们的 iPad 上更新联系人,它应该会在他们的 iPh
在 gitlab.com 上审查 merge 请求时,有时我必须在完成 merge 之前进行 rebase。 在 gitlab 上按“Rebase”后,我有一个特定的管道步骤失败,因为它无法验证用户的
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我正在尝试在 azure 上托管 SQL 服务器以与节点应用程序进行通信。我已经成功地完成了创建数据库服务器和数据库本身的过程。现在,我想编辑我的数据库结构。据我发现online ,应该有一种方法可以
我在 Quickbooks Intuit 开发人员 API 中使用 Oauth 2 获得了访问 token 。 范围是 com.intuit.quickbooks.accounting 我能够使用 Q
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
是否可以使Angular Material progress spinner与文本并大致与字符的大小一致地显示? 我想要类似的东西: please wait 微调器仅与“请稍候”文本成行出现。 这可
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个每天运行的Powershell脚本。今天它失败了,因为我正在使用的域 Controller 不可用。在继续执行脚本的其余部分之前,我想确保可以连接到可用的DC。 $LdapServer = "
我想制作一款在线 Flash 游戏,它将具有社交功能,但游戏玩法将主要是单人游戏。例如,屏幕上不会同时出现两个玩家,社交互动将通过异步消息进行,不会有实时聊天或其他任何内容。大部分逻辑将发生在客户端中
这几天我开始在线玩OpenShift。我部署了一个非常简单的“Hello World”Java 示例(1 行代码!),没有任何依赖项(没有 Spring!)命令行是这样的: oc.exe new-a
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
所以我一直在网上学习Java(初学者),并且我一直在尝试制作一个用于制作矩形的类文件。但是,我的在线 java 评估器指出它找不到实例变量。 This is the comment on it.我的代
我是一名优秀的程序员,十分优秀!