S2 Button code suddenly not working with PayPal

Not yet - I think I will just add their plugin to an empty site and create a button.

Did find more of these (note the date is March, which is when we had credit card issues on subscribe buttons):

Anybody who doesn’t think trouble is here - or at least coming - is not paying attention.

When you say you’ll use their plugin to create a button, do you mean you can configure the button with s2Member? Or are you replacing s2 completely?

that means replacing completely - there is no way to use Stripe/paypal buttons from their generators with s2member.I really do wonder that I’m not affected.
My buttons are generated on the fly as I include more information than s2member does by default. So I can have one button with several prices in a dropdown and depending on IP/price other options will popup.
So far it still works normally however. I therefore really wonder what is meant by new buttons.

When PayPal creates a button idea and stores it with a button it includes the date.

On a site having issues since yesterday, I literally took an old subscribe button from last year, modified the price and title (edit on payapal.com/buttons/) put it on the site that has the issues, worked fine. A new button I created yesterday (while testing) does not.

of course, it does not integrate with S2, and it’s not something 99% of our clients can do.


I don’t think there are that many people on this forum.:grinning:

THIS is how they want it now

and these API

and I’m guessing s2 won’t do anything till have their user base complains, which is a ■■■■ shame.

@ openmtbmap You use PayPal Standard buttons but they still work? Even new ones?

I’m using a javascript impelementation that generates a button like call dynamically. In the end of course the possibilities are limited so every combination has been used many times.
And yes it’s still working with paypal Austria (which uses the same infrastructure/integration as Germany AFAIK). Things may be different per country - usually paypal gradually starts new things by countries.

Yes that is how you do it now. JavaScript, rest api (NOT SOAP) etc. (see above)

Of course, none of that works with s2 itself. :grinning:


But my script (sorry it’s php not javascript) Button.zip (8.5 KB) still calls the old functions.

It creates a much better dropdown menus vs s2member standard buttons however. More flexible and allows proper VAT attribution (not possible with s2member standard buttons because they miss the third factor)

Sorry, I misinterpreted

I’m using a javascript impelementation that generates a button like call dynamically

Because that what PayPals ‘new’ code does - uses javascript to create the button itself and acll the rest API. My bad


I still don’t get it. Which country (as in paypal business account country) are your 92 websites from? If several please list the major ones.

You say it only affects subscriptions but not buy now items?
And I would not know how would paypal identify a “new button” vs an “old button”. I see they could identify a new user - but not when that button was created.

As you can see in my “button generator” my script creates the button information dynamically based on variables (the button goes into theme, the other file into a plugin, the place you want to see the button then as a shortcode in your content)

$result = “[s2Member-PayPal-Button level=‘1’ ccaps=’’ desc=’” . $pay_options[$value][“desc”] . “’
ta=’” . $pay_options[$value][“price_1st_year”] . “’
tp=’” . (($pay_options[$value][“price_1st_year”] > 0) ? ‘1’ : ‘0’) . “’
ra=’” . $pay_options[$value][“price”] . “’
rp=’” . $pay_options[$value][“duration”] . “’
rt=’” . $pay_options[$value][“lifetime”] . “’
rr=’” . (($pay_options[$value][“price_1st_year”] > 0) ? ‘1’ : ‘BN’) . “’

All the sites are on a dedicated server in Iowa.
Most of the businesses ON those sites - not all - are US businesses with a US PayPal account.

Some PayPal accounts ARE in the EU, a few in south east Asia and Australia

ALL the sites use s2member Pro, standard Paypal (not pro), and use the code AS it is generated by the s2member button generator. WE don’t touch the code at all (I am not the coder - my CTO is an ex-NASA/ex-Bell Labs senior engineer and developer) He (or his team) is the one actually doing all the testing etc. He doesn’t have time for emails and forums - he just passes the information to me. LOL

But when HE says there is an issue, I know there is an issue.
They even, to be thorough I guess, went thru the entire payment on 1 site - they “wrote in” a 2 cent payment, got all the way thru to s2 default screen you return to after payment, and got some weird "
ERROR: Unable to verify $_POST vars.
message at the end (no link to registration screen)

But that error isn’t related to the ‘checkout cart’ type pay screen appearing with no price set when you click the button.
the payment is processed as a single payment, NOT AS A SUBSCRIPTION.

Apparently, that payment screen the buyer sees - without a price - IS a shopping cart pay screen

I’m hoping if the first issues gets fixed, that error will go away.:grinning:


I am having the same issue, even with buttons that have been there for years. In fact they are recurring payment shortcodes but when the user gets to Paypal, there is no amount filled in and it is a single purchase instead of a recurring payment

Welcome to the party.:grinning:

Complain to PayPal - the merchant support group. You normally have to go through hoops normal to get to these guys:


The more people who report the SAME PROBLEM, the faster they will deal with it. They are big but faster than s2 obviously. Let us hope anyway.


Oh ■■■■, by now I’m also affected. Only on subscription payments - payments for fixed term are still fine.

And yeah I’m sure this is not about when you created the button. This will simply happen on all payments including subscription.

Best contact your business support on paypal via phone. Usually paypal has some premier business support in you own country once you make it past the first level support from India or wherever.

The real solution however is for s2member to switch to the current paypal rest API as soon as possible.
Temporarily you can only remove subscription payments.

BTW - what about the amount for the second year? Is there a subscrption created - and if so with which amount?

that is correct s2member needs to be updated to use Paypal’s new checkout system and API.
I got an email about it the other day. @clavaque would need to update the plugin the their new system for things to work again.

I’m very thankful that I only use s2Member for non-recurring payments, which for now still seem to be working

But the fact that this issue was first reported two days ago and has yet to be acknowledged by @clavaque is a bad sign.

Well 40% of the people on this forum (:grinning:) have experienced the problem, and crickets!

We have been on the phone - including my engineer - 7 times. Ultimately, they are NO use - THEY refer you, eventually, to


who will give you a support ticket. EVERYONE should complain.

I also filed a “message” to s2member sales on the issue, since ultimately the ■■■■ code needs to be updated to the way PayPal wants it done NOW

It is sad - and bad business - to be ignored.


There is no s2Member “sales”. It’s all run by one guy these days, and he has known forever that s2’s PayPal integration was on life support.

LOL thanks - I am not surprised. But I do wish I had known
before we made such a large commitment.

So alternatives?

Paid membership Pro seems likely - but only the free version.
When you have 100 sites - 300 by end of summer, their licensing would cost a fortune!
And I believe they are still using IPN and SOAP as well.

ALL of our sites are subscription based, so the fact single purchase works is not useful to us.


I’ll probably switch to MemberPress. It’s expensive but as the saying goes, you get what you pay for. Plus I need a way to transfer my s2Members to the new plugin, which I believe MemberPress offers.

There’s no incentive for developers of free plugins to keep working on them. Better to go with a paid service.