IAP后端最佳实践

时间:2013-03-24 06:14:45

标签: ruby-on-rails api message-queue in-app-purchase

我刚用IAP制作iOS应用程序来购买虚拟硬币(耗材)。后端是Ruby on Rails。我现在对整个解决方案有一些担忧。

我目前的IAP流程描述如下:

  • 第1步 - iOS客户端向我们的后端发送请求并获取产品ID。
  • 第2步 - 客户端通过Store Kit检索产品列表,其中包含来自step1的ID
  • 第3步 - 用户点击购买,客户端向Store Kit发送付款请求
  • 第4步 - 完成交易后,客户将收据令牌发送到我们的后端
  • 步骤5 - 服务器首先验证收据以确保它是有效的验证
  • 步骤6 - 服务器调用App Store验证收据并处理交换(DB中的充值帐户)
  • 第7步 - 客户端收到回复并显示帐户余额

我以前从事过电子商务/支付解决方案,而IAP则采取其他方式,但通常支付网关会将收据服务器发送到服务器进行验证。我们总是有消息队列排序解决方案,以确保所有事务都是稳定和可维护的。

我的问题是:

  1. 验证IAP收据的最佳做法是什么?如何避免来自我们服务器的验证中断? (例如,用户花钱并在客户端上完成交易,但在验证服务器上的收据时失败。没有IAP恢复交易支持。)

  2. Apple IAP更可能是一个完美的客户端解决方案。特别是在我的情况下,在用户付款后,他想立即收到硬币,而不是我们告诉他交易处理的情况,他的账户很快就会完成。在移动设备上具有响应式用户体验的优先级。你还在服务器上使用消息队列吗?

  3. 感谢您的时间。

3 个答案:

答案 0 :(得分:1)

您可能会发现http://helios.io/有用。它结合了四个有用的iOS相关宝石,其中一个是https://github.com/mattt/rack-in-app-purchase

答案 1 :(得分:1)

问题1:根据Apple's docs here,您应该始终在服务器上验证收据。有几个红宝石可以帮助在后端与Apple的服务器交谈:

https://github.com/gabrielgarza/monza

托管:https://getmonza.com

https://github.com/nomad/venice

https://github.com/nov/itunes-receipt

问题2:这取决于您对欺诈的关注程度。如果您没有验证收据,那么您就会面临欺诈行为。我强烈建议在服务器端进行验证。

结帐this WWDC video以获得有关In App Purchases的良好基础知识。

答案 2 :(得分:0)

如果我正确地理解了这个问题,那么看起来有一个名为itunes-receipt的宝石可用于此。宝石可以在这里找到:https://github.com/nov/itunes-receipt

还有NSScreencast解决了这个问题,并且演示说明中的说明看起来相当完整。 http://nsscreencast.com/episodes/45-validating-iap-receipts