首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何理解我是否已经支付了应用程序中的购买费用?

如何理解我是否已经支付了应用程序中的购买费用?
EN

Stack Overflow用户
提问于 2014-03-29 11:32:07
回答 1查看 291关注 0票数 2

我正在制作一个应用程序,其中有书籍和书籍有音频和视频服务。

客户想要在应用程序的购买。

下面是In将如何工作。

如果用户想购买这本书,用户将购买这本书,一旦交易完成,自动压缩文件将被下载(从我的服务器,我正在添加图像,视频,音频为书)。

一旦我有了拉链,一旦下载完成,我就不加拉链了。

对我来说,问题是如何识别用户在购买之前是否购买了这本书。

今天,用户A支付了图书B的费用。我如何才能获得用户A购买了书籍的信息?

如果我可以有用户注册系统,我可以通过我的系统的用户I来识别用户。

有些人说,将图书id保存在NSUserDefaults中,但我担心如果我删除应用程序并重新安装,我应该免费下载图书B。

我只想知道,我如何跟踪哪个用户下载了哪本书。

我正在为iOS 6和7开发应用程序--都是

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-29 11:51:44

编辑:

您的应用程序通过调用restoreCompletedTransactions方法SKPaymentQueue来启动进程。这将向App发送一个请求,以恢复应用程序完成的所有事务。如果应用程序为其支付请求的applicationUsername属性设置了一个值(如“检测不规则活动”中所述),则在还原事务时使用restoreCompletedTransactionsWithApplicationUsername:方法提供相同的信息。App为以前完成的每个事务生成一个新事务。还原的事务具有对原始事务的引用: SKPaymentTransaction实例具有originalTransaction属性,收据中的条目具有原始事务标识符字段。您的事务队列观察者被调用时状态为SKPaymentTransactionStateRestored,用于每个恢复的事务,如“等待restored处理事务”中所描述的那样。此时您所采取的操作取决于应用程序的设计。

  • 如果您的应用程序使用应用程序收据,并且没有苹果托管的内容,则不需要这段代码,因为您的应用程序无法恢复已完成的事务。立即完成恢复的事务。
  • 如果您的应用程序使用应用程序收据并拥有苹果托管的内容,请让用户在启动恢复过程之前选择要恢复的产品。在恢复过程中,重新下载用户选择的内容并立即完成任何其他事务。

代码语言:javascript
复制
NSMutableArray *productIDsToRestore = <# From the user #>;
SKPaymentTransaction *transaction = <# Current transaction #>;

if ([productIDsToRestore containsObject:transaction.transactionIdentifier]) {
    // Re-download the Apple-hosted content, then finish the transaction
    // and remove the product identifier from the array of product IDs.
} else {
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}

来源

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

https://stackoverflow.com/questions/22730534

复制
相关文章

相似问题

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