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.handleCardSetupclient_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 Connectios 上遇到了同样的问题。要将其与客户端密码或在我的情况下为 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

VS Code 1.50发布

Visual Studio Code 1.50.1 缺少 Photon Pun 程序集参考

如何调查 iOS 崩溃并出现错误 NSOSStatusErrorDomain Code=-50 "query missing class name"

shader code 温度云图(温场)实现

函数检查 argc 和 argv cs50。