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,401 through 1,425 (of 1,909 total)
Author Replies
Author Replies
Posted: Thursday Jun 7th, 2012 at 7:55 pm #15862
Staff Member
Very welcome. I agree, the “wp_loaded” hook is better here.
~ Code sample updated to use “wp_loaded” hook instead.
Posted: Thursday Jun 7th, 2012 at 7:46 pm #15857
Staff Member

Hi Benny. Thanks for your patience.

I’ve just finished a preliminary review of your installation. I was unable to run all diagnostics, because the FTP access that we have on file from your last form submission is now outdated it appears.

While I ‘ve been unable to reproduce the issues depicted in your screenshots thus far, I was able to reproduce a strang issue on your installation, whereby direct download links are failing, and simply leading me to an “about:blank” page.

Given the seemingly random behavior you’ve described, and our inability to reproduce the full set of issues thus far, I have a suspicion that your hosting provider is running the mod_security extension, which might be triggering 403/503 errors randomly, which can produce a different set of problems, for each specific user, based on heuristic rule sets that look at things like cookie values, IP addresses, query strings, (and other data that changes from one user to another).

You can learn more about this possible issue here (including some possible solutions):
http://www.s2member.com/kb/mod-security-random-503-403-errors/

However, before we say “it’s gotta be mod_security”, let me first run full diagnostics on your installation. Please submit up-to-date FTP login credentials privately for me. See: s2Member® » Private Contact Form

Also, please add a comment when you submit the form, telling me who your hosting company is.

Posted: Thursday Jun 7th, 2012 at 6:59 pm #15854
Staff Member
Details received. Running diagnostics on this installation.
Posted: Thursday Jun 7th, 2012 at 6:52 pm #15853
Staff Member

Thanks for the heads up on this request for support.

~ I’m reviewing this thread now.
Posted: Thursday Jun 7th, 2012 at 6:50 pm #15852
Staff Member

Thanks for the heads up on this request for support.

~ I’m reviewing this thread now, and I’ll be with you shortly.
Posted: Thursday Jun 7th, 2012 at 6:46 pm #15851
Staff Member

Thanks for the heads up on this request for support.

I may have figured this out on my own, but I did it based on the assumption that the first file returned by get_user_field (“s2member_file_download_access_log”) will always be the oldest. Is that correct?

Yes, this is true. However, this is not by design, it’s only because of the order in which log entries enter this array. So while it’s fine to assume this, it wouldn’t hurt to scan the array, and sort these based on the “time” for each of them, just to ensure your own sanity, before your custom routine does something further :-)

My code assumes that the “time” value of that first file is the start of the “current period”. Using my example in the previous post, it then adds 7 days to find the end of the current period.

Not completely reliable, given the nature of this array. s2Member does not update this array in real-time, for every user. The array is only updated (with older entries moved into an archive), during the actual download of a file. Therefore, relying on this array (without any additional filtering first), could perhaps return inaccurate results at certain times, for certain users. Particularly those which have not downloaded anything recently.

It also assumes that the current period is a “rolling” 7 day period, where the first file downloaded rolls off the list after 7 days and then the next file’s initial download time is used to calculate the current period.

Files that were downloaded prior to the current period, roll off this list automatically. However, this ONLY occurs during the actual download of a file. Therefore, you will need to scan this array, and make calculations of your own, based on the “time” for each of the files listed, and also based on the configuration of the site, at a specific Level of membership, for the current user. I know… it get’s hairy.

Here is a possible solution for you, which considers all of these things…

<?php
function s2_download_period_from_to()
	{
		$seconds_in_one_day = 86400;
		$user_downloads = s2member_user_downloads();
	
		if($user_downloads&#91;'allowed'&#93;)
			{
				$time_current_period_began = strtotime('-'.$user_downloads&#91;'allowed_days'&#93;.' days');
				$time_current_period_ends = $time_current_period_began + ($user_downloads&#91;'allowed_days'&#93; * $seconds_in_one_day);
				
				return array('from' => $time_current_period_began, 'to' => $time_current_period_ends);
			}
		else return FALSE; // This user does NOT have access to files.
	}
?>

Reference article:

See s2Member® Codex regarding: s2member_user_downloads()

Posted: Thursday Jun 7th, 2012 at 6:21 pm #15849
Staff Member

Thanks for the heads up on this request for support.

Regarding the text “— Oops, you missed something: —”.

This text, like all front-end aspects of s2Member, can either be changed by translating s2Member in it’s entirety, into a different language, or on a one-off basis using the gettext_with_context filter built into WordPress®.

Translating s2Member’s POT file:

See: Pre Sale FAQs » Can s2Member® be translated into other languages?

Translating this particular message, without translating the entire plugin:

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

<?php
add_filter('gettext_with_context', 'my_translator', 10, 4);
function my_translator($translated, $original, $context, $domain)
	{
		if($domain === 's2member' && $context === 's2member-front')
			{
				if($original === '— Oops, you missed something: —')
					$translated = 'I want to say this...';
			}
		return $translated;
	}
?>
Regarding CSS styles…

s2Member applies only basic structural CSS. It does NOT make any attempt to set font sizes, families, etc. I think what you’re referring to are JavaScript alerts, which browsers do NOT style via CSS. The fonts used in a JavaScript alert message, are dictated by the browser that is being used.

See also: Pre Sale FAQs » How can I prevent s2Member® Pro from loading it’s default CSS?

  • This reply was modified 3 years, 11 months ago by  Jason (Lead Developer). Reason: Updating file name. Changed to s2-o.php
Posted: Thursday Jun 7th, 2012 at 5:32 pm #15845
Staff Member

Thanks for the heads up on this request for support.

Since the user is NOT logged in during the generation of the PayPal Button, it makes this very difficult to accomplish with any reliability, because the Button is generated with detection of the current User’s ID, and also with the IP address of the current user. So really, we need them to be logged into the site.

There is another way, which might help you accomplish this however.

My suggestion is to place a simple link in the email, which leads a customer to a dynamic redirection on the site.

In other words, instead of generating the button, and putting it into the email; generate a link which leads to a script that generates the button and redirects the user (all in one shot).

I posted an example of this for ClickBank, which should work just fine with a PayPal Button as well:
See: http://www.s2member.com/forums/topic/using-clickbank-and-paypal/#post-11438

You will NEED the user to be logged-in first though. So whatever you come up with, be sure to force the user to be logged in prior to generating the Shortcode. This can be accomplished by routing your customer through a login link, which includes a redirect_to value.

I’ll go ahead and write this up here as a quick example:

Create this directory and file:
/wp-content/mu-plugins/s2-hacks.php

<?php
add_action('wp_loaded', 'handle_dynamic_paypal_redirections');
function handle_dynamic_paypal_redirections()
	{
		if(!empty($_GET&#91;'paypal'&#93;)) // A url leading to this site, with: /?paypal=redirect
		{
			if(is_user_logged_in()) // Only generate Shortcode if customer is logged in.
				{
					$paypal_checkout = do_shortcode('&#91;&#91;s2Member-PayPal-Button ... output="url" /&#93;&#93;');
					// The Shortcode has been abbreviated here for clarity in this regard.
					// You will need to generate your own full Shortcode, and set output="url".
			
					// Redirect the potential customer now to PayPal.
					wp_redirect($paypal_checkout); exit;
				}
		}
	}
?>

With this MU plugin in place. Now create this link.
Here we force the customer to be logged in, before hitting our dynamic redirection handler.

http://yoursite.com/wp-login.php?redirect_to=http://yoursite.com/?paypal=redirect

The redirect_to value, really should be URL-encoded, so the link should actually come out like this:

http://yoursite.com/wp-login.php?redirect_to=http%3A%2F%2Fyoursite.com%2F%3Fpaypal%3Dredirect

You could shorten this link up a bit further, using something like tinyURL.

Click here to log in and upgrade your account: http://tinyurl.com/7nh7wyn

In Summary…

The customer gets an email with this link:
http://yoursite.com/wp-login.php?redirect_to=http://yoursite.com/?paypal=redirect
(or perhaps just: http://tinyurl.com/7nh7wyn, if you prefer that)

They are asked to log in.

After logging in, they are immediately redirected to:
http://yoursite.com/?paypal=redirect Which immediately redirects them again, over to PayPal, with the proper link, which considers their existing user status on your site. The existing account is upgraded, and the customer does NOT need to re-register after checkout.

  • This reply was modified 4 years, 7 months ago by  Jason (Lead Developer). Reason: Updated code sample to wp_loaded hook instead of init
Posted: Thursday Jun 7th, 2012 at 4:35 pm #15838
Staff Member

Thanks for the heads up on this request for support.

@ Sacha Greif

I believe the issue here, is related to PayPal’s IPN processor. Whenever PayPal processes a subscription, is associates each subscription with a URL which will be notified via the PayPal IPN service, whenever changes and/or payments are processed for that subscription.

Actually, PayPal offers two different ways to set this up.

# 1. You can have a single/central IPN URL, which is notified for all subscriptions, regardless of where they originated from (i.e. s2Member, or another site that you operate). The same IPN URL would be contacted for all of them.

This is how s2Member Pro integrates with PayPal Pro, via s2Member Pro Forms.
The PayPal Pro API does not make #2 possible, so a central IPN URL is used with s2Member Pro Forms.
Please configure: PayPal Account -> My Profile -> Instant Payment Notification Preferences


# 2. Or, you can have each transaction automatically submit an IPN URL, so it can handle transactions and/or subscriptions associated with a particular software installation, on a particular domain. This is the method that s2Member prefers (if at all possible), because it allows for multiple installations to be operated under a single PayPal account, and in harmony with any other software that you might be using.

This is how s2Member integrates with PayPal Standard Buttons.

As noted previously though, this is not possible with PayPal Pro.
With PayPal® Pro integration you absolutely MUST set an IPN URL inside your PayPal® account. PayPal® Pro integration does NOT allow the IPN location to be overridden on a per-transaction basis. If you’re using a single PayPal® Pro account for multiple cross-domain installations, and you need to receive IPN notifications for each of your domains; you’ll want to create a central IPN processing script that scans variables in each IPN response, forking itself out to each of your individual domains. In rare cases when this is necessary, you’ll find two variables in all IPN responses for s2Member. The originating domain name will always be included somewhere within, either: custom and/or rp_invoice_id; depending on the type of transaction. These variables can be used to test incoming IPNs, and fork to the proper installation. For your convenience, an example script has been provided inside: /s2m-pro-extras/paypal-central-ipn.php. You can download all Extras here: s2m-pro-extras.zip.

The issue that you’re having…

So the issue here, is that you have customers with subscriptions that were created by PayPal prior to you moving the site (i.e. you changed the originating domain name, and thus, you changed the IPN URL). PayPal is still sending IPN notifications to the original domain, which may not exist any longer, if you moved it.

As far as I know, there is no way to change the original IPN URL that was given to PayPal. This has been a known limitation for quite awhile now. To my knowledge, PayPal has still not made this possible yet.

Possible solutions for you…

Re-establish the original domain (and thus, the original IPN URL that was given to PayPal). Sometimes it is enough just to setup a forwarding script on the old domain, and have that forward IPNs to your new domain, so that s2Member receives them.

Or, you might contact PayPal and ask them to update the IPN URL for any old subscriptions, so that it points to your new s2Member installation, on the new domain that you’re using now. You may need to do some explaining for them, so they are aware that you simply changed the domain name.

Reference articles:

https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_admin_IPNSetup

Posted: Thursday Jun 7th, 2012 at 3:44 pm #15829
Staff Member

Hi there. Thanks for the heads up on this request for support.

@Sara Young

This TODO item was moved over into the development cycle for the next major release of s2Member. Since it requires some fundamental changes in the way s2Member communicates with payment gateways (i.e. in order to keep a standard and remain accurate), we’re addressing this in the next generation of s2Member, which is scheduled for a beta release this summer. It’s been in development for quite awhile now, and we’re hoping to release it into the wild as soon as possible.

Posted: Thursday Jun 7th, 2012 at 3:31 pm #15828
Staff Member
@Bob Mane
s2Member Profile updated with improved rank/icons.

but on to something possibly more useful? Is there any viability to actually using Apples HTTP Live Streaming instead of just disabling HTML5 and Download mode? (http://www.s2member.com/kb/hiding-the-address-of-protected-video-files/) I have been told (until JW updates) you would just have HTTP play in the native player on iOS. the only reason i mention it is becasue i see you are using some keys in mod-rewrite so thought it could somehow work there or elsewhere. yes, wowza can issue keys for HTTP but so can Zencoder

so you would use JW RTMPe for normal web and some detection to serve the alt iOS native player AES encrypted via HTTP

Right. I don’t see why not. While it’s not something that s2Member has built-in (i.e. s2Member does not perform any type of User-Agent detection), you could certainly apply some of this, and combine that with the code samples provided by s2Member, as they exist now.

For instance, you might use an RTMP stream for most cases, but make exceptions for iOS (perhaps lowering security just a bit), whereby you change the way the file is served, or from what source it is served from. I believe the Shortcodes and code samples provided by s2Member will make this possible for you (with a little customization on your part). Please let us know if you run into any issues, or have questions related to s2Member’s Shortcodes and/or API functionality.

Posted: Thursday Jun 7th, 2012 at 3:19 pm #15826
Staff Member

Thanks for the heads up on this thread.

s2Member Pro is not currently designed to sell tangible items that would be shipped to a customer (i.e. where a shipping address would be collected). However, you are correct… it IS possible to send these fields through the PayPal Pro API, if you like.

If problems persist, please be sure that you’ve included a SHIPTONAME:
(click screenshot to enlarge)

Regarding these files:

These files handle almost all transaction types.
1. paypal-checkout-in.inc.php (Handles most transactions)
2. paypal-checkout-rdp-in.inc.php (Real-time Direct Pay variation)
3. paypal-checkout-pf-in.inc.php (Payflow API variation)

You only need to edit paypal-checkout-rdp-in.inc.php, if you’ve configured s2Member’s Recurring Profile Behavior to “Real-Time Direct Pay”, under: Dashboard -› s2Member® -› PayPal® Options -› Account Details.

Conversely, you only need to edit paypal-checkout-in.inc.php, if you’ve configured s2Member’s Recurring Profile Behavior to “Consolidate w/ Recurring Profile”, under: Dashboard -› s2Member® -› PayPal® Options -› Account Details.

You only need to edit paypal-checkout-pf-in.inc.php if you’re running s2Member with a PayPal Payflow API integration, as configured here: Dashboard -› s2Member® -› PayPal® Options -› Payflow® Account Details.

4. paypal-sp-checkout-in.inc.php
This file handles all transactions for Specific Post/Page Access.
See: Dashboard -› s2Member® -› PayPal® Pro Forms -› Specific Post/Page (Buy Now) Forms

Posted: Thursday Jun 7th, 2012 at 2:14 pm #15817
Staff Member

Hi there. Thanks for the heads up on this request for support.

A Recurring Profile (i.e. for billing on the PayPal side), can be suspended manually, and this serves as your way to pause billing for a specific customer. On the s2Member side of things, nothing happens in this scenario, unless you make it happen manually. That is, if you suspend billing, the customer continues to have access, and all that stops is future billing for that access, until such time as the Recurring Profile on the PayPal side of things is placed back into a active status.

Other considerations…

A Recurring Profile that is in a “suspended” state, cannot therefore be cancelled by a customer. The PayPal Pro API does not allow this. So, if you have an s2Member Pro Cancellation Form being introduced to a customer whose Recurring Profile is in a suspended state, s2Member Pro will tell the customer that it’s not possible to cancel at this time, because their account is pending other changes, and they are asked to contact support should they need any clarification.

Max failed payments…

There is an additional scenario where the PayPal system itself will place a Recurring Profile into a suspended state automatically. This occurs whenever a customer’s payment fails over and over again. In this scenario, if the customer’s payment fails repeatedly, and PayPal suspends future billing automatically, s2Member will force an EOT (End Of Term), and access to the site will be denied. This is the only scenario (with respect to suspended profiles), where s2Member takes action automatically. You have some control over this, from your Dashboard. See: Dashboard -› s2Member® -› PayPal® Options -› Automatic EOT Behavior

You can also control the number of failed payments that you will allow. Defaults to a value of 2.
See: Dashboard -› s2Member® -› PayPal® Pro Forms -› Shortcode Attributes (Explained)
You’re looking for the rra="2" Shortcode attribute, which can be customized, if you like.

Posted: Thursday Jun 7th, 2012 at 1:49 pm #15816
Staff Member

Hi there. Thanks for the heads up on this request for support.

You are both correct. PayPal’s sandbox system is NOT capable of running test transactions through the sandbox, where the language being spoken, is that of the Payflow API. I find this to be extremely annoying :-)

While it seems that PayPal is making strides in their attempt to merge Payflow into other PayPal services, Payflow still feels more like a sub-division of the PayPal company. Most likely because Payflow I believe, was once owned by Verisign, and purchased by PayPal. It all makes for a VERY confusing developer experience in my opinion.

Anyway… it’s NOT possible (at this time), to run test transactions through the PayPal Sandbox, where those test transactions are speaking the Payflow language. The PayPal sandbox is not capable of this. It is possible however, to setup a Payflow trial account, running in test mode.

Instructions:

1. Setup a test/trial account here:
https://www.paypal.com/us/cgi-bin/?cmd=_payflow-get-started-outside

2. Configure s2Member to use the Payflow API Credentials from this test/trial account.

3. Put s2Member into Sandbox mode.

4. Run your test transactions.

Is this the same as running Sandbox test transactions. No, not exactly.
Is this the same as running a PayPal Pro account with Payflow edition. No, it’s not.
~ Unfortunately, it’s the only way I’ve found to run test transactions against Payflow.
Posted: Thursday Jun 7th, 2012 at 12:43 pm #15802
Staff Member

Hi Terry. Thanks for your patience.

3. once the admin gets the cash, they’ll mark the invisible fields I’ve created to indicate the payment, type of membership, etc,
4. admin will then change the person’s role to Level 1

Question: where do I trigger an automatic email to the new Level 1 member welcoming them to the site? They’ve already gotten the ‘here are your login details’ email, but I’m not sure how to create another email at the end of the process. ideally, it’ll be automatic when someone’s role changes to Level 2, 3, or 4.

So you’re collecting cash, and the process for upgrading a paid member, is one that’s completely manual. In cases where you’re handling the upgrade manually, you will also need to send an email manually, or perhaps create a custom plugin that does this for you.

Normally, upon receiving payment, s2Member would send a Signup Confirmation Email, with payment details, and some additional information, which you can customize from the Dashboard. However, when the process occurs manually, emails must also be sent manually I’m afraid.

This is a good point however, and we’ll certainly try to improve upon this in a future release.

Posted: Friday Jun 1st, 2012 at 2:47 pm #15193
Staff Member
This was left out of the latest maintenance release.
Very sorry. We’ll hit this next time.
Posted: Friday Jun 1st, 2012 at 11:52 am #15177
Staff Member
This has been corrected in the release of s2Member v120601.
Thanks again for reporting this!
Posted: Friday Jun 1st, 2012 at 11:48 am #15176
Staff Member

Thanks for bringing this request for support to my attention.

@Bran / Thanks for reporting this important issue.

Maintenance release of s2Member Pro v120601 addresses this concern.
http://www.s2member.com/changelog/#s2-changes-v120601

(s2Member Pro) Payflow® Daily Recurrence (Limitation). PayPal® Pro accounts with the Payflow® Edition API, are NOT capable of charging on a daily recurring basis. Previous releases of s2Member® Pro mistakenly documented this as being possible. Resolved in the release of s2Member Pro v120601.

PayPal® Pro accounts operating with the Payflow® Edition (and integrated with s2Member®), are only capable of charging recurring fees on the following schedules: weekly, bi-weekly, monthly, quarterly, or yearly. This is in large part, a limitation in the Payflow® API, which we hope will be resolved by PayPal® in a future version. Please feel free to contact PayPal® if you’d like to vote for this feature! This limitation does NOT affect existing PayPal® Pro accounts operating exclusively under the PayPal® Pro API (e.g. without Payflow®).

I am very sorry for any confusion this may have caused.
Please let us know if we can be of assistance in this matter.
Posted: Friday Jun 1st, 2012 at 9:57 am #15166
Staff Member

Investigation completed.

I found that your ClickBank® Button Shortcode, contains the following character:

The `+` Sign Is Causing A Problem
[s2Member-Pro-ClickBank-Button … desc=”… Power Rankings, + More)”

While s2Member® handles this character properly, it appears that ClickBank® has made some changes on their end, which are causing this character to be returned back to s2Member® (i.e. in the return response from ClickBank®), with the character interpreted as a [[space]], instead of as the URL-encoded %2B value.

Thanks for reporting this important issue. We’ve applied a patch to the development copy of s2Member Pro, so that + signs sent to ClickBank® are automatically transformed into the word “plus”.

Not ideal, but since the `+` character is getting corrupted on the ClickBank® side of things, we’ll have to prevent that character from being sent to ClickBank at all.

Your installation has been patched. This file was modified on your server:
/s2member-pro/includes/classes/gateways/clickbank/clickbank-button-in.inc.php

The next maintenance release of s2Member Pro will include this patch as well. In addition, we’re notifying ClickBank® of this issue, in hopes they’ll have it corrected on their end.

Suggestion (at least for now), please remove the `+` sign from your ClickBank® Button Shortcode, and perhaps re-word your description just a bit, to accommodate this bug. This is optional of course, because the patch file will now convert the `+` character into the word `plus`, but I suspect that you’ll want to have a say in this, so re-wording things a bit might be the way to go.

Please let us know if you continue to have trouble.

Posted: Friday Jun 1st, 2012 at 9:06 am #15158
Staff Member
Thanks for the heads up on this request for support.
~ This is being investigated now.
Posted: Friday Jun 1st, 2012 at 8:54 am #15157
Staff Member

We’re running diagnostics now, thanks for your patience. You should have a reply shortly.

Posted: Wednesday May 30th, 2012 at 10:46 am #14944
Staff Member

Thanks for the heads up on this request for support.

Your details were received, and I’m investigating this now.
I can tell you straight away, that this issue is specifically caused by a failure to parse this string returned by ClickBank:

‘cvendthru’ => ‘s2_p3=1+M&s2_p1=0+D&s2member_pro_clickbank_return=1&s2_subscr_id=s2-4fc090b4a7573&s2_custom=www.***********.com&_s2member_sig=1338020020-d19a2766c437dbbbc5ff00db8932ca67&s2_desc=Platinum+All+Access+Monthly+Membership+%28Every+Selection+-+NFL%2C+NBA%2C+MLB%2C+NCAAF%2C+NCAAB%2C+NHL%2C+Stat+Downloads%2C+Power+Rankings%2C+++More%29&s2_invoice=4&s2_customer_ip=74.103.217.90&

I can tell this is failing, because the following array in your log file is completely empty:

‘s2vars’ =>
array (
),
s2Member will fail to parse this string (intentionally), when it encounters an invalid checksum in the URL (i.e. to prevent fraudulent transactions and hacking attempts). I’m investigating this on your server now, to determine why this particular failure occurred, and that will shed light on the underlying issue.
Posted: Wednesday May 30th, 2012 at 10:32 am #14940
Staff Member

@Alissa Glenn

Thanks for the follow-ups here.

The HTTP test file that I installed for you, is rather easy to reproduce. Please ask FatCow to attempt the following test… Open a connection to port 80 (i.e. any HTTP URL), from a PHP script that resides on the server itself. That is, test the connection to port 80, from a PHP script that actually resides on the server.

The issue that I found in my tests, was NOT that port 80 was closed completely. Instead, it seems there is a problem when the server itself (i.e. via a PHP script), attempts to connect to itself via an HTTP connection.

Here is an example script that will reproduce the issue.

<?php
file_get_contents("http://".$_SERVER&#091;"HTTP_HOST"&#093;."/");
?>
failed to open stream: Connection timed out
Posted: Wednesday May 30th, 2012 at 10:18 am #14939
Staff Member

Thanks for the heads up on this request for support.

This thread was resumed via email. If there are further questions regarding the items that were addressed in the email, please feel free to continue this conversation here.

Open Registration
Login/Registration Design

Posted: Wednesday May 30th, 2012 at 9:57 am #14937
Staff Member

Hi there. Thanks for the heads up on this request for support.

Newer PayPal Pro accounts come with the Payflow Edition. Meaning, you will have both a PayPal Pro account, and also a Payflow API Username/Password. If you have a new PayPal Pro account, you should have the ability to generate your Payflow API Credentials, from your PayPal Profile page.

See: Your PayPal Account -> Profile -> API Access (or Request API Credentials) -> Payflow® API Access

In newer PayPal Pro accounts, the Payflow API is required to utilize PayPal’s Recurring Billing Service. In all other PayPal Pro accounts (i.e. older and/or existing PayPal Pro accounts), the Recurring Billing service is tied directly to the standardized PayPal Pro API, while in newer PayPal Pro accounts, it requires the Payflow API. I know, weird!

To simplify this as best we can, from our end of things…

With s2Member Pro Forms, you will ONLY need the Payflow API, if you have a PayPal Pro account sold to you by PayPal, under the Payflow edition … and even then, ONLY if you intend to charge customers on a Recurring basis, or implement something else that requires the use of PayPal’s Recurring Billing service, such as initial/trial periods.

To clarify further… when you generate an s2Member Pro Form, you will choose the type of billing that needs to occur. If you choose ANY of the items in the drop-down menu, which are marked “(Subscriptions)”, you will need PayPal’s Recurring Billing service. If your PayPal Pro account was sold to you by PayPal, under the Payflow edition, s2Member will need your Payflow API Credentials so it can speak with your edition of PayPal’s Recurring Billing service. This is only time s2Member Pro needs the Payflow API (i.e. to speak the Recurring Billing language that exists in newer PayPal Pro accounts, which are sold under the Payflow edition).

In Summary…

Here’s a checklist you might follow:
1. Make sure that you have a PayPal Pro account before attempting to integrate s2Member Pro Forms.
2. If you intend to use any of the billing types marked (“Subscriptions”), please contact PayPal to have the Recurring Billing service added to your account.
3. If your PayPal Pro account was sold to you by PayPal, under the Payflow edition, please make sure that you give s2Member your Payflow API Credentials. See: Your PayPal Account -> Profile -> API Access (or Request API Credentials) -> Payflow® API Access

Once your Payflow API Credentials are obtained, please enter them here.
s2Member -> PayPal Options -> Payflow Account Details

Other Notes…

PayPal’s current Sandbox does NOT allow test transactions through the Payflow API. That is, the PayPal Sandbox does NOT support test transactions implemented by the Payflow API, and therefore, you will need to run any test transactions in live mode, with low dollar amounts.

Coming Soon…

Work is still underway for the next major release of s2Member Pro, to help simplify all of this just a bit further, as best we can. Additional services offered by PayPal are currently being integrated with s2Member Pro, and further details will made available on our website as we work to catch up with the large list of PayPal’s latest changes/improvements.

Viewing 25 replies - 1,401 through 1,425 (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.