8

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

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

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

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

我的问题是:

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

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

谢谢你的时间。

4

3 回答 3

1

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

于 2013-04-03T03:26:03.840 回答
1

问题 1:根据此处的 Apple 文档,您应该始终在服务器上验证收据。有几个 ruby​​ gem 可以帮助在后端与 Apple 的服务器通信:

https://github.com/gabrielgarza/monza

托管:https ://getmonza.com

https://github.com/nomad/venice

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

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

查看此 WWDC 视频,了解有关应用内购买的基本知识。

于 2016-06-19T09:08:38.697 回答
0

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

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

于 2014-03-26T02:42:04.540 回答