#David Gallardo
1 messages · Page 1 of 1 (latest)
Hi
Mostly it because that card requires the customer authenticate again. It's a decision made by the issuer bank. Can you give an example Payment Intent Id? I can have a quick look
Ok, i show a real payment intent
i have permission
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
Stripe email support has told me that it's due to 3D secure, to show the customer to enter 3D secure or use the customer's last payment intent.
Yes that's correct. Let me double check the PI before putting together the points
OK
I see that PI was created by a Subscription modification call: https://dashboard.stripe.com/logs/req_uTvxS3vn5pnfoa
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
That subscription is created via a Subscription Schedule https://dashboard.stripe.com/logs/req_tdmVvyyflwWxqf
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
You created that Subscription Schedule with a Customer correct? cus_K9ZtDtEZZBNwB1 How did you collect card for this customer?
I haven't found a Checkout yet
wait
Are you telling me that he is a user with the subscription paid manually by Stripe Dahsboard, so does he have 3d secure problems?
No, I am asking how did you know about this part:
I'm using Stripe Checkout to charge the customer first payment,
Sorry, I made a mistake with this client. In the case of this client, his payment method was taken through the PHP api.
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
The 2021 customer saved his bank card by the method we had before all API. In 2022 we have moved to using Stripe Checkout, and he has not gone through Stripe Checkout. I already had the card added before.
With the customer's card we execute a manual charge through the Stripe Dashboard to activate the customer's subscription.
Please post in #dev-help and I can help you in your own thread
@slim mortar Taking over here
That's the channel you'd post in for help – just type your question in there. I'm helping a different user in this thread, and we don't help multiple users in a single thread
@slim mortar I suspect the issue here is a combination of using older APIs (card_, src_ objects) and 3DS2/auth requirements from banks.
Also, you're using payment_behavior: 'error_if_incomplete which I suspect might be cancelling the the Payment Intent:
Use error_if_incomplete if you want Stripe to return an HTTP 402 status code if a subscription’s invoice cannot be paid. For example, if a payment method requires 3DS authentication due to SCA regulation and further user action is needed, this parameter does not update the subscription and returns an error instead.
Is that a requirement of your integration?
wait
What do you recommend to solve the problem?
Yes, i use error if incomplete
'payment_behavior' => 'error_if_incomplete',
Well, this behaviour seems expected to me based on that parameter
3DS was requested, and per that parameter, we error in those instances rather than updating the Subscription status to reflect that 3DS request
What do you recommend to apply for the secure 3DS?
For that type of error or any future problems with the 3DS card
Well, if 3DS is requested in this instance you need to bring your customer back on-session to complete the authentication flow
To do that, you need to stop passing the payment_behaviour: 'error_if_incomplete' parameter
Then, your update call will succeed, an Invoice will be generated which will contain a pi_xxx that requires confirmation
What can I do to get the client to pay that pi intent with Stripe Checkout?
You can't pass an existing Payment Intent to Checkout for payment, no
Then? Any recommendation?
I'd recommend taking the first step which is to remove payment_behaviour: 'error_if_incomplete' from your update call
But you should be trying this in test mode, not on live data
ok
But even if I remove error_if_incomplete, I won't have an option for the user to be redirected to pay or charge in the same step.
You can configure your account to send an email to the customer when 3DS is requested: https://stripe.com/docs/billing/revenue-recovery/customer-emails#secure-payments
There is only the possibility of payment email with this type of client, correct?
What do you mean?
That the only solution for customers to pay is through the email that arrives in their mail.
I have other question: What can I do automatically so that an invoice is not generated until the client does not pay?
We are in Spain, each invoice that is not paid has to carry a credit note that subtracts the invoice. We have many clients who decide not to pay those bills because they are not interested in the price. If we generate 200 invoices and they are not paid, we have to generate 200 credit notes so that the government does not fine us.