Kelly White
Kelly White

Reputation: 146

Code=50 “No such payment_intent” when confirm payment intent for stripe

I am getting following error while confirming payment intent using this method STPAPIClient.shared().confirmPaymentIntent()

Error Domain=com.stripe.lib Code=50 "No such payment_intent: pi_1ElaQpFSNNCQ7y59" UserInfo={com.stripe.lib:ErrorMessageKey=No such payment_intent: pi_1ElaQpFSNNCQ7y59, com.stripe.lib:StripeErrorCodeKey=resource_missing, com.stripe.lib:StripeErrorTypeKey=invalid_request_error, com.stripe.lib:ErrorParameterKey=intent, NSLocalizedDescription=No such payment_intent: pi_1ElaQpFSNNCQ7y59}

Code which I am executing:

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
    }
}
})

Upvotes: 8

Views: 11526

Answers (4)

Bruno Myrrha
Bruno Myrrha

Reputation: 51

So I got the same problem with Stripe Connect and iOS. To use that along with client secret or in my case EphemeralKeyProvider, here's the call to inject the Stripe Connect account parameter.

STPAPIClient.shared().stripeAccount = "KEY_PROVIDED_HERE"

This will allow Stripe Connect to confirm the payment methods.

Upvotes: 0

Kaushal
Kaushal

Reputation: 672

In case of if you are using stripe connect(direct charge) feature you need to pass stripe connected account id(stripeAccount) while creating stripe instance in frontend side. see below example

var stripe = Stripe(STRIPE_PUBLIC_KEY, { stripeAccount: "{{ connected_account }}" });

Upvotes: 12

Anil Kumar
Anil Kumar

Reputation: 1984

add this method in your code and set this sourceid to paymentIntentParams.paymentMethodId = sourceid rest same set this source id to 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)
            }
        }

Upvotes: 2

FrankvR
FrankvR

Reputation: 71

I've had a similar problem with the JS api ('No such payment_intent'). My mistake was that I was using stripe.handleCardPayment instead of stripe.handleCardSetup with a client_secret of a SetupIntent.

Upvotes: 5

Related Questions