Simple Membership Plugin › Forums › Simple Membership Plugin › Stripe failed event extending membership 1 year
Tagged: expiration, fail, membership, stripe
- This topic has 5 replies, 3 voices, and was last updated 4 years ago by
admin.
-
AuthorPosts
-
May 15, 2022 at 5:10 pm #23906
GreenBandana
ParticipantWe have found the same behavior as https://simple-membership-plugin.com/forums/topic/stripe-charge-failed-event-not-processed – for however many times Stripe attempts the credit card, the user’s account is extended one subscription period.
So if the credit card has changed and the card is tried 3 times before failing, the user’s subscription (in our case) is extended 3 years without any payment.
Is there any update here? We’re using 4.1.0. Thank you!
May 17, 2022 at 1:03 am #23911mbrsolution
ModeratorHi, I have submitted a message to the developers to investigate further your issue.
Thank you.
May 17, 2022 at 2:24 am #23915GreenBandana
ParticipantThanks. Since my post references another one with the same issue (from 1+ year ago), was there a fix found previously?
May 17, 2022 at 12:24 pm #23918admin
KeymasterThis is most likely going to be a setup related issue with the webhook in the Stripe account. Lets try to narrow it down.
#1) First, please confirm that you are using the following option to create your Stripe subscription button.
https://simple-membership-plugin.com/sca-compliant-stripe-subscription-button/Some users still try to use the old stripe button option which Stripe has deprecated and it can have unexpected behavior so it’s best to eliminate that possibility.
#2) In your Stripe webhook, are you only selecting the following “events” as per the documentation or have you selected all events?
– Customer
– Charge
– invoice.paidIt’s important to no select all events because that will confuse the plugin.
#3) It doesn’t need to process a failed charge event since it has other mechanism to deal with that. You have to use the plugin the way we have designed it otherwise it won’t make sense.
Normally, the plugin waits for a SUCCESS charge. Only then it will extend the duration by updating the start date. If a successful charge is not received in time, then the profile gets set to “inactive”. It doesn’t matter if “charge is failed” because they won’t get the additional time until a successful payment is received. When Stripe determines that the subscription has permanently failed (after charge attempts fail a few times), they will send a SEPARATE event which our plugin will handle and deactivate the user account. So if you keep asking about the “failed” charge event, it won’t make any sense in the context of how our plugin works.
We want to process/handle a minimum number of webhooks to make sure it isn’t trying to process a high load of webhooks which will slow the site down. Stripe recommends processing the least number of webhooks.
#4) In the membership level’s configuration, are you specifying a duration value (example: 1 year)?
#5) Do you have the debug option enabled? If not, please enable it. When this even occurs the debug log file will contain useful information that will be helpful to narrow things down.
https://simple-membership-plugin.com/enable-debug-logging/May 17, 2022 at 7:57 pm #23922GreenBandana
ParticipantThanks for the responses!
1. We are using the SCA compliant Stripe buttons.
2. Here are all the events the webhook is listening for (40 total); the only new one I added today is “invoice.paid”. Unless I’m misunderstanding, there doesn’t appear to be only one “Customer” or “Charge” webhook.
charge.captured
charge.dispute.closed
charge.dispute.created
charge.dispute.funds_reinstated
charge.dispute.funds_withdrawn
charge.dispute.updated
charge.expired
charge.failed
charge.pending
charge.refund.updated
charge.refunded
charge.succeeded
charge.updated
customer.bank_account.created
customer.bank_account.deleted
customer.bank_account.updated
customer.card.created
customer.card.deleted
customer.card.updated
customer.created
customer.deleted
customer.discount.created
customer.discount.deleted
customer.discount.updated
customer.source.created
customer.source.deleted
customer.source.expiring
customer.source.updated
customer.subscription.created
customer.subscription.deleted
customer.subscription.pending_update_applied
customer.subscription.pending_update_expired
customer.subscription.trial_will_end
customer.subscription.updated
customer.tax_id.created
customer.tax_id.deleted
customer.tax_id.updated
customer.updated
invoice.paid
invoice.payment_succeeded3. Understood
4. Yes, all levels are set to expire after 1 year
5. We’ve now enabled debug and will send along any reports generated.
May 18, 2022 at 5:03 am #23925admin
KeymasterThank you. When you select the “customer” and “charge” category from the event selection dropdown menu, Stripe will add all the sub-events under that category so that’s fine. Your current webhook event setup looks fine to me.
The following should happen:
If a member’s account has already used up the 1 year time and a new successful payment hasn’t been received from the subscription already, the plugin will deactivate/expire that account. Allow for 24 to 48 hours to make sure the cronjob had a chance to deactivate the account (the cronjob that checks and deactivates accounts runs every 24 hours). If that is not happening, the log file will be helpful to get clues as to what other things need to be checked.
-
AuthorPosts
- You must be logged in to reply to this topic.