我正在构建一个允许购买数字商品的应用。由于我们有很多商品,我们不能使用非消耗品,因此我们为不同的价格类别(2欧元商品,3欧元商品等)定义了易耗品。
当用户要购买特定商品时,我会获得该特定价格类别的易耗品,然后开始购买该易耗品。然后,我想将收据发送到我的服务器,进行验证,然后解锁有问题的物品。
在这里我不确定如何实现这一点。要获取交易收据,我需要收听PaymentQueue,因此我是异步获取收据的,没有实际购买的上下文。
如何将收据与用户购买的商品相关联?
据我所知,有两种选择:
答案 0 :(得分:1)
我刚刚在我的应用中遇到了同样的问题。这是我的处理方式:
- 将数据附加到我的购买中,以便我可以从收据中读出。那可能吗?那将是理想的情况。
您可能已经发现,这是不可能的。
- 存储用户开始购买的商品ID的列表,当我从队列中获得收据(或多张收据)时,我只需查找该商品 id,并将其发送到我的服务器。购买完成后, 我从列表中删除了商品ID。这是可行的解决方案吗?能够 多个设备有任何问题,其中一个设备 收据,但未开始付款?
这与我所做的非常相似。每当用户进行购买时,我都会创建自己的购买对象,该对象将添加到“用户默认值”中的数组中。我的付款对象包含App Store Connect产品标识符以及我的应用程序特定产品信息。
当收据上出现收据时,我将执行以下操作:
在沙盒中进行测试时,我确实出现了一些奇怪的行为,我发现旧的收据也出现在PaymentQueue上。在这种情况下,“用户默认值”中没有匹配的对象,因此无论如何我都要完成交易。