我刚用IAP制作iOS应用程序来购买虚拟硬币(耗材)。后端是Ruby on Rails。我现在对整个解决方案有一些担忧。
我目前的IAP流程描述如下:
我以前从事过电子商务/支付解决方案,而IAP则采取其他方式,但通常支付网关会将收据服务器发送到服务器进行验证。我们总是有消息队列排序解决方案,以确保所有事务都是稳定和可维护的。
我的问题是:
验证IAP收据的最佳做法是什么?如何避免来自我们服务器的验证中断? (例如,用户花钱并在客户端上完成交易,但在验证服务器上的收据时失败。没有IAP恢复交易支持。)
Apple IAP更可能是一个完美的客户端解决方案。特别是在我的情况下,在用户付款后,他想立即收到硬币,而不是我们告诉他交易处理的情况,他的账户很快就会完成。在移动设备上具有响应式用户体验的优先级。你还在服务器上使用消息队列吗?
感谢您的时间。
答案 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://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