Stripe - Edit Payment Method no longer works

Edit payment method with Stripe seems to have stopped working recently.

I am pretty sure this worked before because we never received any complaints in the past. But over the past couple weeks we’ve received many complaints about this not working. I can reproduce this issue in a testing environment.

I create a new subscription that bills daily using the Stripe test Visa 4242.

I then immediately change it to Stripe test MC 4444. As you can see below, Stripe properly sees the new card under “Payment Methods” and marks it as default

But subsequent payments still charge to Stripe test Visa 4242, instead of the new default MC 4444:

Hi Alan.

Thanks for reporting this.

Do you mean the using the s2 shortcode, or are you updating it from Stripe’s dashboard?

I am not updating it from the Stripe Dashboard, but using the s2member form on the website. I believe I am essentially using the shortcode. I output the result of this call:

			"cancel" => 1,
			"desc" => $desc,
			"unsub" => 0,
			"captcha" => 0

EDIT: The code above is incorrect, I meant to write:

			"update" => 1

Thanks for the new details.

I believe I am essentially using the shortcode. I output the result of this call:

What do you mean? Are you using the s2 stripe cancellation shortcode on a page for the user to cancel?

Or did you write a custom script that includes that code snippet you posted above? If so, could you show me the full code of your customization, please? Where did you put it?

Thanks. :slight_smile:

I am really sorry, I sent the wrong code. I meant to say we output the result of this call:

			"update" => 1

This is on a page for updating billing. It shows the s2member form for updating billing, I believe it’s the same form as given by the shortcode. The student then uses that form to edit their billing details.

@clavaque Please let me know if you need any logs or other information. I can reproduce this bug on a test site so it’s easy for me to give you logs without worrying about privacy

@clavaque This is still an ongoing issue for us. Please let me know if you need any more information to investigate this. I think this issue will be easier to solve than duplicate stripe payments because I was able to reproduce with our staging site in combination with Stripe test mode.

This is concerning as I see a few people are having issues with Stripe. My developer told us Stripe did a major api upgrade late last year and it’s possble s2member’s api needs to be updated with it.

@clavaque Please advise if there is anything we can do to mitigate/fix this or if there is any information you need. I turned hid this option on our production site for now b/c it appears to be broken.

@clavaque Just following up to see if there is any information we can provide to help resolve this issue.

@clavaque Please let me know what information we can provide? This is an ongoing issue for us because clients cannot change their payment information. Thanks!

@clavaque Here is some more information:

When the payment info is updated from -4242 to -4444, the customer’s default credit card is updated properly to -4444:

BUT the Subscription does not update to the new “default” credit card (-4444), and remains on the old credit card (-4242):

Hi Alan.

Thanks for that info. Sorry I didn’t get back to this sooner. I’ve been kinda tied up. Catching up with emails, now getting back to the forums a bit. It’s really late here now, but I wanted to tell you I saw your message. I’ll investigate this to see if I can reproduce it. Will let you know if I need any details. If you think of anything, please send it.

By the way, is that a real card? Just curious, the 4242 card is one of Stripe’s most used test cards.

Yes, they did, two years ago, actually. We were one of the first to release an updated Stripe integration that uses their new APIs that support Strong Customer Authentication. :slight_smile:

Thanks! Yes, those are both test cards (test Visa and test MC). I was reproducing the issue in my development environment using Stripe’s testbed.