我在查看 strip 测试交易时不断收到以下错误:
{
"error": {
"type": "invalid_request_error",
"message": "Customer cus_9tW8Cf0Xvm9lRv does not have a linked source with ID tok_19Zj5rAANnhOmz4ex3ri2jtW.",
"param": "source",
"code": "missing"
}
}
我调用api的swift代码如下:
@IBAction func payButtonWasPressed() {
stripeCard = STPCardParams()
let expirationDate = self.cardExpiryTextField.text!.components(separatedBy: "/")
let expMonth = UInt(expirationDate[0])
let expYear = UInt(expirationDate[1])
stripeCard.number = self.cardNumberTextField.text
stripeCard.cvc = self.cardCVVTextField.text
stripeCard.expMonth = expMonth!
stripeCard.expYear = expYear!
STPAPIClient.shared().createToken(withCard: stripeCard, completion: { (token, error) -> Void in
if error != nil {
self.handleError(error! as NSError)
return
}
self.chargeUsingToken(token!)
})
}
func handleError(_ error: NSError) {
UIAlertView(title: "Please Try Again",
message: error.localizedDescription,
delegate: nil,
cancelButtonTitle: "OK").show()
}
func chargeUsingToken(_ token: STPToken) {
let URL = "https://splitterstripeserver.herokuapp.com/charge"
let params = ["source": token.tokenId,
"stripe_token": token.tokenId,
"amount": total] as [String : Any]
let manager = AFHTTPSessionManager()
manager.post(URL, parameters: params, success: { (operation, responseObject) -> Void in
if let response = responseObject as? [String: String] {
UIAlertView(title: response["status"],
message: response["message"],
delegate: nil,
cancelButtonTitle: "OK").show()
}
}) { (operation, error) -> Void in
self.handleError(error as NSError)
}
}
我正在使用在 stripe github 上找到的示例后端
在我的应用程序上,我收到一个弹出窗口,提示请求失败:需要付款 (402)。我尝试了很多不同的东西,但似乎无法获得成功的回应。我看不出我做错了什么,需要一双新的眼睛。任何帮助都会很棒。谢谢
最佳答案
使用 Stripe Checkout 创建卡片 token 后或 Stripe.js ,您将它发送到您的服务器,您可以在服务器上使用它通过 API 创建客户.该卡与该客户一起“保存”,然后您可以在将来对其收费。如果您想为同一客户添加另一张卡,您可以使用创建卡 API传递新 token 并添加该卡。
当您创建 charge ,你在customer
参数中传递客户id(cus_XXX)来对默认卡进行扣费。如果您想对特定的卡收费,您可以在 source
参数中将卡 ID (card_YYY) 与客户一起传递。
目前,您正在尝试传递不受支持的客户 ID 和卡 token 。您需要先将该卡保存在客户身上,然后如上所述在 source
参数中传递新卡 ID。
关于swift - 客户没有带 ID 的链接源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534764/