Code=50 “No such payment_intent” 当确认条带的支付意图时
Posted
技术标签:
【中文标题】Code=50 “No such payment_intent” 当确认条带的支付意图时【英文标题】:Code=50 “No such payment_intent” when confirm payment intent for stripe 【发布时间】:2019-10-29 19:18:33 【问题描述】:使用此方法STPAPIClient.shared().confirmPaymentIntent()
确认付款意图时出现以下错误
Error Domain=com.stripe.lib Code=50 "没有这样的支付意图: pi_1ElaQpFSNNCQ7y59" UserInfo=com.stripe.lib:ErrorMessageKey=没有这样的 payment_intent: pi_1ElaQpFSNNCQ7y59, com.stripe.lib:StripeErrorCodeKey=resource_missing, com.stripe.lib:StripeErrorTypeKey=invalid_request_error, com.stripe.lib:ErrorParameterKey=intent, NSLocalizedDescription=No 这样的payment_intent:pi_1ElaQpFSNNCQ7y59
我正在执行的代码:
STPAPIClient.shared().confirmPaymentIntent(with: paymentIntentParams, completion: (paymentIntent, error) in
if let error = error
// handle error
else if let paymentIntent = paymentIntent
// see below to handle the confirmed PaymentIntent
if paymentIntent.status == .requiresAction
guard let redirectContext = STPRedirectContext(paymentIntent: paymentIntent, completion: clientSecret, redirectError in
// Fetch the latest status of the Payment Intent if necessary
STPAPIClient.shared().retrievePaymentIntent(withClientSecret: clientSecret) paymentIntent, error in
// Check paymentIntent.status
)else
// This PaymentIntent action is not yet supported by the SDK.
return;
redirectContext.startRedirectFlow(from: self)
else
// Show success message
)
【问题讨论】:
支付意图 id 看起来比 Stripe 的支付意图 id 短得多。你能确定你实际上使用了正确的 id 吗? 错误中返回的id就是intent的id。它更短但与意图的客户端密码非常相似。我在使用 JS api 时遇到了同样的错误,您找到解决方案了吗? 【参考方案1】:如果您使用stripe connect
(直接收费)功能,您需要在前端创建条带实例时传递条带连接帐户ID(stripeAccount
)。看下面的例子
var stripe = Stripe(STRIPE_PUBLIC_KEY, stripeAccount: " connected_account " );
【讨论】:
你先生刚刚救了我的培根,简直就是传说中的……dary @Kaushal 这也是我在我的案例中所缺少的。非常感谢。 我这样做并看到“收到未知参数:stripeAccount”【参考方案2】:我在 JS api 上遇到过类似的问题(“没有这样的 payment_intent”)。我的错误是我使用 stripe.handleCardPayment
而不是 stripe.handleCardSetup
和 client_secret
的 SetupIntent。
【讨论】:
【参考方案3】:在您的代码中添加此方法并将此 sourceid 设置为 paymentIntentParams.paymentMethodId = sourceid 其余相同,将此来源 id 设置为 paymentid。
STPAPIClient.shared().createPaymentMethod(with: paymentMethodParams) paymentMethod, error in
if error == nil
let data = paymentMethod as? STPSource
sourceid = paymentMethod?.stripeId ?? ""
print(paymentMethod)
self.intentMakePayment(sourceid)
【讨论】:
【参考方案4】:所以我在 Stripe Connect 和 ios 上遇到了同样的问题。要将其与客户端密码或在我的情况下为 EphemeralKeyProvider 一起使用,这里是注入 Stripe Connect 帐户参数的调用。
STPAPIClient.shared().stripeAccount = "KEY_PROVIDED_HERE"
这将允许 Stripe Connect 确认付款方式。
【讨论】:
我想试试您的解决方案 - KEY_PROVIDED_HERE accountId 可以在 Stripe 仪表板的什么位置找到?我没有看到它。谢谢以上是关于Code=50 “No such payment_intent” 当确认条带的支付意图时的主要内容,如果未能解决你的问题,请参考以下文章
线程 1: EXC_BREAKPOINT (code=1, subcode=0x10136bb50) - swift
Visual Studio Code 1.50.1 缺少 Photon Pun 程序集参考
如何调查 iOS 崩溃并出现错误 NSOSStatusErrorDomain Code=-50 "query missing class name"