有人可以帮助我理解以下架构吗?我有一个iOS应用和一个应用服务器。应用程序与服务器(1A,1B)之间的连接已经正常工作。
假设该应用程序的用户有10个gem,由于安全原因,它们由服务器控制。我在AppStore中有一种消耗性的IAP类型:100颗宝石包装,用户想购买。当然,我想在Mongo数据库中进行记录以增加用户的宝石数量。
此流程如何工作?我是否应该先在应用程序中使用StoreKit,然后再与服务器通信?或者可以在服务器上创建一个端点,例如“ / buyPack / 100gems”,并在服务器端执行所有操作?据我了解,我需要验证来自AppStore的收据,但是从何处获取它以及包含什么内容?
如果您可以使用我的箭头(1A,2A,3B等),我将非常感谢。
答案 0 :(得分:1)
购买必须在使用StoreKit的iOS设备上进行。
当您获得状态为.purchased
的交易时,应检索收据并将其发送到服务器进行验证。您的服务器通过Apple验证收据并更新MongoDB中的用户余额后,应将成功状态返回给应用程序。届时,应用程序应使用StoreKit完成交易。
请注意,在您更新数据库之后但在收到响应并完成交易之前,应用程序可能会被用户终止或失去网络连接。在这种情况下,应用将在下次启动时再次收到交易。您的服务器应为此做好准备,方法是检查交易标识符。如果您之前已处理过交易,则将成功返回给您的应用程序,以便它可以完成交易,但不会再次增加用户的余额。
有关收据验证的更多建议,请参见this answer。
流程类似于: