首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与服务器同步可消费的应用程序内采购

问与服务器同步可消费的应用程序内采购
EN

Stack Overflow用户
提问于 2014-07-21 16:42:01
回答 1查看 2.5K关注 0票数 15

我试图找出最好的方法,以确保用户不会失去他们的消费品在应用程序购买。

然而,我开始觉得自己像this StackOverflow user。

完成事务后,我想发送给用户在应用程序中购买消耗品的服务器。但是,连接可能在这一点上失败(服务器关闭或用户失去连接)。

在这种情况下,我正在考虑在重新建立连接时尽快发送收据。然而,从什么I have read the receipt contains all in app purchases和我不能只发送收据上一次购买的项目。

如何确保用户的购买与服务器同步?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-11 16:42:19

解决办法是不打电话

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

在购买消耗品时,直到与服务器同步为止。这样,每次设置为观察支付队列时,事务将再次传递给您的观察者。您需要管理应用程序端,无论是已经交付但没有同步的采购,还是新的购买。

一旦您与服务器同步了事务。你可以打电话给-finishTransaction:。请参见文档中的“完成事务”:

ref/doc/uid/TP40008267-CH5-SW3

编辑

因此,用户由苹果负责,苹果向您发送一个表示事务的SKPaymentTransaction对象。如果该交易的transactionState属性是SKPaymentTransactionStatePurchased,那么这意味着苹果已经处理了付款,并且用户已经被收取了费用。

一旦从SKPaymentTransaction接收到这个paymentQueue对象,就可以将内容传递给用户,并将事务与服务器同步。一旦成功地完成了这两项任务,您将调用-finishTransaction。调用-finishTransaction告诉StoreKit您已经成功地完成了您需要做的一切。-finishTransaction是一个同步调用,您将责任交还给StoreKit,您不需要关心如何将其传递回iTunes/Apple,StoreKit会为您处理这一切。

在完成所有需要做的事情之前,不应该调用-finishTransaction。如果出了问题(设备电池失效、互联网连接丢失、应用程序崩溃),下次当您的观察者在队列中注册时,您将从支付队列中获得相同的SKPaymentTransaction,并可以尝试再次与服务器同步。这种情况会一直发生,直到你打电话给-finishTransaction。

有一种情况是,用户永远无法与您的服务器同步,再也无法连接到internet等。这是您无法控制的,在这一点上,苹果有责任决定是否向用户收费。

值得注意的是,如果用户愿意的话,用户可以与苹果联系并要求退款。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24870291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档