ios - 解析 IAP 收据的 JSON

标签 ios json swift

我最近为我的应用程序实现了收据验证功能,但是我很难解析收据。我可以通过这样做来获取它的状态

verifyStatus = json!["status"]

然后分别是其中的“receipt”和“in_app”值

let verifyItem2 = json!.objectForKey("receipt")
let verifyItem3 = verifyItem2!.objectForKey("in_app")

但是,当我对“product_id”执行相同操作时。我不断收到错误消息。可能是因为“in_app”键前面有一组额外的括号。一些建议将不胜感激。

收据示例:

environment = Sandbox;
receipt =     {
    "adam_id" = 0;
    "app_item_id" = 0;
    "application_version" = 1;
    "bundle_id" = "xxxxxxxx";
    "download_id" = 0;
    "in_app" =         (
                    {
            "is_trial_period" = false;
            "original_purchase_date" = "2016-02-16 05:47:31 Etc/GMT";
            "original_purchase_date_ms" = 1455601651000;
            "original_purchase_date_pst" = "2016-02-15 21:47:31 America/Los_Angeles";
            "original_transaction_id" = 1000000194125405;
            "product_id" = "xxxxxxxx";
            "purchase_date" = "2016-02-16 05:47:31 Etc/GMT";
            "purchase_date_ms" = 1455601651000;
            "purchase_date_pst" = "2016-02-15 21:47:31 America/Los_Angeles";
            quantity = 1;
            "transaction_id" = 1000000194122312;
        }
    );
    "original_application_version" = "1.0";
    "original_purchase_date" = "2013-08-01 07:00:00 Etc/GMT";
    "original_purchase_date_ms" = 1375340400000;
    "original_purchase_date_pst" = "2013-08-01 00:00:00 America/Los_Angeles";
    "receipt_creation_date" = "2016-02-19 20:49:30 Etc/GMT";
    "receipt_creation_date_ms" = 1455914970000;
    "receipt_creation_date_pst" = "2016-02-19 12:49:30 America/Los_Angeles";
    "receipt_type" = ProductionSandbox;
    "request_date" = "2016-02-19 20:49:34 Etc/GMT";
    "request_date_ms" = 1455914974827;
    "request_date_pst" = "2016-02-19 12:49:34 America/Los_Angeles";
    "version_external_identifier" = 0;
};
status = 0;

})

最佳答案

in_app 字段是一个数组,因此您必须遍历它

for inApp in verifyItem3 {
    // do something with that dictionary, for example 
    print(inApp["product_id"])
}

请注意,我在这里编写了这段代码,因此可能会有错误:)

关于ios - 解析 IAP 收据的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35514923/

相关文章:

ios - 无法将类型 'CMSampleTimingInfo' 的值转换为预期的参数类型 'UnsafePointer<CMSampleTimingInfo>'

java - REST Web 应用程序 : what is the role of XML/JSON?

json - 如何在 jq 中为 CSV 导出添加标题?

ios - NSLocalizedString() 参数 "value"和 "tableName"有什么作用?

ios - 如何在iOS中集成mobileiron sdk

ruby-on-rails - 我如何使用 JBuilder 和 Rails 创建这个 JSON 结构?

swift - 使用未声明的类型 'URLDataPromise'

swift - Swift 5 中以 NSException 类型的未捕获异常终止

ios - 使用 UrbanAirship iOS SDK 推送通知的自定义方法

ios - Flutter 错误没有名为“scrollBehavior”的命名参数