Swift 误读Cloud Code错误
Swift wrongly reading Cloud Code error
我正在尝试使用 if error != nil
处理 Swift 中 PFCloud 函数的错误。虽然 Cloud Code 或 Stripe return 都没有错误,但 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);
});
});
问题是您在成功回调中尝试 return 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);
});
我正在尝试使用 if error != nil
处理 Swift 中 PFCloud 函数的错误。虽然 Cloud Code 或 Stripe return 都没有错误,但 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);
});
});
问题是您在成功回调中尝试 return 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);
});