Is s2Member Abandoned?

Done!

1 Like

Thank you! :heart::pray:

1 Like

You are very welcome. I hope enough people do the same, at least every now and then. I used the link you provided, hence why I mentioned in my answer as well, so others can do the same :pray:t2:

2 Likes

Thanks for doing this Sim - I’ve also made a donation (earlier this year), and (same as you) I hope that some other people do as well :slight_smile:.

2 Likes

We need to put our money where our mouth is. Even if it’s a little bit here, another bit there. I hope more people do the same.

1 Like

Do you also have a PayPal Donation link, @clavaque? I’d like to make another small donation using PayPal funds. Others might want to do the same. :innocent:

I thought about sending money as “money to family and friends” using the email address I have from you, but I’d like to be sure it’s okay first. It’s also good to avoid paying PayPal fees (so you get 100%).

Thanks Sim!

Yes, you can use paypal(a)wpsharks.com if you want.

:pray:

1 Like

Done! I could not select friends and family (PayPal would charge me more than 20% on fees because your account is on a different country, sorry; I assume your fee will be much lower). :grimacing:

I hope more people join doing the same to help you at least a bit. :pray:t2:

1 Like

Thank you so much, Sim! That’s very nice of you, and very appreciated. :heart:

1 Like

You surely deserve more, but one step at a time, hopefully others do the same. :innocent:

I would pay again (I already have bought 3 times an muti site membership) - but only if Stripe handling is changed to only look at the fields visible in the profile, and drop looking at the hidden fields. This would solve moving stripe account to another country/another person and some other probs. And if s2member corrects the Unable to verify $_POST vars
problem which happens from time to time with Post vars correct (as seen as in resending the IPN the Post vars are found)

1 Like

That would be neat! I change the visible fields manually when reupgrading but I don’t to through the trouble of reimporting the hidden field that has that cluster for the “real information” the plugin weirdly uses instead.

Glad to see you are still working to improve one of the best membership systems around.

@clavaque I still think you should offer paid subscription (or support) that provides money to cover your hard work, and maybe get some help. I do not think free support forever is a sustainable business model. I have been running or consulting for software companies in Silicon Valley for 25 years. I want to see YOU thrive so WE can thrive and our customers can thrive. If you did, I would feel better about recommending S2 to more colleagues and customers.

1 Like

I guess for Stripe there needs to be something similar to this code for paypal?
Taken from paypal-return-in-subscr-or-wa-w-level.inc.php
Becasue on paypal it works without signup_vars.
In general I don’t understand why s2member not just simply matches the subscriber_ID - that would be so much simpler and much more reliable. I guess this would need a rework of 5-6 files but ultimately there is no other solution with all the errors this convoluted code produces.

$ipn_signup_vars = $paypal; // Copy of PayPal vars; used as IPN signup vars.
unset($ipn_signup_vars[‘s2member_log’]); // Create array of wouldbe IPN signup vars w/o s2member_log.
}
else if(preg_match(’/^(web_accept|subscr_signup)$/i’, $paypal[‘txn_type’]))
{
$tracking_properties = TRUE; // Yes, these tracking properties ARE being set here.

  				$paypal['period1']    = (isset($paypal['period1']) && preg_match('/^[1-9]/', $paypal['period1'])) ? $paypal['period1'] : '0 D'; // Defaults to '0 D' (zero days).
  				$paypal['mc_amount1'] = (isset($paypal['mc_amount1']) && $paypal['mc_amount1'] > 0) ? $paypal['mc_amount1'] : '0.00';

  				if(preg_match('/^web_accept$/i', $paypal['txn_type']) /* Conversions for Lifetime & Fixed-Term sales. */)
  				{
  					$paypal['period3']    = ($paypal['eotper']) ? $paypal['eotper'] : '1 L'; // 1 Lifetime.
  					$paypal['mc_amount3'] = $paypal['mc_gross']; // The 'Buy Now' amount is the full gross.
  				}
  				$paypal['initial_term']    = (preg_match('/^[1-9]/', $paypal['period1'])) ? $paypal['period1'] : '0 D'; // Defaults to '0 D' (zero days).
  				$paypal['initial']         = (strlen($paypal['mc_amount1']) && preg_match('/^[1-9]/', $paypal['period1'])) ? $paypal['mc_amount1'] : $paypal['mc_amount3'];
  				$paypal['regular']         = $paypal['mc_amount3']; // This is the Regular Payment Amount that is charged to the Customer. Always required by PayPal.
  				$paypal['regular_term']    = $paypal['period3']; // This is just set to keep a standard; this way both initial_term & regular_term are available.
  				$paypal['recurring']       = isset($paypal['recurring']) ? $paypal['mc_amount3'] : '0'; // If non-recurring, this should be zero, otherwise Regular.
  				$paypal['currency']        = strtoupper($paypal['mc_currency']); // Normalize input currency.
  				$paypal['currency_symbol'] = c_ws_plugin__s2member_utils_cur::symbol($paypal['currency']);

  				$ipn_signup_vars = $paypal; // Copy of PayPal vars; used as IPN signup vars.
  				unset($ipn_signup_vars['s2member_log']); // Create array of wouldbe IPN signup vars w/o s2member_log.
1 Like

You might have more than one subscription for the same cus_ id on Stripe, so using the customer ID might not be the best strategy, it should just use the cus and sub fields that are editable by us instead of a secretly hidden copy.

I think this part of the conversation is a different topic, though, can @clavaque split the topic into two, so we have a specific conversation around the issue on a separate page?

For sure this needs changing ASAP. Suscription_ID should be unique - because otherwise the user checked out twice. s2member does not support multiple subscriptions for a single customer. That’s why nothing else but subscription-id needs checking. Heck doesn’t even need to match the user_id or anything else (paypal and stripe subscription ids use a different format). KISS - Keep it stupid Simple,

I know stripe supports multiple subscriptions per user_ID. Paypal does so too. s2member in the case the user doesnt register (not pay) with a different email will just overwrite the older subscription. So as long as s2member does this, can also just reduce checking to only the subscription-id - I guess that’s what the second ID is for at stripe to get some sort of separation - but s2member isn’t taking advantage of that either I think. It really has to stop that s2member if it did a bug on receiving the IPN - and you register the user manually , then afterwards destroys everything or misses attributing payments correctly, or missing cancelling members (very very often) due to this.
If I would not each quarter go through and recheck all cancellations - over 20% of my users would be wrongly non paying… 20% is a huge figure. And then some are wrongly cancelled because payment is missed.

I have much more than 20% I think, per month. :grimacing:

I am down and upgrading people manually since I got the plugin, as it doesn’t have proper routines to handle late payments or declines.

I had opened a couple of topics previously about it. The plugin should allow us to configure it to EOT the user on each decline (with a delay we set on a setting) and it should also reupgrade if the user makes their payment later on (AND send us an email notification about it, this is a must for me, as I have manual routines when a user is reupgrade I can’t automate, it could also have a configurable “welcome back” message for the user when a late payment happens).

I surely do NOT want to cancel subscriptions that have pending payments on PayPal or Stripe as I can always try again later on and I do recover a substantial percentage of those as I already inform the user that a payment decline does not cancel a recurring subscription, but only a direct request to cancel it. Automatically cancelling those would be shooting on our own feet and, trust me, I’d have lost more than half of my users if I did it, like some of you do. You don’t create friction on things that you want the user to do. If you depend on them actively resubscribing, a large percentage will just not do it.

What helpdesk?

1 Like

I’m sad to report but is seems s2member is now officially dead. the domain was allowed to expire and its been bought by a bot advertising company so I don’t think its coming back.

1 Like

I will do the best I can, even though I am not the original developer and I also don’t own the rights to the code (it seems to be open source?)

Anyways, I registered the domain s2Member.co so we at least have a place to meet and some sort of content library surrounding the plugin. Specially since this forum might disappear in about two or three weeks. :grimacing: