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,576 through 1,600 (of 1,909 total)
Author Replies
Author Replies
Posted: Tuesday Mar 13th, 2012 at 1:55 pm #8028
Staff Member

Sorry to beat this one to death, but what would be the feasibility of modifying the S2 Member setting in the user panel for Automatic EOT time once the initial annual charge has been made via PayPal? After 1 year, would the user still receive a recurring charge or would the charge happen based on the EOT setting in S2 Member?

The EOT Time in your Dashboard, only controls access to the site. Billing is handled by your payment gateway. s2Member configures the Recurring Profile for billing, according to your Pro Form Shortcode configuration, and then it hands all billing routines over to your payment gateway.

After that, s2Member will listen via IPN (Instant Payment Notification service) for any future payments that are processed, possible refunds, cancellations, chargebacks, and other related events. An EOT Time will be set automatically by s2Member whenever access to the site should be denied for one of many different reasons.

See Also: Dashboard -› s2Member® -› PayPal® Options -› Automatic EOT Behavior

Please let me know if problems persist :-) Thanks!

Posted: Tuesday Mar 13th, 2012 at 1:49 pm #8025
Staff Member

Thanks for your patience.

I’m trying to work through this a bit more. What would happen if I performed the following?

1) Set the trial offer to 13 months at the annual rate (let’s say $100),
2) Set the recurring offer to 1 year at the annual rate ($100.00)

Would the trial set up a recurring profile with Paypal based on 13 months at $100 ($1,300 total) or would it bill all 13 months at once (total charge of $100)?

Additionally, I need a bit of information on Promo Codes and how they interact with recurring billing. When I set a promo code and apply it to the regular amount, will the customer always renew at this rate? Would they still renew at this rate if I set the coupon code to expire before their renewal?

Would the trial set up a recurring profile with Paypal based on 13 months at $100 ($1,300 total) or would it bill all 13 months at once (total charge of $100)?

This should work nicely for you. PayPal will charge the customer all at once for the Initial/Trial period of 13 months, because this period does NOT recur under any circumstance. So to answer your question, the charge would be $100 for 13 months of access, then it would recur at the rate of $100/year.

Additionally, I need a bit of information on Promo Codes and how they interact with recurring billing. When I set a promo code and apply it to the regular amount, will the customer always renew at this rate? Would they still renew at this rate if I set the coupon code to expire before their renewal?

Yes, the customer will ALWAYS renew at that rate, even if you expire the coupon code. The coupon code expiration prevents it from being used to create any new recurring profiles, but it does not affect any existing billing profiles that were already created in conjunction with the coupon code in the past.

Posted: Tuesday Mar 13th, 2012 at 1:08 pm #8020
Staff Member

Thanks for the heads up on this thread.
~ I’m reviewing this now.

Posted: Tuesday Mar 13th, 2012 at 1:04 pm #8019
Staff Member

Hi Lee. Thanks for the follow-up.

But, let me get this straight. Are you saying that:

1) If a user signs up today for a 30 day membership and …
2) Cancels immediately afterward …
3) They will lose their subscription privileges as they should 30 days from now?

Yes, that is absolutely correct.

If so, I wish you had said so from the beginning without telling me that I needed to beg CCBill to turn on this cancellation thing. In my expectation, an EOT should be set 30 days out immediately when a cancellation occurs (that’s how it worked when we used PayPal). But if I’m understanding you correctly (and I’m not sure at this point), it sounds like CCBill will send something through DataLink closer to the time that they should lose their subscription, or on the exact day?

Yes, that is correct. I’m sorry for any confusion.

But if I’m understanding you correctly (and I’m not sure at this point), it sounds like CCBill will send something through DataLink closer to the time that they should lose their subscription, or on the exact day?

Yes, that is correct. I’m sorry for any confusion.

Posted: Tuesday Mar 13th, 2012 at 12:58 pm #8018
Staff Member

Hi Rayna. That link seems to be working properly from my end now. Upon clicking the link I’m redirected to your Membership Options Page, which is expected, since I’m not logged into your site.

If problems persist, please send us a Dashboard/FTP login and we’ll take a quick look for you.
Please use: s2Member® » Private Contact Form

Posted: Tuesday Mar 13th, 2012 at 12:54 pm #8017
Staff Member

Hi Terri. Thanks for your inquiry.

s2Member is designed for end-users of a site, and not for Users/Members that actually gain access to your Dashboard in some way. This could certainly be accomplished, using s2Member as a framework on which to build such a site, but it’s not something that s2Member provides by default. Here are some links that might help in your work to integrate this.

See: http://codex.wordpress.org/Roles_and_Capabilities
See: http://codex.wordpress.org/Function_Reference/current_user_can
See: http://wordpress.org/extend/plugins/user-role-editor/

Regarding your specific request here to block and/or grant access to certain admin panels. This can be accomplished through custom coding, where the permissions required to view certain admin panels is dictated by whether a specific User has the Capability required. The required Capability is determined whenever WordPress and/or s2Member adds the menu page into the WordPress core. Your developer could begin their work by searching through WordPress and s2Member’s source code, for calls to these WordPress functions.
add_menu_page() or add_submenu_page()

By default, all s2Member menu panels require a site administrator with the create_users Capability. If you need to change that, you would need to modify code inside this s2Member source file: /s2member/includes/classes/menu-pages.inc.php starting at this line (see source file here).

Posted: Tuesday Mar 13th, 2012 at 12:42 pm #8013
Staff Member

Hi Trina. Thanks for your inquiry.

If you log into your Dashboard, and go to your list of installed plugins, you should find the s2Member Framework in that list. Alongside the s2Member Framework, there should be a bold note there regarding your current installed version of s2Member Pro as well. Is that not present either?

If problems persist, please submit a Dashboard login for us here. We’ll install it for you :-)
s2Member® » Private Contact Form

See Also: s2Member® » Pro » Install/Upgrade Instructions

Posted: Tuesday Mar 13th, 2012 at 12:39 pm #8012
Staff Member

Thanks for your purchase Kim!

Posted: Tuesday Mar 13th, 2012 at 12:38 pm #8011
Staff Member

Yes, that is something we’re working on :-)

Posted: Tuesday Mar 13th, 2012 at 12:29 pm #8010
Staff Member

Hi there. Thanks for reporting this important issue.

The error you reported:

Max failed logins. Please wait 30 minutes and try again.

When someone attempts to log into their account, and that request fails (i.e. wrong Username/Password combo); s2Member will record this failed attempt. If too many failed attempts occur within a short period of time, s2Member will start displaying the error message you reported, but ONLY to the User that caused the error.

This is known as Brute Force IP/Login Restrictions.

The options for this can be configured from your Dashboard here:
Dashboard -› s2Member® -› Restriction Options -› Brute Force IP/Login Restrictions
See Also: Knowledge Base » s2Member® Brute Force IP/Login Restrictions

If you’re seeing this error when you should NOT (i.e. something weird is going on), I would start looking at any plugins and/or server extensions that deal with caching. Is it possible that another User of your site caused this error, but now it’s been cached by some custom extension, so everyone sees it now?

Posted: Tuesday Mar 13th, 2012 at 12:18 pm #8009
Staff Member

Hi there. Thanks for your inquiry.

So, my question is this: Can I use the s2member pro forms using my paypal WPP account but have recurrent billing set up on my payflow pro account? After talking with a paypal rep, there is a difference between subscriptions and recurring billing. I do not want my site visitors to have a paypal account to make a payment and set recurring billing on their card.

No, I’m sorry, that won’t work. There is a difference in the way each of these APIs communicate. s2Member Pro is designed to communicate with the Website Payments Pro API. So you’ll need a PayPal Website Payments Pro account, and you’ll need Recurring Billing added to your Website Payments Pro account. Payflow Pro is something else entirely. s2Member does not speak the Payflow Pro language.

See Also: Video » By PayPal®, Service Introductions (Highly Recommended)
See Also: PayPal Pro -> Recurring Billing

Posted: Tuesday Mar 13th, 2012 at 12:04 pm #8007
Staff Member

Hi there. Thanks for your inquiry.

Well, this is getting into some custom coding, so not really within our Support Policy, sorry.
See Also: s2Member® » Support Policy » Fine Lines

General Options -> Registration/Profile Fields & Options
I can set editability of this field to “No (uneditable and totally invisible during & after registration)”. But I could still display it on the client’s “Login welcome page” using the corresponding shortcode.

Yes, that sounds like it should work nicely for you.
See Also: these API docs on the get_user_field() function, which could be used in this scenario.

do I need to use a cURL based or xml-rpc based approach to this

The example that I gave in that KB article, would be considered a RESTful web service API, and I’d recommend cURL or just use file_get_contents() that comes with all installations of PHP.

Posted: Tuesday Mar 13th, 2012 at 11:31 am #8002
Staff Member

On a Multisite Network installation, you will choose either a sub-directory style configuration, or a sub-domain configuration. In other words, each of your Child Blogs are either in a virtual sub-directory, like http://www.domain.com/virtual-sub-directory/, or in a sub-domain like: mysite.domain.com.

In either case, your File Download Links need to contain that information. For instance, this is correct:

http://www.the-tma.org/oilandenergy/wp-content/plugins/s2member-files/s2member-file-inline/Cara-Bartek_1.flv

If that link is not working for you, please confirm the following:

Did you configure this instance of the s2Member plugin? Each Child Blog runs it’s own instance of WordPress and it’s own instance of s2Member. Each instance needs to be configured. It appears from your link that you’ve NOT yet configured any Basic Download Restrictions for s2Member on this particular Child Blog?

Posted: Tuesday Mar 13th, 2012 at 11:20 am #8000
Staff Member

Thanks for the heads up on this thread.

@ Lee Keels

If CCBill pulls the expire status, then why are my cancelled accounts not getting EOTs? According to CCBill, an expire is set when a customer cancels.

Well, it’s not ccBill that pulls the EXPIRE status. It’s s2Member that pulls the EXPIRE status *from* ccBill. This works very well, and as ccBill mentioned, an EXPIRE status should always occur eventually (even after a cancellation has taken place) at the correct point in time.

s2Member listens to all of these events, and it will respond appropriately for you. However, it’s ccBill’s job to notify s2Member about these events, so that a response is triggered by your website.

why are my cancelled accounts not getting EOTs?

It’s important to understand that a “cancellation” does not always warrant an immediate EOT.

Taken from the documentation in your Dashboard:
s2Member will not process an EOT ( End Of Term ) until the User has completely used up the time they paid for. In other words, if a User signs up for a monthly Subscription on Jan 1st, and then cancels their Subscription on Jan 15th; technically, they should still be allowed to access the site for another 15 days, and then on Feb 1st, the time they paid for has completely elapsed. At that time, s2Member will remove their Membership privileges; by either demoting them to a Free Subscriber, or deleting their account from the system ( based on your configuration ). s2Member also calculates one extra day ( 24 hours ) into its equation, just to make sure access is not removed sooner than a Customer might expect.

I’ve inspected your log files, and I see no details coming from ccBill with an EXPIRE status yet. So that’s why s2Member has not terminated access for those accounts. ccBill has not EXPIRED any of your customers yet, according to the ccBill DataLink service.

Understanding Why

What was cancelled exactly? (i.e. what did the customer originally sign up for?). Does your customer still have time left, which they had already paid you for prior to cancelling?

Was it an actual “cancellation”? Who processed the cancellation, ccBill? Or you as the site owner?

Posted: Saturday Mar 10th, 2012 at 6:47 am #7827
Staff Member

Thanks for the follow-up Lee. I appreciate it.

Yes, I can imagine. s2Member does pull the EXPIRE status already. You should have a log file indicating s2Member’s activity in this regard, inside /wp-content/plugins/s2member-logs/ccbill-dl.log

Posted: Friday Mar 9th, 2012 at 5:36 pm #7799
Staff Member

You’re VERY welcome.
FYI: CloudFlare wrote back. They’ll release an update shortly.

Posted: Friday Mar 9th, 2012 at 5:22 pm #7794
Staff Member

Feature request accepted. Thank you!

Posted: Friday Mar 9th, 2012 at 3:26 pm #7743
Staff Member

Investigation completed. Thanks for your patience.

Upon further review, I find that your WordPress installation is running the CloudFlare plugin. This plugin creates a conflict with other plugins that attempt to read the value of $_SERVER["REMOTE_ADDR"] before its routine is processed (which can sometimes happen in early init action Hook routines).

I’ve corrected this on your site by modifying this file:
/wp-content/plugins/cloudflare/cloudflare.php at line #63

Find: add_action('init', 'cloudflare_init');
Change to: add_action('init', 'cloudflare_init', 1);

I’ve also notified the CloudFlare team about this issue.

Email To CloudFlare
Hi there. I’m a WordPress plugin developer for s2Member®. We have several clients reporting conflicts with CloudFlare for WordPress. Upon investigation of these issues, we find that your plugin rewrites the $_SERVER[“REMOTE_ADDR”] value, and understandably so. However, this rewrite needs to occur MUCH earlier in the Hook priorities list, so that other plugins attempting to read the value of $_SERVER[“REMOTE_ADDR”] on the init action Hook, get the *right* value.

Suggested modification:
cloudflare.php at line #63
Find: add_action(‘init’, ‘cloudflare_init’);
Change to: add_action(‘init’, ‘cloudflare_init’, 1);

Posted: Friday Mar 9th, 2012 at 2:04 pm #7738
Staff Member

@Mark R.
Investigation completed. Thanks for your patience.

I found that your installation of PHP was running in SAFE MODE, which has some side effects in WordPress, and triggers an invalid internal redirection due to a bug that exists in the WordPress WP_Http class. I’ll save you the rest of the boring details related to this minor WordPress bug.

Long story short, we’ve found a way to work around this issue in the release of s2Member v120309, by forcing a WP_Http redirection value of 0 during Amazon S3/CloudFront configuration. This allows s2Member’s auto configuration routines to also succeed in PHP installations running in SAFE MODE.

Your test WordPress installation has now been fully configured with Amazon S3/CloudFront. If you have other installations that you’d like to integrate, please make sure that you upgrade to s2Member v120309 first, or disable SAFE MODE in your /php.ini file. See Also: http://php.net/manual/en/features.safe-mode.php

Posted: Friday Mar 9th, 2012 at 11:48 am #7734
Staff Member

FYI: Ratings widgets now work as expected. Some of you reported this recently.

We’ve moved into using ONLY User Ratings here in the forum. A bug that existed previously was causing some rating widgets not to display when duplicated into multiple replies. Now works as expected.

Posted: Friday Mar 9th, 2012 at 11:38 am #7733
Staff Member

Email received. Thank you.

Posted: Friday Mar 9th, 2012 at 8:52 am #7726
Staff Member

Gotchya. Will do. Thanks.

Posted: Friday Mar 9th, 2012 at 8:02 am #7721
Staff Member

This was made possible in the release of s2Member v120308.
s2Member® Unified Changelog » v120308

Posted: Friday Mar 9th, 2012 at 8:01 am #7720
Staff Member

Hi Mike. Thanks for the follow-up.

Yes, that’s correct. I’m sorry, but we don’t have any immediate plans to support administrative permissions with s2Member. Our focus with s2Member and s2Member Pro is on User accounts only.

s2Member is designed for end-users of a site, and not for Users/Members that actually gain access to your Dashboard in some way. This could certainly be accomplished, using s2Member as a framework on which to build such a site, but it’s not something that s2Member provides by default. Here are some links that might help in your work to integrate this.

See: http://codex.wordpress.org/Roles_and_Capabilities
See: http://codex.wordpress.org/Function_Reference/current_user_can
See: http://wordpress.org/extend/plugins/user-role-editor/

Posted: Friday Mar 9th, 2012 at 7:17 am #7717
Staff Member

Investigation completed. Thanks for your patience.

Could this have something to do with leading zeroes in the Subscription ID? For example, the email that I just received shows a Subscription ID of 31206620100000XXXX, but in the user list on my site, the field has a leading zero, making the ID 031206620100000XXXX (the last four digits do match, none are dropped).

No, I don’t believe that’s an issue. It’s not s2Member that’s adding the leading 0, it’s ccBill doing this. It’s related to the sub-account prefix they use in communication with IPN and DataLink services.

I literally just had a cancellation 2 minutes ago. No EOT was applied to their account.

First off, a “cancellation” by a customer, which cancels any future payments, does NOT always warrant an immediate EOT on the s2Member side of things (they might still have time left, which they’ve already paid for). Also, with ccBill, the DataLink service connection is only made once per day. So any rebills/refunds/chargebacks/expirations that occur, will only be processed once each day, whenever s2Member pulls all of these events at once from ccBill in it’s scheduled routine, via the s2Member Auto EOT System.
See Also: Dashboard -› s2Member® -› ccBill® Options -› Automatic EOT Behavior

However, in this test case — we actually have a two part problem.

1. By default, s2Member’s integration with the ccBill DataLink service handles ccBill expirations (i.e. EOTs that occur as a result of a Subscription expiring naturally, for one of many different reasons). s2Member also handles refunds, chargebacks, and rebill payments that occur on the ccBill side. However, s2Member does NOT handle customer “cancellations” by default, because ccBill does NOT enable this functionality until each merchant (i.e. YOU) request this to be enabled on your ccBill account, and ccBill approves your request to do so.

Please note this screenshot.
Taken from the ccBill DataLink documentation.
http://www.ccbill.com/cs/manuals/CCBill_Data_Link_Extract_Users_Guide.pdf

2. Once you receive approval from ccBill, you will need to follow these instructions. This is a required step, telling s2Member that your ccBill account has been empowered with the ability to pull cancellation data from the DataLink Service Suite at ccBill.

I’m making a note of this now, so that in future releases of s2Member Pro, this will be included in the ccBill configuration panel. That way others won’t need to hunt this down like you did.

Please 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_filter("ws_plugin__s2member_pro_ccbill_datalink_pulls_cancellations", "__return_true"); ?>

* Note. Do NOT enable this until ccBill has approved your request. Adding this before your request is approved, will result in errors being returned by the DataLink API, and s2Member would be unable to pull *any* events.

Why does ccBill require approval for DataLink cancellations?
That’s a question best answered by ccBill. However, I suspect it’s because a software application like s2Member, needs to be aware that a cancellation does NOT always warrant an immediate EOT (termination). In many cases, the customer will have already paid for X number of days/weeks/months/years.

The cancellation itself does not always warrant a immediate termination. s2Member is aware of this, and it will handle things appropriately. If you are questioned about the integrity of your application, please let ccBill know that your application is aware of this concern.

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