2016-06-17 68 views
1

我想用我的自定義網站使用捐款付款。如何使用此JSON響應?

有一個URL,我應該連接到並傳遞2值與名稱「sku」&「device_id」。

就像網頁給了我一個名爲「狀態」的值和一個值爲「726287618769179」的值的支付代碼。

如果「狀態」等於「READY_TOPAY」我應該去下一個URL + paycode和 然後用戶可以填寫卡號和密碼等

我用這個代碼連接,並與網絡通信:

let DID = UIDevice.currentDevice().identifierForVendor!.UUIDString 
    print("Device ID is : \(DID)") 

    let url = NSURL (string: "https://qqqq.com/rest-api/pay-request"); 
    let requestObj = NSURLRequest(URL: url!); 
    webView.loadRequest(requestObj); 



    let request = NSMutableURLRequest(URL: NSURL(string: "https://qqqq.com/rest-api/pay-request")!) 
    request.HTTPMethod = "POST" 
    let postString = "mypayid&device_id=\(DID)" 
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) 
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in 
    guard error == nil && data != nil else {               // check for fundamental networking error 
    print("error=\(error)") 
    return 
    } 

    if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 {   // check for http errors 
    print("statusCode should be 200, but is \(httpStatus.statusCode)") 
    print("response = \(response)") 
    } 

    let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
    print("responseString = \(responseString)") 
     if (responseString?.UTF8String.) { 

      print("YESsssss") 
     } 
    } 
    task.resume() 

問題是我得到的第一個回答JSON像這樣:

responseString = Optional({"error":false,"status":"READY_TO_PAY","pay_code":"4443697552108","prd_status":1}) 

我不知道該怎麼做這個!

如何判斷「狀態」是否等於「READY_TO_PAY」轉到下一個網址+付費代碼?

回答

2

而不是使一個字符串從您的JSON數據與NSString(data: data!, encoding: NSUTF8StringEncoding)的,解碼JSON數據字典,並通過安全的下標訪問其內容:

if let json = try? NSJSONSerialization.JSONObjectWithData(data!, options: []) { 
    if let content = json as? [String:AnyObject], 
     status = content["status"] as? String, 
     payCode = content["pay_code"] as? String { 
     print(status) 
     print(payCode) 
    } 
} 

現在你可以很容易地用「READY_TO_PAY」比較status和採取必要的行動。

+0

謝謝。如果條件沒有打印任何東西,但我刪除了如果現在它的打印此:致命錯誤:意外地發現零,同時展開一個可選值 (lldb) – Alfi

+0

不!我從我的xcode複製它!沒有區別... – Alfi

+0

我已經修復了我的代碼,以便它可以與您的JSON一起工作,之前我沒有正確投射它。它現在應該工作。 – Moritz