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