Open Brianmitchtay opened 2 years ago
On the stripe dashboard we see that 23 hours after being created, the subscription payment intent is canceled
Ahh, yes, this! I've run into this before here: p1655229139591099-slack-CGGCLBN58
TLDR: In the above case, it came up in the context of synchronized subscriptions. I was worried that if the payment intent only lasts 23 hours, but the subscription is synced, the pi_
would expire before the first charge. However, WC Pay works around this by creating a behind-the-scenes free trial on the subscription in Stripe's billing engine only (i.e. not in the actual WooCommerce product). This allows us to keep the intent open/active/whatever until the first synced date rolls around.
Anyway, I'll leave solving this bug to the experts, but just thought I'd provide some related backstory. :)
@aheckler I think that issue is reported in #4565 but this use case doesn't involve synchronized renewals.
With reference to 5405801-zen, would a workaround be as follows?
I'm not sure if this uses the same Authorize now, capture later
process which is causing the issue or whether it will create a valid subscription in Stripe with no cancellation.
Marking this as high priority, as these two features should ideally work well when both enabled:
Authorize now, capture later
Enable Subscriptions with WooCommerce Payments
Alternatively, if it's not practical to support auth for subscriptions, we could potentially require Auth = no
for WCPay Subscriptions.
Although this is important we may not get to it quickly as we have limited maintenance bandwidth.
In the mean time, maybe we can recommend not enabling Authorize
when using WCPay Subscriptions.
I am not certain which team can work on this issue. @diegocurbelo do you think that team Quark can work on this issue? Does it belong under Quark team responsibilities?
Silent ping @diegocurbelo :) . Sorry for disturbing.
Hey @zmaglica.
Yes, it's my understanding that Quark is team responsible for this is given it involves WCPay Subscriptions.
I'll take a look into this and see if I can submit a fix.
I'll take a look into this and see if I can submit a fix.
There are 2 issues at play here:
There are 2 ways to go about fixing this second point:
I think the second one may actually be easier and would leave the existing 7 day authorize and capture window of time available.
Describe the bug
When trying to create a subscription product using the built in subscriptions functionality and having the
Authorize now, capture later
option enabled, at all points in the customer journey and site admin experience things seem to go smooth and function as intended.Then when the first renewal comes around, no renewal order is created, and the subscription remains
Active
indefinitely.On the stripe dashboard we see that 23 hours after being created, the subscription payment intent is canceled, however, this message is not relayed to the site, and so the subscriptions on the site remain active.
To Reproduce
Authorize now, capture later
andEnable Subscriptions with WooCommerce Payments
options are enabled.Actual behavior
You would expect that if the subscription's parent order has its payment captured within the ~23 hour Payment Window that the subscription creation event would complete, and the subscription would be established in Stripe.
Screenshots
After capturing payment for parent order, subscription creation event is not completed.
However, parent order is completed, and so subscription on the site becomes active
Expected behavior
I would expect that when the parent order has its payment captured successfully, that the subscription creation in Stripe would be completed
I would also expect that if the subscription creation event gets canceled in Stripe, the corresponding sub would be canceled on the site, or at least have some kind of error displayed.
Additional context
This issue was first surfaced in 5405801-zen, where a user was trying to create subscriptions for physical advertisements using WooCommerce Payments where their subscribers upload media for their ads, and so the site admin doesn't capture payment until verifying that the media is acceptable.