Reputation: 146
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
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
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
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
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