拥有自己服务器的AppStore应用内购买流程

时间:2018-08-12 11:14:25

标签: ios node.js in-app-purchase app-store storekit

Schema

有人可以帮助我理解以下架构吗?我有一个iOS应用和一个应用服务器。应用程序与服务器(1A,1B)之间的连接已经正常工作。

假设该应用程序的用户有10个gem,由于安全原因,它们由服务器控制。我在AppStore中有一种消耗性的IAP类型:100颗宝石包装,用户想购买。当然,我想在Mongo数据库中进行记录以增加用户的宝石数量。

此流程如何工作?我是否应该先在应用程序中使用StoreKit,然后再与服务器通信?或者可以在服务器上创建一个端点,例如“ / buyPack / 100gems”,并在服务器端执行所有操作?据我了解,我需要验证来自AppStore的收据,但是从何处获取它以及包含什么内容?

如果您可以使用我的箭头(1A,2A,3B等),我将非常感谢。

1 个答案:

答案 0 :(得分:1)

购买必须在使用StoreKit的iOS设备上进行。

当您获得状态为.purchased的交易时,应检索收据并将其发送到服务器进行验证。您的服务器通过Apple验证收据并更新MongoDB中的用户余额后,应将成功状态返回给应用程序。届时,应用程序应使用StoreKit完成交易。

请注意,在您更新数据库之后但在收到响应并完成交易之前,应用程序可能会被用户终止或失去网络连接。在这种情况下,应用将在下次启动时再次收到交易。您的服务器应为此做好准备,方法是检查交易标识符。如果您之前已处理过交易,则将成功返回给您的应用程序,以便它可以完成交易,但不会再次增加用户的余额。

有关收据验证的更多建议,请参见this answer

流程类似于:

  • 3B-使用StoreKit购买
  • 3A-确认付款后,更新的交易便会交付给应用
  • 1A-应用程序将收据和交易详细信息发送到您的服务器
  • 2A-您的服务器通过Apple验证收据
  • 2B-您的服务器根据已验证的收据更新用户的余额
  • 1B-您的服务器向应用返回成功状态
  • 3B-您的应用通过StoreKit完成交易