我刚刚使用 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 则采取另一种方式,尽管通常支付网关会将收据服务器发送到服务器以进行验证。而且我们总是有消息队列之类的解决方案来确保所有事务都是稳定和可维护的。
我的问题是:
验证 IAP 收据的最佳做法是什么?如何避免我们服务器的验证中断?(例如,用户在客户端花钱完成交易,但在服务器验证收据时失败。不支持IAP恢复交易。)
Apple IAP 更可能是一个完美的客户端解决方案。特别是在我的情况下,用户付款后,他想立即收到硬币,而不是我们告诉他交易正在处理并且他的帐户很快就会完成的情况。优先考虑在移动设备上拥有响应式用户体验。你还在服务器上使用消息队列的东西吗?
谢谢你的时间。