查看条带测试trasactions时,我一直收到以下错误:
{
"error": {
"type": "invalid_request_error",
"message": "Customer cus_9tW8Cf0Xvm9lRv does not have a linked source with ID tok_19Zj5rAANnhOmz4ex3ri2jtW.",
"param": "source",
"code": "missing"
}
}
我调用api的快速代码如下:
@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)。我尝试了很多不同的东西,但似乎无法获得成功的回应。我不知道我做错了什么,需要一双新鲜的眼睛。任何帮助都会很棒。感谢
答案 0 :(得分:5)
使用Stripe Checkout或Stripe.js创建卡片令牌后,您可以将其发送到您使用它通过API创建客户的服务器。该卡与该客户“保存”,然后您可以在将来收费。如果您想向同一客户添加另一张卡,您可以使用创建卡API传递新令牌并添加该卡。
创建charge时,您会在customer
参数中传递客户ID(cus_XXX)以对默认卡收费。如果您想要为特定卡收费,您可以将source
参数中的卡ID(card_YYY)与客户一起传递。
目前,您正在尝试传递不受支持的客户ID和卡令牌。您需要先将该卡保存在客户上,然后在source
参数中传递新卡ID,如上所述。