Buttons Stopped Working - DEPRECATED_PARAM_MODIFY

Ok…so the s2member form is in /src/includes/templates/buttons/paypal-checkout-button.php

This is called from /src/includes/classes/sc-paypal-button-in.inc.php to fill in the data

Then it calls sc_paypal_button_encryption in /src/includes/classes/sc-paypal-button-e.inc.php to overlay encryption.

So it does not appear that the API in use has been deprecated.

The API in question can be found here:
https://developer.paypal.com/docs/paypal-payments-standard/integration-guide/formbasics/?mark=_s-xclick#specifying-button-type--cmd

Although the definition of _s-xclick is The button that the person clicked was protected from tampering by using encryption, or the button was saved in the merchant's PayPal account. PayPal determines which kind of button was clicked by decoding the encrypted code or by looking up the saved button in the merchant's account. there is no explanation on this page as to how to encrypt.

The following is the excryption integration guide…there is no reference to the hidden “name=encrypted” field though I did find an independent reference to using this undocumented field (https://travis.media/paypal-button-variables-send-receive-data/). At present the only reference I have found to the “name=encrypted” field was in the deprecated Button Manager API as a Buttoncode type (https://developer.paypal.com/docs/archive/button-manager/api/create-button-soap/?mark=bmcreatebutton). That was why I mistakenly thought the s2member PayPal buttons API was deprecated…I could not find another reference to the “encrypted” field.

Stay tuned…I’m still tracking this down to figure out what PayPal expected in the past, what they expect now, and when this expectation changed.

1 Like

OMG thank you so very much! I will totally stay tuned for more information.

Can you check if your host updates your php between the time it worked and the time it stopped working.

1 Like

It shouldn’t have, since it’s a VPS and I did not update it… Also same Linux version as before (didn’t upgrade to 20 yet).

I am still on PHP 7.4.4 (March 20, 2020). I can’t think of a plugin update that could be interfering either.

Didn’t change any setting on Cloudflare and I am still using only TLS 1.2+ as usual, same certificate (Cloudflare gives a very long life certificate).

I clear the cache manually a bunch of times a day, since I am using free NGinx, which does not have a way to do that automatically unless you recompile the entire thing. So it shouldn’t be that either.

Ok. Just checking. These payment companies are amateurish in how they manage their APIs. Is it making it tough for me to cross match the PayPal version s2member is compatible with vs. any breaking changes PayPal may have put in place.

@clavaque - can you take a look at this please. Cheers.

1 Like

I have the exact same error problem on my website.This happened over night for no apparent reason with optimize press software. My code looks the same as the example and no one has been able to sign up all day. No changes have been made to my paypal account, all the settings are the same. All the normal subscriptions are still being charged but no one can use the buttons to sign up.

1 Like

I guess PayPal changed something and we don’t know yet. I complained to their customer service but sadly the people that usually pick up our cases first are completely clueless since it would be too expensive for PayPal to let us reach real tech support at start. Let’s hope we find a way to work around it. I am using manual buttons but it’s just awful because I can’t use IPN to give permissions to my users and I am having to do it manually exactly on the day that I have most people subscribing, since there’s a game update (and mod update as well).

I wish we find a way to make it work, not using PayPal Pro, it’s prohibitively expensive to me.

If we could at least create manual buttons and make them send the information s2Member needs to process what it used to I am happy enough.

Just wanted to chime in: I have the very same problem on my website. All the recurring subscription are not working. I had one 2 days ago and now it is not working so I suppose something has changed on PayPal side.

Here is my subscription page in case you want to check: https://theguitarchannel.biz/buy-backstage-pass/

The unusual aspect of this error is that the error code returned by PayPal (DEPRECATED_PARAM_MODIFY) does not produce any references to that term if it is searched for via Google. I have rarely if ever seen that.

i have the same problem. I am monitoring subscribers to watch which level i have to set them to with the paypal subscription button. it sucks. im not sure pay flow would help. i have payflow on another account and the subscription buttons were exactly the same

@thesimarchitect, @genmichelle, @pjournel - how many of you are using PayFlow Gateway (https://developer.paypal.com/docs/payflow/payflow-gateway/) rather than PayPal Payments Pro (https://developer.paypal.com/docs/paypal-payments-pro/)?

1 Like

I don’t remember subscribing to either. I just followed the instructions provided by the plugin to set up a basic PayPal Payments Standard.

Then I use their SOAP thing.

I am using PayPal Standard for my subscription website. I have paypal payments pro on another account for another ecommerce and really dont need it. When you ask for payflow, paypal agents tell you that paypal payments pro is the same thing. So its always been kind of confusing. I am also not using s2member. I am using optimize press, which seems to generated the same code that Sim Architect posted. I found this thread by searching for DEPRECATED_PARAM_MODIFY.

OptimizePress is an old fork of s2member but is not related to s2member. Solutions proposed here will only apply to s2member plugin. You can bug OptimizePress support if you want to. If we solve it here you can refer the OptimizePress support to the solution.

So I believe I have figured out the oblique error reference. The problem appears to be the inclusion of the “modify” parameter.

1 Like

Here is the PayPal announcement of the deprecation of the Modify parameter: https://developer.paypal.com/docs/paypal-payments-standard/integration-guide/Appx-websitestandard-htmlvariables/#deprecated-variables

POSSIBLE SOLUTION:

Delete line #34 in /src/includes/templates/buttons/paypal-checkout-button.php ( <input type="hidden" name="modify" value="0" /> ). This parameter has been deprecated.

3 Likes

Thank you so much! That did the trick for me. I use the Divi theme’s pricing tables so I have to use url links for my subscription buttons and don’t use the shortcode generated by s2Member. I originally used the shortcode generator to get the url’s though. I just removed the &modify=0 from my url links and it’s back to working. The buttons had stopping working earlier today and I wouldn’t have known but a customer just told me she’s been getting that error all day. Yesterday it was fine though. Paypal’s deprecated variables page you linked to just shows modify=1 and modify=2 as being deprecated in 2019, so the modify=0 should be fine still…but it’s obviously not so they must need to update that page still something changed in last 24 hours (unless I’m missing something). Wow, that’s awesome that you found that though…good investigating! I haven’t had anyone go through the whole signup process since I just fixed it so hopefully the rest goes smoothly and as usual. I will give an update after I get my next subscriber. Thanks again!

OMG!!!

Thank you SO VERY MUCH!!!

It works now! I can roll back my regular buttons and stop the madness I have been for the past day or two with the manual ones!

You are welcome Nicole. I expect that some coder at PayPal looked at the modify=0 and thought…“hey…that was deprecated in 2019…might as well delete it”.

2 Likes

Glad it helped :slight_smile:

@clavaque - DEPRECATED PAYPAL OPTION needs to be removed in the next s2member plugin up-issue. Cheers :slight_smile:

1 Like