2016-02-19 97 views
1

我最近为我的应用程序实现了收据验证功能,但是我很难解析收据。我能够做这个解析IAP收据的JSON

verifyStatus = json!["status"] 
从这些分别

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

然而

,然后“收据”和'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; 

})

回答

1

in_app领域是一个数组,所以你必须穿越它

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

请注意,我这里写了这个代码,所以可能有错误:)

+0

谢谢!不过,我不得不再去'1'级别去获取productID。 '让verifyItem4 = inApp as! NSDictionary'和'let verifyItem5 = verifyItem4.objectForKey(“product_id”)' –