2017-04-11 58 views
1

我想在Swift中使用if error != nil處理來自PFCloud函數的錯誤。雖然Cloud Code或Stripe都不會返回錯誤,但Swift會迴應,好像有一個錯誤。Swift錯誤地讀取雲代碼錯誤

斯威夫特

PFCloud.callFunctionInBackground("authorize", withParameters: ["customer": self.customerID!, "cost": self.stripePrice, "type": self.stripeDescription) { (success: AnyObject?, error: NSError?) -> Void in 
    print("Authorizing") 
    if error != nil { 
     print("authorizeError") 
     self.displayAlert("Error", message: "There was an error authorizing your payment. Please try again later.") 
    } else { 
     if type == 1{ 
      print("one") 
      self.performSegueWithIdentifier("one", sender: self) 
      self.viewTimer.invalidate() 
      self.cancelTimer.invalidate() 
     } else { 
      self.performSegueWithIdentifier("two", sender: self) 
      print("two") 
      self.viewTimer.invalidate() 
      self.cancelTimer.invalidate() 
     } 
    } 
} 

雲代碼(Node.js的)

Parse.Cloud.define("authorize", function(request, response){ 
    var user = request.user; 
    stripe.charges.create({ amount: request.params.cost, currency: "cad", customer: request.params.customer, capture: false}).then(function(charge) { 
     user.set("chargeID", charge.id); 
     return user.save(null, { useMasterKey: true }); 
    }).then(function(result) { 
     console.log(charge); 
     console.log(charge.id); 
     response.success(charge); 
    }, function(err) { 
     console.log(err); 
     console.log(charge.id) 
     response.error(err); 
    }); 
}); 

回答

0

的問題是,你想在成功回調返回charge和充電是零。更改您的代碼如下:

stripe.charges.create({ amount: request.params.cost, currency: "cad", customer: request.params.customer, capture: false}).then(function(charge) { 
    user.set("chargeID", charge.id); 
    return user.save(null, { useMasterKey: true }); 
}).then(function(result) { 

    // charge is undefined here. 
    console.log(charge); 

    // Return something besides charge 
    response.success("unused result"); 
}, function(err) { 
    console.log(err); 
    console.log(charge.id) 
    response.error(err); 
}); 
+0

是的沒有錯誤。在Stripe方面成功創建了一次收費。 – Dups

+0

僅僅因爲使用Stripe創建費用並不意味着沒有錯誤。用戶是否保存了正確的「chargeId」?在console.log(charge.id')這一行上打印到控制檯的內容?我懷疑'charge.id'是未定義的,會導致運行時錯誤並導致'response.success()'永遠不會被執行。 – toddg

+0

謝謝。我刪除了charge.id行,但它仍然像是出現錯誤一樣。你還有什麼建議我改變? – Dups