适用于iOS应用的收据验证码,无法使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了适用于iOS应用的收据验证码,无法使用相关的知识,希望对你有一定的参考价值。

我已经在ios应用程序中首次实现了Receipt-Validation代码,遵循Raywenderlich tutorial

即使它在测试期间运行正常,使用Sandbox。实际上,它没有按预期工作。

下载应用程序后,所有功能都可以从开始使用;意思是没有检查购买iap内容。

在Sandbox的情况下,我需要购买以获得收据并且“进行购买”意味着“获取iap的内容”。

据我所知,在现实世界中收据附带应用程序。我的解释是,我可能没有检查代码中的内容。

非常感谢该领域专家的任何指导。

看看代码,除了确保它们是有效的(格式良好的)收据之外,似乎(确实)没有太多检查。但我想我需要更多来检查IAP的内容是否已经付清。

以下是我认为的相关代码:

func validateReceipt() {

    receipt = Receipt()

    if let receiptStatus = receipt?.receiptStatus {
        guard receiptStatus == .validationSuccess else {
            return
        }

        // If verification succeed, we show information contained in the receipt.
        // print("Bundle Identifier: (receipt!.bundleIdString!)")
        // print("Bundle Version: (receipt!.bundleVersionString!)")

        if let originalVersion = receipt?.originalAppVersion {
            //print("originalVersion: (originalVersion)")
        } else {
            //print("originalVersion: Not Provided")
        }

        if let receiptExpirationDate = receipt?.expirationDate {
            //print("Expiration Date: (formatDateForUI(receiptExpirationDate))")
        } else {
            //print("Expiration Date: Not Provided")
        }

        if let receiptCreation = receipt?.receiptCreationDate {
            //print("receiptCreation: (formatDateForUI(receiptCreation))")
        } else {
            //print("receiptCreation: Not Provided")
        }

        // At this point we should enable full features if it is not yet the case.
        .... code to unlock full features .....
    }
}
答案

您应该检查类型为17xx的字段,您可以在其中找到产品标识符(字段类型1702)和购买日期(字段类型1704)。您在部分阅读应用程序内购买中提到的Raywenderlich教程中对此进行了描述。

因此,您可以检查用户是否购买了您感兴趣的产品标识符的IAP。产品标识符与您在AppApp Connect中选择的相同 - 在MyApps - >功能 - > IAP。

以上是关于适用于iOS应用的收据验证码,无法使用的主要内容,如果未能解决你的问题,请参考以下文章

iOS收据验证 - 自动续订订阅

iOS - IAP 问题,对应用商店收据感到困惑

“收据无法验证” - 是不是应该再次检查?

如果 iOS 购买收据验证失败怎么办?

如何为 iOS 应用实现 iOS 自动续订订阅收据验证

使用 lambda 通过 Node.js 验证 iOS 收据