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

Posted

技术标签:

【中文标题】在服务器端验证 Mac OS X 的耗材应用内购买【英文标题】:Verify consumable in-app purchase for Mac OS X on server side 【发布时间】:2012-02-20 18:13:48 【问题描述】:

注意:这是针对 Mac OS X 而不是 ios

我有一个允许在应用内购买消耗品的客户端应用。收据应发送到服务器,服务器在收到订单时执行一些操作。服务器执行的操作花费了我一些钱,所以我需要格外小心收据是有效的并且只使用一次。我正在寻找设计这个的最佳方法。

当用户完成购买时,我似乎从 storekit 中获得了收据。当我将它发送到我的 Web 服务器(运行 WCF)时,它将通过将 JSON 发布到 Apple 来验证收据。当 Apple 确认收据时,它会做一些花费我一些钱的操作。在验证收据部分,我的研究告诉我,消耗品收据总是有效的,实际上并没有被“消费”。我是否应该只跟踪提交给我的服务器的每一张收据并确保它没有被使用?我会尽我所能备份该列表,但我担心它会在某个时候丢失,并希望有另一种方式。

我的另一个担忧是,由于无法通过 storekit 恢复消耗品收据,因此如果发生诸如用户在购买完成时断电的情况,那么用户将无法获得产品,因为无法检索该收据.这只是我们必须承担的风险还是我忽略了什么?听起来消耗品和非消耗品购买之间唯一真正的区别是您无法恢复消耗品。

【问题讨论】:

关于如何处理这样的事情的信息非常少。我能想到的最好的办法是在用户购买消耗品时给他们一些“信用”。积分需要存储在服务器端,以防止篡改。如果这是这样做的方法,我想我需要添加某种用户登录名/密码,除非有办法唯一标识每个安装(基本应用程序是免费的,所以它没有收据) 【参考方案1】:

我能够就这个问题与 Apple 代表交谈。他们基本上说,在他们的框架的当前版本中,无法在服务器上验证 consumable 收据。

【讨论】:

以上是关于在服务器端验证 Mac OS X 的耗材应用内购买的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Firestore + Cloud Function 服务器端验证应用内购买收据(Swift + NodeJS)

如何验证应用内购买的 Android 服务器端 Java?

Firebase Firestore +云功能服务器端验证应用内购买收据(Swift + NodeJS)

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

我可以完全在服务器端验证 Google Play 应用内订阅续订吗?

Firebase iOS SDK 如何执行其应用内购买验证?