Thanks for your inquiry. ~ We appreciate your patience :-)
The problem is, if someone over time adds all the courses to their account, that is going to be a lot of subscriptions being processed, when it would be easier to have it update into one manageable monthly payment.
Exactly. s2Member® supports only one active subscription at a time. In other words, each customer can be associated with one Paid Subscr. ID in the Dashboard. Adding additional one-time purchases on top of that is no sweat for s2Member®, but adding additional monthly recurring fees (where you have more than one Recurring Billing Profile associated with each customer), is not something that s2Member® supports at this time.
What I think is easier, is to change the amount of money that you’re billing the customer each billing cycle (i.e. change the existing subscription associated with their account, by changing the amount that’s being charged each month). With s2Member® Pro, this is handled through Billing Modification Forms. A customer modifies their Recurring Billing Profile with you, by upgrading to a higher Membership Level and/or by purchasing additional Custom Capabilities.
So for instance, let’s say a customer registers initially for Membership Level #1 at $19/month.
Now they want access to course A and course B, and that costs an additional $5/month (for each course).
So you introduce a Billing Modification Form that simply adds the extra Custom Capabilities to their Membership with you, and you charge the adjusted rate of $29/month for this entire package. s2Member® Pro Billing Modification Forms will terminate the existing Recurring Billing Profile, and it will create a new one to takes it’s place (i.e. a new Recurring Billing Profile that matches the new package they have).
Of course, it’s not always just that simple, because often times, there are conditions and dynamics involved with calculating prices during checkout. Some site owners deal with this by implementing their s2Member Pro Forms with PHP code (i.e. in a custom WordPress template file).
For instance, something like this; where you calculate prices/terms dynamically in custom ways — in your own code; and then pass that information along to your s2Member® Pro Form Shortcode.
See also: Dashboard -› s2Member® -› PayPal® Pro Forms -› Billing Modification Forms
<?php
$base_monthly_rate = 19.00;
$amount_per_course = 5.00;
$new_course_ccaps = array('course_a', 'course_b');
$user = wp_get_current_user();
$existing_level = c_ws_plugin__s2member_user_access::user_access_level($user);
$existing_ccaps = c_ws_plugin__s2member_user_access::user_access_ccaps($user);
$caps_in_new_package = array_merge($existing_ccaps, $new_course_ccaps);
$level = $existing_level;
$ccaps = implode(',', $caps_in_new_package);
$ra = $base_monthly_rate + ($amount_per_course * count($caps_in_new_package));
echo do_shortcode('[s2Member-PayPal-Pro-Form ... level="'.$level.'" ra="'.$ra.'" ccaps="'.$ccaps.'" ... /]');
?>
In this example, the only problem is this…
The customer is going to pay you $29 now (during they’re upgrade), because those are the terms of the new Custom Capability package they are purchasing. However, in many cases the customer will have already paid you $19 for the current month they are in, so the very first charge in this new Recurring Profile, should be less that amount. This is accomplished with the ta="" tp="" tt=""
Shortcode Attributes.
See: Dashboard -› s2Member® -› PayPal® Pro Forms -› Shortcode Attributes (Explained)
This considers what I just mentioned, and uses ta="" tp="" tt=""
.
<?php
$base_monthly_rate = 19.00;
$amount_per_course = 5.00;
$new_course_ccaps = array('course_a', 'course_b');
$user = wp_get_current_user();
$existing_level = c_ws_plugin__s2member_user_access::user_access_level($user);
$existing_ccaps = c_ws_plugin__s2member_user_access::user_access_ccaps($user);
$caps_in_new_package = array_merge($existing_ccaps, $new_course_ccaps);
$level = $existing_level;
$ccaps = implode(',', $caps_in_new_package);
$ra = $base_monthly_rate + ($amount_per_course * count($caps_in_new_package));
$ta = $ra - $base_monthly_rate; // Discounted price for the first month in this new plan.
$tp = 1; $tt = 'M'; // 1 month at this discounted rate.
echo do_shortcode('[s2Member-PayPal-Pro-Form ... level="'.$level.'" ra="'.$ra.'" ccaps="'.$ccaps.'" ta="'.$ta.'" tp="'.$tp.'" tt="'.$tt.'"... /]');
?>