我们有一个服务器,除其他事项外,它需要在将消耗品退还给用户之前从第三方(通过 API 调用)购买一些东西。显然,它会事先检查 Apple 收据。
处理服务器端应用程序内故障的最佳方法是什么,比如 3rd 方服务失败?此时用户的体验是已经支付但没有收到消耗品,再次尝试会导致他们花费更多的钱。
到目前为止,我想出了:
在设备上
- 当 inapp 完成时,将该 productId 的收据存储为“无人认领”
- 像往常一样联系服务器。
- 如果成功则清除无人认领的收据/productId
- 如果错误,那么下次用户尝试相同的应用程序时,跳过实际购买部分并直接进入 2. 之前的收据。
然后在服务器上
- 与苹果核对收据
- 检查我们是否尚未为用户提供该收据的消耗品(防止重复使用收据)
- 给第 3 方打电话
- 成功返回消耗品。
- 在失败时回复错误(此时客户端将保持收据无人认领并在重试时重新发送)。
提前致谢!