2016-06-17 4 views
1

私は自分のカスタムウェブサイトで寄付の支払いを使いたいです。このJSONレスポンスの使い方は?

「sku」という名前の2つの値を渡すURLがあります&「device_id」。

asnwerとして、ウェブは私に "status"という名前の値とこの "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」に等しいかどうかを、次のURL +支払いコードに移動する方法を教えてください。

答えて

2

代わりのNSString(data: data!, encoding: NSUTF8StringEncoding)を使用してJSONデータから文字列を作り、辞書に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

ありがとうございます。 with条件では何も印刷されませんでしたが、ifを削除して印刷しました:致命的なエラー:予期せぬことにnilが見つかりました。オプション値をアンラベリング中 (lldb) – Alfi

+0

いいえ!私はxcodeからコピーしました!違いはありません... – Alfi

+0

JSONで動作するようにコードを修正しました。以前は正しくキャストしていませんでした。今はうまくいくはずです。 – Moritz

関連する問題