woocommerce / woocommerce-gateway-stripe

The official Stripe Payment Gateway for WooCommerce
https://wordpress.org/plugins/woocommerce-gateway-stripe/
229 stars 199 forks source link

iDeal payment completed but order status not updated to in progress #3181

Open nothingmuch88 opened 2 months ago

nothingmuch88 commented 2 months ago

Hi there,

This is my first post on github so please bear with me. We have been in contact with both Stripe support and plugin support on the wordpress-forum. The wordpress support folks advised us to post here for further help. This is the link to the https://wordpress.org/support/topic/ideal-completed-but-order-cancelled/

What is happening: we have a woocommerce store and process orders with 3 payment methods: cash, cheque or iDeal. The problem is only with some orders paid with iDeal, not for other payment methods, not all orders paid with iDeal.

What happens is that the customer completes the iDeal payment, Stripe is displaying the payment as completed. Their support helped us to check and there is nothing to be found on their side , they say.

Then for the "problem" iDeal orders, after the order has been paid the order status is not updated at the woocommerce store. It's stuck in the "awaiting payment" status. There are no order details after the first "Stripe payment intention created" (the store is set to Dutch language so i'm sorry if there is a mismatch in translation but I think that is what is says: "Stripe betaal intentie aangemaakt (betaal intentie ID:"

So, most iDeal orders are correctly getting the order status update after stripe payment is completed but some are not. It happens on some days, not all days. It can happen at different times. It happens with different products and different customers.

Describe the bug A clear and concise description of what the bug is.

To Reproduce Steps to reproduce the behavior: I understand this step for your process but we have tried many things but have not been able to reproduce this issue ourselves with the Stripe test mode, but nothing yet. The only thing we did not try is actually paying order after order with iDeal to see if the bug arrises, this is because it can be over 10 orders of iDeal going great and each payment will cost the stripe fee. So I hope you understand.

As you can see in the wordpress forum thread there is no

Expected behavior If the payment is completed with iDeal at Stripe - the order status at WooCommerce should be updated to "in progress".

Screenshots If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

Additional context Problem is quite recent, I can not find the date we updated but a little while and some updates from either woocommerce and / or stripe plugin this problem became a thing.

### Tasks
### Tasks
OmarFPG commented 2 months ago

8254027-zen.

Thanks for reporting!

koendolron commented 2 months ago

We are experiencing the same issue on our store:

roelbroersma commented 2 months ago

We are experiencing the same issue on our store:

  • Only some iDeal payments are stuck on 'Pending payment'. The payments are getting through in Stripe.
  • It happens infrequently, we can't see a pattern
  • It does not happen on different payment methods

Did you just edited your message? I was mailed:

We updated the plugin to the latest version, but are still experiencing this issue. Aside from that we are also seeing orders that are being paid by iDeal that are stuck on 'Pending payment', whilst the payment did come through in Stripe. It happens only for orders paid by iDeal, and it happens infrequently and just for some orders. We can't see a pattern on our side. Maybe this is connected, maybe it's not...

Now, my question is: I also experience that issue with 'double emails and double notes' in Stripe Plugin v8.2.0 version. However, you say you are now also experiencing the 'pending payment' issue for IDeal. Did you also noticed this in the previous Stripe Plugin v8.2.0 version? Or only in the latest 8.3.1 version?

koendolron commented 2 months ago

Hi @roelbroersma, No i did not edit my message, I posted in two different issues. The other message you received was from this issue: https://github.com/woocommerce/woocommerce-gateway-stripe/issues/2463

I have been experiencing the double emails & double order notes since (at least) 8.2. Maybe even before. The Pending Payment issue is most likely caused by 8.3.1. But I am not sure at this moment, and it is hard to check since we have a large amount of orders each day. Tomorrow I will reverse the plugin back to 8.2 to see if this resolves the Pending Payment issue.

nothingmuch88 commented 2 months ago

I just checked my post at the wordpress forum and can see there we first reported it with Woocommerce Stripe Gateway 7.4.1 on March 28th.

Maybe there is some connection with the release of iDeal 2.0? I can not find a date that was first used but from memory the news articles about that are around the same time?

james-allan commented 1 week ago

Hey @nothingmuch88 and others on this issue.

I believe we have fixed this issue in Stripe 8.5.0 which released in July - specifically via this change: https://github.com/woocommerce/woocommerce-gateway-stripe/pull/3217.

As you have mentioned, this issue is intermittent (it's not consistant), those issues are harder to understand and find solutions for but I'll include an explainer for what I think was happening and how we've fixed it.


Payment methods like iDEAL redirect the customer off site to their bank to complete the payment. iDEAL supports all major Dutch banks (~11) and so I suspect the bank the customer used may have been a cause of the randomness of this issue.

With iDEAL we expected the flow to be this:

Your checkout → their bank → back to your store → order processed

The problem occurs if the customer isn't redirected back to your store. This could happen if the bank didn't redirect the customer back or if the customer completed the payment on a different device (eg mobile phone). The Stripe plugin would be expecting them to return via a very specific URL we passed to Stripe and if they didn't, the order could be left in a pending-payment status.

In 8.5.0 we fixed this by ensuring that if the customer doesn't return via that URL, we still process the order via the Webhook - the status transition could just be delayed slightly by ~2 minutes.

So I do think we have fixed this issue, but given it's intermittent, I cannot be 100% sure. Can you confirm you have webhooks set up?