latest stable versions: v150827 (changelog)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

Jason (Lead Developer)

Staff Member

My Latest Replies (From Various Topics)

Viewing 25 replies - 1,326 through 1,350 (of 1,909 total)
Author Replies
Author Replies
Posted: Monday Jul 9th, 2012 at 11:01 pm #18754
Staff Member

Thanks for the follow-up.

@Lee Keels

Thanks for reporting this important issue. I’m having this adjusted for the next maintenance release.

Posted: Monday Jul 9th, 2012 at 10:52 pm #18750
Staff Member

Thanks for the heads up on this request for support.

What is it about s2Member that constrains the file delivery in this way?

Yes Cristián, the files are in the s2member-files directory as mentioned in the very first sentence.

We have a dedicated server with more than enough storage and more than enough bandwidth, and NO desire to introduce the added cost of Amazon S3.

What can we change on a dedicated server to improve the situation?

If you’re having trouble with large file downloads and/or streaming audio/video, I recommend a media server like Amazon S3 w/ CloudFront, so that files are delivered directly from the media server, as opposed to being protected and served locally via PHP scripts (i.e with s2Member local file storage).

The hang ups that you’re seeing, are related specifically to PHP-based file downloads, via scripts. Depending on server configuration and the hosting environment, scripts timeout limits, memory limits, etc… you may have different results and unreliable file delivery (with very large files). PHP is not a good way to serve large files, it’s prone to the issues you’ve described; and this is why Amazon S3/CloudFront have been integrated with s2Member.

To clarify… It’s not a server capacity issue, it’s related to the way files are served locally via PHP scripts, which almost always have execution time & resource limits associated with them. When s2Member is integrated with Amazon S3, authentication is still performed via PHP, but the actual file delivery occurs through a signed link, which leads directly to the media server. So it’s a much better approach, bypassing issues that are commonly seen with very large files (i.e. streaming audio/video).

You can try increasing the max_execution_time directive in your PHP.ini file, and increasing your memory_limit to see if it helps, but I consider those to be temporary workarounds, and not a permanent resolution for this issue. In my opinion, the best solution for large files, is to integrate s2Member with Amazon S3, so that files are protected by Amazon S3, and permissions integrated with s2Member. Adding CloudFront to the mix is optional, but I recommend that as well; particularly for faster delivery of streaming audio/video.

Posted: Monday Jul 9th, 2012 at 10:32 pm #18748
Staff Member

Hi there. Thanks for the follow-ups here.

~ I apologize for the delayed response. Thanks for your patience.

The error code “10422”, is normally associated with a funding source problem. However, I’ve also seen this error occur whenever a PayPal account is not capable of charging transactions on a recurring basis. You might check with PayPal support, to make sure that your account is indeed setup to handle recurring billing.

Funding source problems can stem from account configuration. You might take a look through your PayPal account profile, and make sure there’s nothing in your PayPal Profile that might prevent your funding source from going through. For example, is the funding source associated with a checking account, and if so, do you accept checks? Is there a country block configured on your account, of any kind? Or, is the funding source associated with the same exact PayPal account as the one you’ve configured to run s2Member Pro as merchant with? That can cause some problems as well.

You’ll want to test Express Checkout transactions with a separate PayPal account, one which is NOT the same as the merchant account that you’ve integrated s2Member with (i.e. a personal PayPal account perhaps).

If problems persist, there are some related threads
in the PayPal support forum, which might be of interest to you.
https://www.x.com/developers/paypal/forums/nvp/error-no-10422-customer-must-choose-new-funding-sources#answer-166692
https://www.x.com/developers/paypal/forums/general-support/new-and-confused#answer-181204

If nothing gives, I recommend that you contact PayPal support, and ask them to identify the transaction that failed, and to explain why their system is rejecting the funding source. If there is anything more that we can do, please let us know. We’ll be happy to help resolve this issue for you, but at this point, I think PayPal needs to get involved for you as well. The error code: 10422, indicates a funding source issue, and since there’s not a funding source issue that we can identify for you, you’ll want to contact their support dept for further details on the error.

Posted: Monday Jul 9th, 2012 at 8:31 pm #18732
Staff Member

Hi Sam.

I’m not aware of any issues having been reported, but I’ve never tested it myself.

Posted: Monday Jul 9th, 2012 at 8:24 pm #18731
Staff Member

You can accomplish it like this:

<script type="text/javascript">
	if(S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_IS_UNLIMITED)
		var ws_plugin__s2member_skip_all_file_confirmations = true;
</script>

Just be sure that s2Member’s JavaScript has already loaded before this is added to the <head></head> section. That way S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_IS_UNLIMITED is already populated, and you can read from that variable, as seen in the code sample above.

Posted: Monday Jul 9th, 2012 at 7:53 pm #18728
Staff Member

Thanks for the heads up on this request for support.

@Epix Media

Thanks for reporting this important issue.

I was able to reproduce this with PayPal Express Checkout. It appears that it’s caused by a change in the reCAPTCHA service APIs, which will no longer allow a single response code to be verified more than one time. The error occurs only during PayPal Express Checkout, because the customer leaves the site, and upon return, the challenge response is verified again (unnecessarily).

I’m having this fixed in the next maintenance release.

Posted: Tuesday Jul 3rd, 2012 at 5:52 pm #18226
Staff Member

Hi there. Thanks for the follow-ups.

@ Lee Keels

I need a very specific answer on this question. If a user has a CCBill expiration date of 6/30, for example, on exactly what date will s2Member demote them? My understanding is that there is a one-day grace, so I assume the demotion would happen on 7/1, but I would like to know exactly when it should happen so that I can test this effectively.

s2Member’s calculation of EOTs, will differ slightly, depending on the type of the transaction, when a cancellation occurs (i.e. during an existing cycle, or during a trial period, etc). There are a multitude of factors that must be considered, so that a user is demoted only after time they’ve already paid for, is completely expired.

In your case, the ccBill logs that we reviewed, indicate a failure to receive data from ccBill’s DataLink integration. Thus, no EOTs are going to occur until that is corrected. I would suggest contacting ccBill about this matter, and ask why connections are being rejected. My experience shows that it’s normally caused by a change in the server’s IP address. ccBill might need to update things on their end. I’ve also seen this caused by outdated DataLink credentials supplied to s2Member. I would double-check your DataLink integration with s2Member, to be certain everthing matches up with your ccBill DataLink service access.


To be more specific about EOTs.

Yes, s2Member always calculates one extra day. So here’s a basic example.

1. Customers pays on Jan 1st 2012, under the terms of a recurring fee every 30 days.
2. Customer cancels on Jan 12th 2012 (billing stops immediately).
3. s2Member calculates the EOT time as: Feb 2nd 2012.
That’s 30 days they’ve already paid you for, plus one extra day (grace period).

Posted: Tuesday Jul 3rd, 2012 at 5:25 pm #18223
Staff Member
Hi there. Thanks for the follow-up.
I apologize for the delayed response.

I found the line sending the error, it is in the method “paypal_api_response” of the file wp-content/plugins/s2member/includes/classes/paypal-utilities.inc.php (line 189).

It seems the paypal API doesn’t send back a success code NOR a known error code :

‘__error’ => ‘Error. Please contact Support for assistance.’,

But for the test with the 3 php files to test cURL. None of them gave me results. Always a blank page.

All of this adds up to a connection failure. That generic error, coupled with a failed test suite against the cURL extension, would indicate to me that your server is unable to communicate over the SSL protocol with PayPal. I suggest contacting your hosting company, and asking them to enable cURL and/or allow_url_fopen for you. Also, I would ask them to make sure that your server is compiled with support for the OpenSSL extension.

I also recommend this thread, detailing the ideal server configuration for s2Member.
http://www.s2member.com/forums/topic/ideal-server-configuration-for-s2member/

Shared hosting known to work with s2Member.
– MediaTemple (gs)
– HostGator (any package)
– BlueHost
Or any of these: http://wordpress.org/hosting/

Please let us know what your hosting company says.

Posted: Saturday Jun 30th, 2012 at 10:48 am #17965
Staff Member

Thanks for your patience.

We’ve worked through some additional issues with PayFlow (as it behaves a bit differently under certain scenarios). I’d appreciate it if you could test the latest patch for us, if that’s possible. Please unzip and extract the attached file. Allowing it to override your existing copy of:
/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php

Please report any issues that you encounter.
http://d1v41qemfjie0l.cloudfront.net/s2member/uploads/paypal-checkout-pf-in.inc_.php_2.zip

Posted: Saturday Jun 30th, 2012 at 10:16 am #17960
Staff Member

Thanks for the heads up on this request for support.

@Franck Benedetti

Hi there. I am SO sorry. Yes, we did fail miserably here, and I sincerely apologize.
It looks like I archived this thread by mistake. Completely forgot about you :-(

I’ve just finished a review of your installation and log files.
I’m finding several IPN log entries that look like this:
'mc_currency' => 'USD',
'item_number' => '',
'residence_country' => 'CA',
'handling_amount' => '0.00',
'transaction_subject' => 'h****eo.com',
'payment_gross' => '29.95',
'shipping' => '0.00',
'ipn_track_id' => '207*****3',
's2member_log' => 
array (
  0 => 'IPN received on: Tue Jun 26, 2012 3:49:59 am UTC',
  1 => 's2Member POST vars verified through a POST back to PayPal®.',
  2 => 's2Member originating domain ( `$_SERVER["HTTP_HOST"]` ) validated.',
  3 => 'Ignoring this IPN request. The `txn_type/status` does NOT require any action on the part of s2Member.',
),

This indicates a problem with the original PayPal Button that was used to make the purchase. The original PayPal Button did NOT include an item_number, because it’s empty in the IPN data that PayPal sent back to s2Member. Therefore, incoming IPNs (and post-processing of each transaction) is failing on your installation.

I suggest that you implement your PayPal Buttons using an s2Member Shortcode:
Please see: Dashboard -› s2Member® -› PayPal® Buttons

Or, if you’re generating your own PayPal Buttons, please follow these instructions carefully.
http://www.primothemes.com/forums/viewtopic.php?f=36&t=309#p1333

Posted: Saturday Jun 30th, 2012 at 10:00 am #17958
Staff Member

Thanks for the heads up on this request for support.

I’m not aware of any widespread issue that would cause this. However, I’ll be happy to run diagnostics on your installation, if you can please post a Dashboard login and FTP access here:
s2Member® » Private Contact Form

Posted: Saturday Jun 30th, 2012 at 9:52 am #17957
Staff Member

Thanks for the heads up on this request for support.

@ Maria Barrett

Starting with s2Member Pro v120608:
http://www.s2member.com/changelog/#s2-changes-v120608
It became possible for customers to checkout through PayPal Express Checkout, with ONLY a credit card, so long as the purchase does NOT include a trial period, or any recurring charges. In other words, it works with “Buy Now” purchases only.

“Premium Services” in the UK, referred to as “Enhanced Recurring Payments” in the USA; is an add-on for PayPal Standard accounts, and does NOT work with Express Checkout in my experience. It only enhances Standard PayPal Button functionality, it does not enhance Express Checkout.

I would suggest that you contact PayPal to confirm this, as their rules are slightly different in UK. It would be good for you to hear this from PayPal directly. In the mean time, if you want to accept credit cards for recurring payments, you will need a PayPal Pro account, with Recurring Billing service enabled. This works together with s2Member Pro Forms, to maximize functionality/flexibility.

Posted: Saturday Jun 30th, 2012 at 9:31 am #17953
Staff Member

Investigation completed.

It looks like the CloudFront Distributions that s2Member configured, were somehow accessed by another software application, which is using a different version of the CloudFront API. This seems to cause some problems on the CloudFront side of things, due to some recent changes/updates from Amazon.

Amazon just recently released a whole new API for their services. Some software applications (like s2Member) are still using the previous version, and some are now using the new version. If two different software applications attempt to configure CloudFront distributions, but in different ways (i.e. with two different APIs), it forces future API requests to occur with the latest version; else they will fail.

I believe this is the underlying cause of the problems that you’re experiencing. s2Member is NOT using the latest version of the Amazon API. It was only recently released, and while work is underway to keep things updated, we’re not there yet. s2Member uses API version: 2010-11-01 (the previous version).

The newest version is: 2012-05-05.

Here’s what I suggest.

In most scenarios, ONLY s2Member is going to access your CloudFront Distribution configurations. Therefore, I would simply start over from scratch, and let s2Member re-configure things for you.

1. Log into your Amazon CloudFront console at Amazon.com.
2. Manually disable (and then delete), both of your existing s2/CloudFront Distributions.
3. Then come back to your installation of s2Member, and check the box to re-configure CloudFront.

This will give you a fresh start, and s2Member’s integration should start working for you again, as expected.

Preventing this from happening again.

* Please do NOT configure another software application, running on a different API version, to communicate with these CloudFront Distributions. This seems to cause a conflict on the Amazon side of things, and future API calls may fail. Hopefully they’ll get this fixed asap. I’m reporting this now.

Posted: Saturday Jun 30th, 2012 at 7:15 am #17941
Staff Member
Thanks for the follow-up.
~ I’m running diagnostics now.
Posted: Saturday Jun 30th, 2012 at 6:58 am #17937
Staff Member

Hi there. Thanks for bringing this thread to my attention.

Regarding non-tangible, irrevocable, digital goods.

We will ONLY issue a refund if the Product fails to perform basic functions, as designed. And, you HAVE already worked with, and followed all advice presented by our support team, in an effort to resolve these issues.


@ David Webb
In what way has s2Member Pro failed to perform as advertised? So far you’ve described a change of plans on your end, not a failure in the product itself. If you can show us the product failed to perform as advertised, we’ll gladly issue a refund.
Posted: Wednesday Jun 27th, 2012 at 6:43 pm #17710
Staff Member
Thanks for the follow-up.
I’m going to take a look at your installation now.
Posted: Wednesday Jun 27th, 2012 at 5:54 pm #17707
Staff Member

Thanks for the heads up on this bug report.

I’ve had this corrected in the development copy, and it will go out in the next maintenance release. In the mean time, existing installations can be patched with the attached file. Unzip, and allow this file to overwrite your existing copy of: /s2member-pro/includes/classes/gateways/paypal/paypal-checkout-pf-in.inc.php

Patches an existing installation of s2Member Pro v120622
http://d1v41qemfjie0l.cloudfront.net/s2member/uploads/paypal-checkout-pf-in.inc_.php_1.zip

Posted: Wednesday Jun 27th, 2012 at 5:34 pm #17704
Staff Member

Thanks for the heads up on this request for support.

I’ve just finished a preliminary review of your installation.

I found a log file here: /plugins/s2member-logs/ccbill-dl.log

Which includes several entries that read:

0 => 'Storing last DataLink time: Wed Jun 27, 2012 4:30:02 am UTC',
1 => 'Recording DataLink error at: Wed Jun 27, 2012 4:39:38 am UTC',
2 => 'Recording server IP address: 66.35.77.138',
	4 => 'Error: Authentication failed.  02',

This indicates there might be a problem with your existing ccBill DataLink integration. You might review this section of your Dashboard: Dashboard -› s2Member® -› ccBill® Options -› DataLink Integration. If everything looks good (i.e. nothing has changed), I would contact ccBill and ask if your server’s IP address is still allowed to connect to the ccBill DataLink service.

Is it possible that your server’s IP address changed recently?

Posted: Wednesday Jun 27th, 2012 at 5:24 pm #17702
Staff Member
Thanks for your patience.
What version of s2Member are you running please?

I noticed your checkout form is processing in euros, and since a recent release of s2Member Pro addresses a change in currency conversion; and a bug fix related to the euro symbol, I’d like to confirm with you.

See also: s2Member® Unified Changelog » v120622

Posted: Wednesday Jun 27th, 2012 at 5:18 pm #17701
Staff Member

Thanks for the heads up on this request for support.

All registration data ultimately is piped through s2Member’s core registration routines, located inside:
/s2member/includes/classes/registrations.inc.php

If you wanted to update meta values, based on GET/POST data; you might do it like this:

Create this directory and file:
/wp-content/mu-plugins/s2-hacks.php
( these are MUST USE plugins, see: http://codex.wordpress.org/Must_Use_Plugins )

<?php
add_action('ws_plugin__s2member_after_configure_user_registration', 'my_registration_function');
function my_registration_function($vars = array())
{
	if($vars&#91;'processed'&#93; === 'yes')
		{
			$user = $vars&#91;'user'&#93;; // A WP_User object instance.
			update_user_option($user->ID, 'my_value', $_POST['my_value']);
		}
}

If you only want to run this for paying customers, you can change the hook in the code above, to:
ws_plugin__s2member_during_configure_user_registration_front_side_paid

Posted: Wednesday Jun 27th, 2012 at 5:10 pm #17698
Staff Member
Thanks for your patience.
I’ve just taken a quick look at your installation.

I was unable to log in via FTP, so I could not run a full set of diagnostics. If you’d like me to do that, please submit a new Dashboard login and FTP access through our private contact form here:
s2Member® » Private Contact Form

When I attempted to log in via FTP and/or SFTP, the connection just kept hanging.

Here are some things that come to mind:

Does your server accurately report the current visitor’s IP address through $_SERVER['REMOTE_ADDR']?
Run a test script, with the following code. You also need to make sure that your server has the OpenSSL extension installed. This test script should help you with that.

<?php
// Check for OpenSSL support.
if(function_exists('openssl_sign'))
 echo 'openssl_sign() exists.';
 
 // Check this environment variable.
echo $_SERVER&#91;'REMOTE_ADDR'&#93;; // Is this you?
?>
Posted: Wednesday Jun 27th, 2012 at 4:46 pm #17696
Staff Member

Thanks for the heads up on this request for support.

The core WordPress framework hook: set_user_role.
Anytime a Role changes, that hook will fire; and you’ll have the user’s ID.

/wp-includes/capabilities.php

function set_role( $role ) {
	foreach ( (array) $this->roles as $oldrole )
		unset( $this->caps[$oldrole] );

	if ( 1 == count( $this->roles ) && $role == $this->roles[0] )
		return;

	if ( !empty( $role ) ) {
		$this->caps[$role] = true;
		$this->roles = array( $role => true );
	} else {
		$this->roles = false;
	}
	update_user_meta( $this->ID, $this->cap_key, $this->caps );
	$this->get_role_caps();
	$this->update_user_level_from_caps();
	do_action( 'set_user_role', $this->ID, $role );
}
Posted: Wednesday Jun 27th, 2012 at 4:41 pm #17695
Staff Member

Thanks for the heads up on this request for support.

Yes, that’s about it. The central IPN handler works as a proxy for other installations of s2Member that you run, across multiple sites/domains perhaps. So you setup the central IPN handler in any location you prefer. Then, set the default IPN URL in your PayPal account, to that central location; you’re good to go.

Of course, it’s not always just that simple :-) For example, in the case of PayPal Standard Buttons, the IPN URL is set on a per-Button basis, so the concept of a central IPN handler will only work if you are running PayPal Pro; where all of your sites are using s2Member Pro Forms; instead of standard PayPal Buttons.

Then again, if you’re running PayPal Standard Buttons, you really don’t need a central IPN handler. Simply because the IPN URL is, and can be, set on a per-Button basis. Thus, there’s no need to have a central IPN handler.

There are additional/detailed instructions on how to set this up, located at the top of the central IPN example file; available in your account here at s2Member.com. Download the /s2m-pro-extras.zip file, and inside the ZIP you’ll find the example PHP script.

Posted: Wednesday Jun 27th, 2012 at 4:34 pm #17694
Staff Member

Hi there. Thanks for your compliments.

It’s called “Happy Moments”. See: http://www.soundloopstudio.com/music-loops-corporate.html

Posted: Wednesday Jun 27th, 2012 at 3:20 pm #17683
Staff Member

Thanks for the heads up on this request for support.

[ERROR] Mcrypt/Encryption Extension
[ERROR] Multibyte String Extension

Yes, what you’ve described here could certainly be attributed to these missing PHP extensions. While I do NOT recommend it, s2Member can live without the Mcrypt extension. In that case, your site is less secure however; so it will be good to install this, so it’s possible for s2Member to use a better form of encryption.

The Multibyte string extension is most likely the cause of the problems you’re reporting. If this extension is missing, s2Member may be unable to convert character encodings. So if some customers have special characters in form input, or they occur elsewhere in post-processing of a transaction, it can lead to seemingly random issues like the ones you’ve described. ModSecurity has also been known to cause some problems like this. See: Knowledge Base » Mod Security, Random 503/403 Errors

Most hosting companies have both of these extensions ready to go. So a quick email to them should resolve the issue in many cases. Just let them know which ones are missing, and they’ll have them turned on for you.

Viewing 25 replies - 1,326 through 1,350 (of 1,909 total)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

Contacting s2Member: Please use our Support Center for bug reports, pre-sale questions & technical assistance.