Community Support Forums — WordPress® ( Users Helping Users ) — 2011-12-20T09:52:45-05:00 http://www.primothemes.com/forums/feed.php?f=40&t=13336 2011-12-20T09:52:45-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=58103#p58103 <![CDATA[s2Member v111220 / Source Code: s2member-p...]]>
s2Member v111220
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: December 20, 2011, 9:52 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — December 20th, 2011, 9:52 am


]]>
2011-12-07T01:06:09-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=55785#p55785 <![CDATA[s2Member v111206 / Source Code: s2member-p...]]>
s2Member v111206
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: December 7, 2011, 1:06 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — December 7th, 2011, 1:06 am


]]>
2011-11-05T19:28:35-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=52157#p52157 <![CDATA[s2Member v111105 / Source Code: s2member-p...]]>
s2Member v111105
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: November 5, 2011, 8:28 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — November 5th, 2011, 7:28 pm


]]>
2011-10-29T20:38:26-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=50253#p50253 <![CDATA[s2Member v111029 / Source Code: s2member-p...]]>
s2Member v111029
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: October 29, 2011, 9:38 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — October 29th, 2011, 8:38 pm


]]>
2011-10-17T15:42:58-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=48049#p48049 <![CDATA[s2Member v111017 / Source Code: s2member-p...]]>
s2Member v111017
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: October 17, 2011, 1:42 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — October 17th, 2011, 3:42 pm


]]>
2011-10-11T14:38:33-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=46449#p46449 <![CDATA[s2Member v111011 / Source Code: s2member-p...]]>
s2Member v111011
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: October 11, 2011, 12:38 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — October 11th, 2011, 2:38 pm


]]>
2011-10-03T15:51:07-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=44578#p44578 <![CDATA[s2Member v111003 / Source Code: s2member-p...]]>
s2Member v111003
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: October 3, 2011, 1:51 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — October 3rd, 2011, 3:51 pm


]]>
2011-10-03T03:45:03-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=43285#p43285 <![CDATA[s2Member v111002 / Source Code: s2member-p...]]>
s2Member v111002
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: October 3, 2011, 1:45 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — October 3rd, 2011, 3:45 am


]]>
2011-09-27T05:29:18-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=41527#p41527 <![CDATA[s2Member v110927 / Source Code: s2member-p...]]>
s2Member v110927
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: September 27, 2011, 3:29 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — September 27th, 2011, 5:29 am


]]>
2011-09-26T21:05:48-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=40283#p40283 <![CDATA[s2Member v110926 / Source Code: s2member-p...]]>
s2Member v110926
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: September 26, 2011, 7:06 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — September 26th, 2011, 9:05 pm


]]>
2011-09-17T17:05:10-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=38427#p38427 <![CDATA[s2Member v110915 / Source Code: s2member-p...]]>
s2Member v110915
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: September 17, 2011, 3:05 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — September 17th, 2011, 5:05 pm


]]>
2011-09-14T01:30:13-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=37005#p37005 <![CDATA[s2Member v110913 / Source Code: s2member-p...]]>
s2Member v110913
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: September 13, 2011, 11:30 pm

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — September 14th, 2011, 1:30 am


]]>
2011-09-13T12:05:19-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=35733#p35733 <![CDATA[s2Member v110912 / Source Code: s2member-p...]]>
s2Member v110912
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: September 13, 2011, 10:05 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — September 13th, 2011, 12:05 pm


]]>
2011-08-15T15:19:14-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=31841#p31841 <![CDATA[s2Member v110815 / Source Code: s2member-p...]]>
s2Member v110815
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: August 15, 2011, 4:19 pm

Open for public discussion.
(!-- s-words :: --)Source Code Documentation Packages ( Overview ) Classes Deprecated Todo Index Source Code jQuery(window).load(function(){ if(typeof location.hash === 'string' && location.hash.match(/^#/)) jQuery('olli'+location.hash).addClass('hilite'); }); jQuery(window).bind('hashchange', function(){ if(typeof location.hash === 'string' && location.hash.match(/^#/)) jQuery('olli').removeClass('hilite'); jQuery('olli'+location.hash).addClass('hilite'); }); [ full view ]s2member-pro\includes\menu-pages\paypal-forms.inc.php ?php /** * Menu page for s2Member Pro ( PayPal® Forms page ). * * Copyright: © 2009-2011 * {@link http://www.websharks-inc.com/ WebSharks, Inc.} * ( coded in the USA ) * * This WordPress® plugin ( s2Member Pro ) is comprised of two parts: * * o (1) Its PHP code is licensed under the GPL license, as is WordPress®. * You should have received a copy of the GNU General Public License, * along with this software. In the main directory, see: /licensing/ * If not, see: {@link http://www.gnu.org/licenses/}. * * o (2) All other parts of ( s2Member Pro ); including, but not limited to: * the CSS code, some JavaScript code, images, and design; * are licensed according to the license purchased. * See: {@link http://www.s2member.com/prices/} * * Unless you have our prior written consent, you must NOT directly or indirectly license, * sub-license, sell, resell, or provide for free; part (2) of the s2Member Pro Module; * or make an offer to do any of these things. All of these things are strictly * prohibited with part (2) of the s2Member Pro Module. * * Your purchase of s2Member Pro includes free lifetime upgrades via s2Member.com * ( i.e. new features, bug fixes, updates, improvements ); along with full access * to our video tutorial library: {@link http://www.s2member.com/videos/} * * @package s2Member\Menu_Pages * @since 1.5 */ if ( realpath ( __FILE__ ) === realpath ( $_SERVER [ "SCRIPT_FILENAME" ] ) ) exit ( "Do not access this file directly." ) ; /**/ if ( ! class_exists ( "c_ws_plugin__s2member_pro_menu_page_paypal_forms" ) ) { /** * Menu page for s2Member Pro ( PayPal® Forms page ). * * @package s2Member\Menu_Pages * @since 110531 */ class c_ws_plugin__s2member_pro_menu_page_paypal_forms { public function __construct ( ) { echo 'div class="wrap ws-menu-page"' . "\n" ; /**/ echo 'div id="icon-plugins" class="icon32"br //div' . "\n" ; echo 'h2s2Member® Pro / PayPal® Pro Forms/h2' . "\n" ; /**/ echo 'table class="ws-menu-page-table"' . "\n" ; echo 'tbody class="ws-menu-page-table-tbody"' . "\n" ; echo 'tr class="ws-menu-page-table-tr"' . "\n" ; echo 'td class="ws-menu-page-table-l"' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="Quick-Start Guide For PayPal® Pro"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-forms-guide-section"' . "\n" ; echo 'img src="' . esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "dir_url" ] ) . '/images/large-icon.png" title="s2Member ( a Membership management system for WordPress® )" alt="" style="float:right; margin:0 0 0 25px; border:0;" /' . "\n" ; echo 'h3Quick-Start Guide For PayPal® Pro Integration/h3' . "\n" ; echo 'pThe s2Member Pro Module makes it possible for s2Member to use PayPal® Pro Forms ( instead of standard PayPal® Buttons ). PayPal® Pro Forms integrate seamlessly with WordPress® Shortcodes. This allows you to keep Customers on your site at all times, and it consolidates the Checkout / Registration steps into a single form that you can dress up just the way you like. If you would like to take advantage of PayPal® Pro integration, please supply your PayPal® API Username, Password, and Signature. See codes2Member - PayPal® Options/code./p' . "\n" ; echo 'pemstrong*PayPal® Pro Integration*/strong You will need a a href="https://www.paypal.com/us/mrb/pal=KMEJ5UCMUQVAW" target="_blank" rel="external"PayPal® Business Account, w/Pro Service/a. PayPal® Pro accounts require a formal application, along with a small monthly fee. Once you have a PayPal® Pro account, you\'ll need access to your a href="https://cms.paypal.com/us/cgi-bin/?&cmd=_render-content&content_ID=developer/e_howto_api_NVPAPIBasics#id084E30I30RO" target="_blank" rel="external"PayPal® API Credentials/a. Log into your PayPal® Pro account, and navigate to codeProfile - Request API Credentials/code. You\'ll choose ( PayPal® API ), and then choose ( Create Your Own )./em/p' . "\n" ; echo 'pemstrong*Recurring Billing*/strong If you plan to use any of the ( `Subscription` ) options in the Form Generators below, you will ALSO need a href="https://www.paypal.com/cgi-bin/webscr?cmd=xpt/Marketing/general/RecurringPaymentFAQs-outside" target="_blank" rel="external"Recurring Billing/a enabled for your PayPal® Pro account. PayPal\'s Recurring Billing service for Pro accounts is strongrequired/strong for all types of ( `Subscriptions` ), whether you intend for them to be recurring or not. However, it is NOT required for ( `Buy Now` ) functionality. The drop-down menus, in the sections below, have been marked ( `Subscription` ) and ( `Buy Now` ) just for this reason. This way you can see which options will require the use of PayPal\'s Recurring Billing service. PayPal® will charge you a small monthly fee for their Recurring Billing service; which is an add-on for PayPal® Pro accounts./em/p' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'pemstrong*Secure Server*/strong In order to comply with PayPal® and PCI Compliance policies, as set forth by major credit card companies; you will need to host all of your PayPal® Pro Forms on an SSL enabled site. Please check with your hosting provider to ask about obtaining an SSL certificate for your domain. Please note... when you create PayPal® Pro Forms with s2Member; you\'ll be supplied with WordPress® Shortcodes, which you\'ll insert into Posts/Pages of your choosing. These special Posts/Pages will need to be displayed in SSL mode, using links that start with ( codehttps:///code ). — You can skip the SSL certificate during Sandbox testing. SSL is not required until you officially go live. Once you\'re live, you can add the Custom Field codes2member_force_ssl = yes/code to any Post/Page./em/p' . "\n" : 'pemstrong*Secure Server*/strong In order to comply with PayPal® and PCI Compliance policies, as set forth by major credit card companies; you will need to host all of your PayPal® Pro Forms on an SSL enabled page. When you create PayPal® Pro Forms with s2Member; you\'ll be supplied with WordPress® Shortcodes, which you\'ll insert into Posts/Pages of your choosing. These special Posts/Pages will need to be displayed in SSL mode, using links that start with ( codehttps:///code ). You can add the Custom Field codes2member_force_ssl = yes/code to any Post/Page that contains a Pro Form Shortcode. This tells s2Member to force those special Posts/Pages to be viewed over SSL at all times; no matter what./em/p' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'pemstrong*SSL Compatibility*/strong All themes available at a href="http://www.primothemes.com/" target="_blank" rel="external"PriMoThemes.com/a include full support for SSL, as does WordPress® itself. However, there are many themes/plugins that do NOT support SSL enabled Posts/Pages like they should. For this reason, you should be very careful when choosing a WordPress® theme to use with s2Member Pro. Otherwise, your visitors could see the famous "Secure/Insecure" warnings in Internet Explorer® browsers. With s2Member installed, you can add the Custom Field codes2member_force_ssl = yes/code to any Post/Page. s2Member will buffer output on those special Posts/Pages, converting everything over to codehttps:///code for you automatically, and forcing those specific Posts/Pages to be viewed over a secure SSL connection; so long as your server supports the https protocol./em/p' . "\n" : '' ; echo 'pemstrong*PayPal® Pro is NOT Absolutely Required*/strong s2Member is very flexible. It is now possible to integrate Pro Forms without a PayPal® Pro account, whereby the enhanced Form Shortcodes that s2Member provides can be integrated ONLY with PayPal® Express Checkout. In other words, if you get declined for PayPal® Pro service, you can still use s2Member Pro Forms. Ask PayPal® to activate Express Checkout for you. ( it\'s free ). Once Express Checkout is enabled, you will have access to your a href="https://cms.paypal.com/us/cgi-bin/?&cmd=_render-content&content_ID=developer/e_howto_api_NVPAPIBasics#id084E30I30RO" target="_blank" rel="external"PayPal® API Credentials/a. Log into your PayPal® account, and navigate to codeProfile - Request API Credentials/code. You\'ll choose ( PayPal® API ), and then choose ( Create Your Own ). Now ... here is the tricky part; whenever you generate a Pro Form Shortcode with s2Member, be sure to change codeaccept="paypal,visa,mastercard,amex,discover,maestro,solo"/code to just codeaccept="paypal"/code; thereby excluding the on-site credit card processing functionality; which is available only with PayPal® Pro./em/p' . "\n" ; echo 'pemstrong*PayPal® Express Checkout Limitations*/strong If you decide NOT to acquire a PayPal® Pro account, and instead integrate ONLY with PayPal® Express Checkout, please understand the following limitation. PayPal® Express Checkout is intended to facilitate payments for PayPal® account owners and/or Customers willing to signup for PayPal® during checkout. It is NOT possible for a Customer to go through PayPal® Express Checkout without having and/or acquiring a PayPal® account, regardless of the transaction type ( i.e. Buy Now functionality is no exception to this rule ). This is because PayPal® Express Checkout is really intended for Customers that *prefer* to pay with PayPal®. So although it\'s possible to integrate Pro Forms without a PayPal® Pro account, we recommend that you acquire a PayPal® Pro account, so that you can accept credit cards on-site, and then offer PayPal® Express Checkout to Customers that *prefer* to pay with PayPal®. That\'s the way s2Member Pro Forms are designed to work, in an ideal fashion./em/p' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="PayPal® Pro / Free Registration Forms"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-registration-forms-section"' . "\n" ; echo 'h3One Form Does It All For Free Registrations ( copy/paste )/h3' . "\n" ; echo 'pWhenever a visitor registers without paying, they\'ll automatically become a Free Subscriber, at Level #0./p' . "\n" ; echo 'pemstrong*Note*/strong the use of this particular Form will override your Open Registration configuration. In other words, making this Form available is the same as turning Open Registration code(on)/code. One of the benefits to this functionality, is that it makes it possible for you to integrate this Free Registration Form in creative ways ( i.e. making it available ONLY under certain circumstances ); while still leaving Open Registration code(off)/code throughout the rest of the site./em/p' . "\n" ; echo 'pemstrong*Tip ( optional )*/strong It is also possible to change the codelevel="0"/code Attribute to something other than the default Level #0 ( Free Subscriber ). For example, if you need to, you can change it to codelevel="1"/code, attach Custom Capabilities with the codeccaps=""/code Attribute, and even limit this access to a certain timeframe with codetp="30" tt="D"/code ( i.e. 30 Days ). So this Form is very flexible. It can be used to allow free access to just about any aspect of your service. For more information on Attributes, please see the section below: Shortcode Attributes ( Explained )./em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-registration-form-shortcode.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( "0" ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level_label%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level0_label" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; echo 'input id="ws-plugin--s2member-pro-registration-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ for ( $n = 1 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'div class="ws-menu-page-group" title="PayPal® Pro Forms For Level #' . $n . ' Access"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-level' . $n . '-forms-section"' . "\n" ; echo 'h3Pro Form Generator For Level #' . $n . ' Access/h3' . "\n" ; echo 'pVery simple. All you do is customize the form fields provided, for each Membership Level that you plan to offer. Then press (Generate Form Code). These special PayPal® Forms are customized to work with s2Member seamlessly. Member accounts will be activated instantly, in an automated fashion. When you, or a Member, cancels their Membership, or fails to make payments on time, s2Member will automatically terminate their Membership privileges. s2Member makes extensive use of the PayPal® IPN service. s2Member receives updates from PayPal® behind-the-scene./p' . "\n" ; echo 'pem* Forms are NOT saved here. This is only a Form Generator. Once you\'ve generated your Form, copy/paste it into any Post/Page you like. You\'ll want to provide your visitors with a link to the Post/Page where this Form is located. We suggest placing a link to this Form on your Membership Options Page. That way your visitors can get registered & checkout!/em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'p id="ws-plugin--s2member-pro-level' . $n . '-trial-line"I\'ll offer the first input type="text" id="ws-plugin--s2member-pro-level' . $n . '-trial-period" value="0" size="6" / select id="ws-plugin--s2member-pro-level' . $n . '-trial-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-membership-trial-terms.html" ) . '/select @ $input type="text" id="ws-plugin--s2member-pro-level' . $n . '-trial-amount" value="0.00" size="4" //p' . "\n" ; echo 'pspan id="ws-plugin--s2member-pro-level' . $n . '-trial-then"Then, /spanI want to charge: $input type="text" id="ws-plugin--s2member-pro-level' . $n . '-amount" value="0.01" size="4" / / select id="ws-plugin--s2member-pro-level' . $n . '-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-membership-regular-terms.html" ) . '/select/p' . "\n" ; echo 'pDescription: input type="text" id="ws-plugin--s2member-pro-level' . $n . '-desc" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_label" ] ) . ' / description and pricing details here." size="68" //p' . "\n" ; echo 'pCheckout Page Style a href="#" tabindex="-1"[?]/a: input type="text" id="ws-plugin--s2member-pro-level' . $n . '-page-style" value="paypal" size="18" / select id="ws-plugin--s2member-pro-level' . $n . '-currency"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-currencies.html" ) . '/select input type="button" value="Generate Form Code" class="button-primary" //p' . "\n" ; echo 'p' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? ' style="display:none;"' : '' ) . 'Custom Capabilities ( comma-delimited ) a href="#" tabindex="-1"[?]/a input type="text" id="ws-plugin--s2member-pro-level' . $n . '-ccaps" size="40" maxlength="125" //p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-checkout-form-shortcode.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $n ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level_label%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_label" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; echo 'input id="ws-plugin--s2member-pro-level' . $n . '-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; } /**/ echo 'div class="ws-menu-page-group" title="PayPal® Pro Billing Modification Forms"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-modification-forms-section"' . "\n" ; echo 'h3Pro Form Generator For Billing Modifications/h3' . "\n" ; echo 'pIf you\'d like to give your Members ( and/or your Free Subscribers ) the ability to change ( modify ) their billing plan; you can generate a new PayPal® Modification Form here. Configure the updated Level, pricing, terms, etc. Then, make that new Modification Form available to Members who are logged into their existing account with you. For example, you might want to insert a "Level #2" Upgrade link into your Login Welcome Page, which would up-sell existing Level #1 Members to a more expensive plan that you offer./p' . "\n" ; echo 'pemstrong*Modification Process*/strong Very simple. A Member clicks a link to a special Post/Page, which contains a Modification Form you\'ve generated. The Member fills in their billing information. After a successful form submission, s2Member will update the status of their account to the Level, pricing, and terms that you configure below. If the Member already has an existing paid Subscription with you, that paid Subscription will be cancelled automatically behind-the-scene, and a new paid Subscription will be created to replace the old one. Again, the new paid Subscription is based on the Level, pricing, and terms that you specify below. If you need to give Customers some sort of grace period when/if they upgrade to a more expensive plan, please feel free to handle this through the application of free days, or with special pricing configured below./em/p' . "\n" ; echo 'pemstrong*Integrating Conditionals*/strong Since each Modification Form is configured for a specific Level, you may want to create multiple Modification Forms, one for each combination you intend to make available. s2Member\'s API Conditionals can help you display the proper Form to each Customer, based on the status of their existing account. For further details, see: codes2Member - API Scripting/code./em/p' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'pemstrong*Independent Custom Capabilities*/strong If you just want to sell an existing Member new Custom Capabilities, without affecting their paid Subscription in any way, please see the next Form Generator: codeCapability (Buy Now) Forms/code. Independent Capability Forms facilitate Buy Now functionality, specifically for Custom Capabilities, without affecting the Customer\'s primary Subscription and Membership Level Access./em/p' . "\n" : '' ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; /**/ echo 'pModification: select id="ws-plugin--s2member-pro-modification-level"' . "\n" ; /**/ for ( $n = 1 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'optgroup label="Level #' . $n . '"' . "\n" ; echo 'option value="upgrade:' . $n . '"↑ Upgrade To Level #' . $n . '/option' . "\n" ; echo ( $n $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'option value="downgrade:' . $n . '"↓ Downgrade To Level #' . $n . '/option' . "\n" : '' ; echo '/optgroup' . "\n" ; /**/ echo ( $n $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'option disabled="disabled"/option' . "\n" : '' ; } /**/ echo '/select/p' . "\n" ; /**/ echo 'p id="ws-plugin--s2member-pro-modification-trial-line"I\'ll offer the first input type="text" id="ws-plugin--s2member-pro-modification-trial-period" value="0" size="6" / select id="ws-plugin--s2member-pro-modification-trial-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-membership-trial-terms.html" ) . '/select @ $input type="text" id="ws-plugin--s2member-pro-modification-trial-amount" value="0.00" size="4" //p' . "\n" ; echo 'pspan id="ws-plugin--s2member-pro-modification-trial-then"Then, /spanI want to charge: $input type="text" id="ws-plugin--s2member-pro-modification-amount" value="0.01" size="4" / / select id="ws-plugin--s2member-pro-modification-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-membership-regular-terms.html" ) . '/select/p' . "\n" ; echo 'pDescription: input type="text" id="ws-plugin--s2member-pro-modification-desc" value="Description and pricing details here." size="68" //p' . "\n" ; echo 'pCheckout Page Style a href="#" tabindex="-1"[?]/a: input type="text" id="ws-plugin--s2member-pro-modification-page-style" value="paypal" size="18" / select id="ws-plugin--s2member-pro-modification-currency"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-currencies.html" ) . '/select input type="button" value="Generate Form Code" class="button-primary" //p' . "\n" ; echo 'p' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? ' style="display:none;"' : '' ) . 'Custom Capabilities ( comma-delimited ) a href="#" tabindex="-1"[?]/a input type="text" id="ws-plugin--s2member-pro-modification-ccaps" size="40" maxlength="125" //p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-checkout-form-shortcode.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( "1" ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level_label%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level1_label" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/\/]$/" , 'modify="1" /]' , $ws_plugin__s2member_pro_temp_s ) ; /* Adds modify="1" to the end of the Shortcode. */ echo 'input id="ws-plugin--s2member-pro-modification-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ if ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) { echo 'div class="ws-menu-page-group" title="PayPal® Pro Capability (Buy Now) Forms"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-ccap-forms-section"' . "\n" ; echo 'h3Pro Form Generator For Independent Custom Capabilities/h3' . "\n" ; echo 'pThis is VERY advanced. For further details, please check your Dashboard: codes2Member - API Scripting - Custom Capabiities/code./p' . "\n" ; echo 'pWith s2Member, you can sell one or more Custom Capabilities using Buy Now functionality, to "existing" Users/Members, regardless of which Membership Level they have on your site em( i.e. you could even sell Independent Custom Capabilities to Users at Membership Level #0, normally referred to as Free Subscribers, if you like )/em. So this is quite flexible. Independent Custom Capabilities do NOT rely on any specific Membership Level. That\'s why s2Member refers to these as `Independent` Custom Capabilities, because you can sell Capabilities this way, through Buy Now functionality, and the Customer\'s Membership Level Access, along with any existing paid Subscription they may already have with you, will remain completely unaffected. That being said, if you intend to charge a recurring fee for Custom Capabilities, please use a codeBilling Modification Form/code instead; because Independent Custom Capabilities can only be sold through Buy Now functionality./p' . "\n" ; echo 'pIndependent Custom Capabilities are added to a Customer\'s account immediately after checkout, and the Customer will have the Custom Capabilities for as long as their Membership lasts, based on their primary Subscription with your site, and/or forever, if they have a Lifetime account with you. In other words, Independent Custom Capabilities will exist on the Customer\'s account forever, or until an EOT em( End Of Term )/em occurs on their primary Subscription with you; in which case s2Member would demote or delete the Customer\'s account em( based on your EOT configuration )/em, and all Custom Capabilities are removed as well./p' . "\n" ; echo 'pVery simple. All you do is customize the form fields provided, for each set of Custom Capabilities that you plan to sell. Then press (Generate Form Code). These special PayPal® Forms are customized to work with s2Member seamlessly. The Customer will be granted additional access to one or more Custom Capabilities that you specify; while the Customer\'s Membership Level Access and any existing paid Subscription they may already have with you, will remain completely unaffected./p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; /**/ echo 'pI want to charge: $input type="text" id="ws-plugin--s2member-pro-ccap-amount" value="0.01" size="4" / / select id="ws-plugin--s2member-pro-ccap-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-membership-ccap-terms.html" ) . '/select/p' . "\n" ; echo 'pDescription: input type="text" id="ws-plugin--s2member-pro-ccap-desc" value="Description and pricing details here." size="68" //p' . "\n" ; echo 'pCheckout Page Style a href="#" tabindex="-1"[?]/a: input type="text" id="ws-plugin--s2member-pro-ccap-page-style" value="paypal" size="18" / select id="ws-plugin--s2member-pro-ccap-currency"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-currencies.html" ) . '/select input type="button" value="Generate Form Code" class="button-primary" //p' . "\n" ; echo 'pCustom Capabilities ( comma-delimited ) a href="#" tabindex="-1"[?]/a input type="text" id="ws-plugin--s2member-pro-ccap-ccaps" size="40" maxlength="125" //p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-ccaps-checkout-form-shortcode.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; echo 'input id="ws-plugin--s2member-pro-ccap-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; } /**/ echo 'div class="ws-menu-page-group" title="PayPal® Pro Billing Update Forms"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-update-forms-section"' . "\n" ; echo 'h3One Form Does It All For Billing Updates ( copy/paste )/h3' . "\n" ; echo 'pAn Update Form can be provided to existing Members, as a way for them to update their billing information; without modifying their existing paid Subscription in any way. For instance, a Customer may need to update their billing information, because their credit card is expiring, or because they moved their bank account./p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-update-form-shortcode.html" ) ) ; echo 'input id="ws-plugin--s2member-pro-update-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="PayPal® Pro Billing Cancellation Forms"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-cancellation-forms-section"' . "\n" ; echo 'h3One Form Does It All For Cancellations ( copy/paste )/h3' . "\n" ; echo 'pAccording to PayPal\'s policy on recurring billing, you MUST provide each and every Customer with an easy to way to cancel future charges. Generating a Cancellation Form here, and making that Form available to all Customers is our recommendation. For further details and legalities, please visit the a href="https://www.x.com/" target="_blank" rel="external"PayPal® Developer Network/a./p' . "\n" ; echo 'pemstrong*Cancellation Process*/strong Very simple. A Member clicks a link to a Post/Page that contains a Cancellation Form you\'ve generated. The Member clicks the Submit button to confirm the cancellation. s2Member is notified silently behind-the-scene, and will immediately cancel all future billing. s2Member will later terminate their account access, at the correct point in time. This works in conjunction with the s2Member Auto-EOT System. For further details, see: codes2Member - PayPal® Options - EOT Behavior/code./em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-cancellation-form-shortcode.html" ) ) ; echo 'input id="ws-plugin--s2member-pro-cancellation-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="PayPal® Member Registration Access Links"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-reg-links-section"' . "\n" ; echo 'h3Registration Access Link Generator ( for Customer Service )/h3' . "\n" ; echo 'ps2Member Pro Forms consolidate the Registration/Checkout process into a single-step solution, so it is unlikely that you will ever need this tool. That being said, if you DO need to deal with a Customer Service issue that requires a simple paid Registration Access Link to be created manually, you can use this tool for that. Alternatively, you can create their account yourself/manually by going to codes2Member - Add A Member/code. Either of these methods will work fine./p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'pPaid Membership Level#: select id="ws-plugin--s2member-pro-reg-link-level"' . "\n" ; for ( $n = 1 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) echo 'option value="' . $n . '"s2Member Level #' . $n . '/option' . "\n" ; echo '/select/p' . "\n" ; echo 'pPaid Subscr. ID: input id="ws-plugin--s2member-pro-reg-link-subscr-id" type="text" value="" size="50" / a href="#" tabindex="-1"[?]/a/p' . "\n" ; echo 'pCustom String Value: input id="ws-plugin--s2member-pro-reg-link-custom" type="text" value="' . esc_attr ( $_SERVER [ "HTTP_HOST" ] ) . '" size="30" / a href="#" HTTP_HOST" ] ) ) . '\\\'\\\' attribute of your Shortcode. This Custom Value, MUST always start with your domain name. However, you can also pipe delimit additional values after your domain, if you need to.\\n\\nFor example:\n' . c_ws_plugin__s2member_utils_strings:: esc_sq ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) . '|cv1|cv2|cv3\'); return false;" tabindex="-1"[?]/a input type="button" value="Generate Access Link" class="button-primary" / img id="ws-plugin--s2member-pro-reg-link-loading" src="' . esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "dir_url" ] ) . '/images/ajax-loader.gif" alt="" style="display:none;" //p' . "\n" ; echo 'p' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? ' style="display:none;"' : '' ) . 'Custom Capabilities ( comma-delimited ) a href="#" tabindex="-1"[?]/a input type="text" id="ws-plugin--s2member-pro-reg-link-ccaps" size="40" maxlength="125" onkeyup="if(this.value.match(/[^a-z_0-9,]/)) this.value = jQuery.trim (jQuery.trim (this.value).replace (/[ \-]/g, \'_\').replace (/[^a-z_0-9,]/gi, \'\').toLowerCase ());" //p' . "\n" ; echo 'pFixed Term Length ( for Buy Now transactions ): input id="ws-plugin--s2member-pro-reg-link-fixed-term" type="text" value="" size="10" / a href="#" [?]/a/p' . "\n" ; echo 'p id="ws-plugin--s2member-pro-reg-link" style="font-family:Consolas, monospace; display:none;"/p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="PayPal® Specific Post/Page (Buy Now) Forms"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-sp-forms-section"' . "\n" ; echo 'h3Pro Form Generator For Specific Post/Page Forms/h3' . "\n" ; echo 'ps2Member now supports an additional layer of functionality ( very powerful ), which allows you to sell access to specific Posts/Pages that you\'ve created in WordPress®. Specific Post/Page Access works independently from Member Level Access. That is, you can sell an unlimited number of Posts/Pages using "Buy Now" functionality. Your Customers will NOT be required to have a Membership Account with your site in order to receive access. If they are already a Member, that\'s fine, but they won\'t need to be./p' . "\n" ; echo 'pIn other words, Customers will NOT need to login, just to receive access to the Specific Post/Page they purchased access to. s2Member will immediately redirect the Customer to the Specific Post/Page after checkout is completed successfully. An email is also sent to the Customer with a link ( see: codes2Member - PayPal® Options - Specific Post/Page Email/code ). Authentication is handled automatically through self-expiring links, good for 72 hours by default./p' . "\n" ; echo 'pSpecific Post/Page Access, is sort of like selling a product. Only, instead of shipping anything to the Customer, you just give them access to a specific Post/Page on your site; one that you created in WordPress®. A Specific Post/Page that is protected by s2Member, might contain a download link for your eBook, access to file & music downloads, access to additional support services, and the list goes on and on. The possibilities with this are endless; as long as your digital product can be delivered through access to a WordPress® Post/Page that you\'ve created. To protect Specific Posts/Pages, please see: codes2Member - Restriction Options - Specific Post/Page Access/code. Once you\'ve configured your Specific Post/Page Restrictions, those Posts/Pages will be available in the menus below./p' . "\n" ; echo 'pVery simple. All you do is customize the form fields provided, for each Post/Page that you plan to sell. Then press (Generate Form Code). These special PayPal® Forms are customized to work with s2Member seamlessly. You can even Package Additional Posts/Pages together into one transaction./p' . "\n" ; echo 'pem* Forms are NOT saved here. This is only a Form Generator. Once you\'ve generated your Form, copy/paste it into any Post/Page you like. You\'ll want to provide your visitors with a link to the Post/Page where this Form is located./em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-leading-id"' . "\n" ; echo 'option value=""— Select a Leading Post/Page that you\'ve protected —/option' . "\n" ; /**/ $ws_plugin__s2member_pro_temp_a_pp = ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) ? ( array ) get_posts ( "post_type=any&include=" . $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) : array ( ) ; /**/ $ws_plugin__s2member_pro_temp_a_pp_excludes = array ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "login_welcome_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "membership_options_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "file_download_limit_exceeded_page" ] ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_posts" ] ) ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_pages" ] ) ) ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-additional-ids" multiple="multiple" style="height:100px;"' . "\n" ; echo 'optgroup label="— Package Additional Posts/Pages that you\'ve protected —"' . "\n" ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/optgroup/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pI want to charge: $input type="text" id="ws-plugin--s2member-pro-sp-amount" value="0.01" size="4" / / select id="ws-plugin--s2member-pro-sp-hours"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-sp-hours.html" ) . '/select/p' . "\n" ; echo 'pDescription: input type="text" id="ws-plugin--s2member-pro-sp-desc" value="Description and pricing details here." size="68" //p' . "\n" ; echo 'pCheckout Page Style a href="#" tabindex="-1"[?]/a: input type="text" id="ws-plugin--s2member-pro-sp-page-style" value="paypal" size="18" / select id="ws-plugin--s2member-pro-sp-currency"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-currencies.html" ) . '/select input type="button" value="Generate Form Code" class="button-primary" //p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-sp-checkout-form-shortcode.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; echo 'input id="ws-plugin--s2member-pro-sp-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="PayPal® Specific Post/Page Access Links"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-sp-links-section"' . "\n" ; echo 'h3Specific Post/Page Link Generator ( for Customer Service )/h3' . "\n" ; echo 'ps2Member automatically generates Specific Post/Page Links for your Customers after checkout, and also sends them a link in a Confirmation Email. However, if you ever need to deal with a Customer Service issue that requires a new Specific Post/Page Link to be created manually, you can use this tool for that./p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-link-leading-id"' . "\n" ; echo 'option value=""— Select a Leading Post/Page that you\'ve protected —/option' . "\n" ; /**/ $ws_plugin__s2member_pro_temp_a_pp = ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) ? ( array ) get_posts ( "post_type=any&include=" . $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) : array ( ) ; /**/ $ws_plugin__s2member_pro_temp_a_pp_excludes = array ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "login_welcome_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "membership_options_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "file_download_limit_exceeded_page" ] ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_posts" ] ) ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_pages" ] ) ) ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-link-additional-ids" multiple="multiple" style="height:100px; min-width:450px;"' . "\n" ; echo 'optgroup label="— Package Additional Posts/Pages that you\'ve protected —"' . "\n" ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/optgroup/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-link-hours"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-sp-hours.html" ) . '/select input type="button" value="Generate Access Link" class="button-primary" / img id="ws-plugin--s2member-pro-sp-link-loading" src="' . esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "dir_url" ] ) . '/images/ajax-loader.gif" alt="" style="display:none;" //p' . "\n" ; echo 'p id="ws-plugin--s2member-pro-sp-link" style="font-family:Consolas, monospace; display:none;"/p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ if ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) { echo 'div class="ws-menu-page-group" title="Custom Return URLs On Success"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-forms-success-section"' . "\n" ; echo 'h3Custom Return URLs On Success ( optional, for developers )/h3' . "\n" ; echo 'ps2Member Pro opens the door for Custom Return URLs upon success. You can add a special attribute to any Form Shortcode ( codesuccess="/my-thank-you-page/"/code ). This makes it possible to integrate PayPal® Pro Forms in very creative ways; and even receive/verify Replacement Code variables, as needed. For example, ( codesuccess="/my-thank-you-page/?subscr_id=%%subscr_id%%"/code )./p' . "\n" ; echo 'pemA Custom Return URL is 100% optional. In fact, if you only need to obtain details for the purpose of tracking sales, you should just use the simpler API Tracking methods provided by s2Member, under: codes2Member - API / Tracking/code. In other words, if you don\'t use the codesuccess=""/code attribute in your Shortcode, s2Member will handle things gracefully, all on its own. So using a Custom Return URL is only necessary when you need advanced customization for one reason or another./em/p' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Free Registration Forms ( a href="#" class="ws-dotted-link"open/close/a )/h3' . "\n" ; echo 'div id="ws-plugin--s2member-pro-forms-success-free-registration" style="display:none;"' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%role%%/code = The Role ID code( subscriber, s2member_level[0-9]+, administrator, editor, author, contributor )/code./li' . "\n" ; echo 'licode%%level%%/code = The Level number code( 0, 1, 2, 3, 4 )/code. ( emdeprecated, no longer recommended; use code%%role%%/code/em )/li' . "\n" ; echo 'licode%%ccaps%%/code = Custom Capabilities. Ex: codemusic,videos,free_gift/code ( emin comma-delimited format/em )./li' . "\n" ; echo 'licode%%auto_eot_time%%/code = Auto-EOT Time ( if applicable ). Ex: code1299925670/code ( emunix timestamp/em )./li' . "\n" ; echo 'licode%%user_first_name%%/code = The First Name of the Member who registered their Username./li' . "\n" ; echo 'licode%%user_last_name%%/code = The Last Name of the Member who registered their Username./li' . "\n" ; echo 'licode%%user_full_name%%/code = The Full Name ( First & Last ) of the Member who registered their Username./li' . "\n" ; echo 'licode%%user_email%%/code = The Email Address of the Member who registered their Username./li' . "\n" ; echo 'licode%%user_login%%/code = The Username the Member selected during registration./li' . "\n" ; echo 'licode%%user_pass%%/code = The Password selected or generated during registration./li' . "\n" ; echo 'licode%%user_ip%%/code = The User\'s IP Address, via code$_SERVER["REMOTE_ADDR"]/code./li' . "\n" ; echo 'licode%%user_id%%/code = A unique WordPress® User ID generated during registration./li' . "\n" ; echo 'licode%%response%%/code = A successful response message that *would* have been displayed to the Customer, had they NOT been redirected to your Custom Return URL upon success. This may contain some basic HTML. For instance, it might contain a link to the login page. You don\'t have to use this. You can generate your own response if you like./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Registration Fields are also supported here:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%date_of_birth%%/code would be valid; if you have a Custom Registration Field with the ID codedate_of_birth/code./li' . "\n" ; echo 'licode%%street_address%%/code would be valid; if you have a Custom Registration Field with the ID codestreet_address/code./li' . "\n" ; echo 'licode%%country%%/code would be valid; if you have a Custom Registration Field with the ID codecountry/code./li' . "\n" ; echo 'liemcode%%etc, etc...%%/code strongsee:/strong s2Member - General Options - Custom Registration Fields/em./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Replacement Codes can also be inserted using these instructions:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%cv0%%/code = The domain of your site, which is passed through the `custom` attribute in your Shortcode./li' . "\n" ; echo 'licode%%cv1%%/code = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute; inside your Shortcode, like this: codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|cv1|cv2|cv3"/code. You can have an unlimited number of custom variables. Obviously, this is for advanced webmasters; but the functionality has been made available for those who need it./li' . "\n" ; echo '/ul' . "\n" ; echo 'strongThis example uses cv1 to record a special marketing campaign:/strongbr /' . "\n" ; echo 'em( The campaign ( i.e. christmas-promo ) could be referenced using code%%cv1%%/code )/embr /' . "\n" ; echo 'codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|christmas-promo"/code' . "\n" ; echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Membership Sales / Signups & Modifications ( a href="#" class="ws-dotted-link"open/close/a )/h3' . "\n" ; echo 'div id="ws-plugin--s2member-pro-forms-success-sales" style="display:none;"' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%subscr_id%%/code = The PayPal® Subscription ID, which remains constant throughout any & all future payments. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%initial%%/code = The Initial Fee charged during signup. If you offered a 100% Free Trial, this will be code0/code. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%regular%%/code = The Regular Amount of the Subscription. This value is codealways 0/code, no matter what. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%recurring%%/code = This is the amount that will be charged on a recurring basis, or code0/code if non-recurring. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%first_name%%/code = The First Name of the Customer who purchased the Membership Subscription./li' . "\n" ; echo 'licode%%last_name%%/code = The Last Name of the Customer who purchased the Membership Subscription./li' . "\n" ; echo 'licode%%full_name%%/code = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription./li' . "\n" ; echo 'licode%%payer_email%%/code = The Email Address of the Customer who purchased the Membership Subscription./li' . "\n" ; echo 'licode%%item_number%%/code = The Item Number ( colon separated codeemlevel:custom_capabilities:fixed term/em/code ) for the Membership Subscription./li' . "\n" ; echo 'licode%%item_name%%/code = The Item Name ( as provided by the codedesc=""/code attribute in your Shortcode, which briefly describes the Item Number )./li' . "\n" ; echo 'licode%%initial_term%%/code = This is the term length of the Initial Period. This will be a numeric value, followed by a space, then a single letter. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%regular_term%%/code = This is the term length of the Regular Period. This will be a numeric value, followed by a space, then a single letter. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%modification%%/code = code1/code if/when a Billing Modification has just taken place; otherwise code0/code indicates a new Customer./li' . "\n" ; echo 'licode%%user_first_name%%/code = The First Name listed on their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_last_name%%/code = The Last Name listed on their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_full_name%%/code = The Full Name listed on their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_email%%/code = The Email Address associated with their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_login%%/code = The Username associated with their account. The Customer created this during registration./li' . "\n" ; echo 'licode%%user_ip%%/code = The Customer\'s original IP Address, during checkout/registration via code$_SERVER["REMOTE_ADDR"]/code./li' . "\n" ; echo 'licode%%user_id%%/code = A unique WordPress® User ID that references this account in the WordPress® database./li' . "\n" ; echo 'licode%%response%%/code = A successful response message that *would* have been displayed to the Customer, had they NOT been redirected to your Custom Return URL upon success. This may contain some basic HTML. For instance, it might contain a link to the login page. You don\'t have to use this. You can generate your own response if you like./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Registration Fields are also supported here:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%date_of_birth%%/code would be valid; if you have a Custom Registration Field with the ID codedate_of_birth/code./li' . "\n" ; echo 'licode%%street_address%%/code would be valid; if you have a Custom Registration Field with the ID codestreet_address/code./li' . "\n" ; echo 'licode%%country%%/code would be valid; if you have a Custom Registration Field with the ID codecountry/code./li' . "\n" ; echo 'liemcode%%etc, etc...%%/code strongsee:/strong s2Member - General Options - Custom Registration Fields/em./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Replacement Codes can also be inserted using these instructions:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%cv0%%/code = The domain of your site, which is passed through the `custom` attribute in your Shortcode./li' . "\n" ; echo 'licode%%cv1%%/code = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute; inside your Shortcode, like this: codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|cv1|cv2|cv3"/code. You can have an unlimited number of custom variables. Obviously, this is for advanced webmasters; but the functionality has been made available for those who need it./li' . "\n" ; echo '/ul' . "\n" ; echo 'strongThis example uses cv1 to record a special marketing campaign:/strongbr /' . "\n" ; echo 'em( The campaign ( i.e. christmas-promo ) could be referenced using code%%cv1%%/code )/embr /' . "\n" ; echo 'codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|christmas-promo"/code' . "\n" ; echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Independent Custom Capability Sales ( a href="#" class="ws-dotted-link"open/close/a )/h3' . "\n" ; echo 'div id="ws-plugin--s2member-pro-forms-success-ccaps" style="display:none;"' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%txn_id%%/code = The Payment Transaction ID, which is always unique for each payment received./li' . "\n" ; echo 'licode%%amount%%/code = The Amount of the payment. Most affiliate programs calculate commissions from this./li' . "\n" ; echo 'licode%%first_name%%/code = The First Name of the Customer who purchased the Independent Custom Capabilities./li' . "\n" ; echo 'licode%%last_name%%/code = The Last Name of the Customer who purchased the Independent Custom Capabilities./li' . "\n" ; echo 'licode%%full_name%%/code = The Full Name ( First & Last ) of the Customer who purchased the Independent Custom Capabilities./li' . "\n" ; echo 'licode%%payer_email%%/code = The Email Address of the Customer who purchased the Independent Custom Capabilities./li' . "\n" ; echo 'licode%%item_number%%/code = The Item Number ( colon separated codeem*level:custom_capabilities:fixed term/em/code ) that the payment is for. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%item_name%%/code = The Item Name ( as provided by the codedesc=""/code attribute in your Shortcode, which briefly describes the Item Number )./li' . "\n" ; echo 'licode%%user_first_name%%/code = The First Name listed on their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_last_name%%/code = The Last Name listed on their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_full_name%%/code = The Full Name listed on their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_email%%/code = The Email Address associated with their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_login%%/code = The Username associated with their account. The Customer created this during registration./li' . "\n" ; echo 'licode%%user_ip%%/code = The Customer\'s original IP Address, during checkout/registration via code$_SERVER["REMOTE_ADDR"]/code./li' . "\n" ; echo 'licode%%user_id%%/code = A unique WordPress® User ID that references this account in the WordPress® database./li' . "\n" ; echo 'licode%%response%%/code = A successful response message that *would* have been displayed to the Customer, had they NOT been redirected to your Custom Return URL upon success. This may contain some basic HTML. For instance, it might contain a link to the login page. You don\'t have to use this. You can generate your own response if you like./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Registration Fields are also supported here:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%date_of_birth%%/code would be valid; if you have a Custom Registration Field with the ID codedate_of_birth/code./li' . "\n" ; echo 'licode%%street_address%%/code would be valid; if you have a Custom Registration Field with the ID codestreet_address/code./li' . "\n" ; echo 'licode%%country%%/code would be valid; if you have a Custom Registration Field with the ID codecountry/code./li' . "\n" ; echo 'liemcode%%etc, etc...%%/code strongsee:/strong s2Member - General Options - Custom Registration Fields/em./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Replacement Codes can also be inserted using these instructions:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%cv0%%/code = The domain of your site, which is passed through the `custom` attribute in your Shortcode./li' . "\n" ; echo 'licode%%cv1%%/code = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute; inside your Shortcode, like this: codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|cv1|cv2|cv3"/code. You can have an unlimited number of custom variables. Obviously, this is for advanced webmasters; but the functionality has been made available for those who need it./li' . "\n" ; echo '/ul' . "\n" ; echo 'strongThis example uses cv1 to record a special marketing campaign:/strongbr /' . "\n" ; echo 'em( The campaign ( i.e. christmas-promo ) could be referenced using code%%cv1%%/code )/embr /' . "\n" ; echo 'codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|christmas-promo"/code' . "\n" ; echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Specific Post/Page Transactions ( a href="#" class="ws-dotted-link"open/close/a )/h3' . "\n" ; echo 'div id="ws-plugin--s2member-pro-forms-success-sp-sales" style="display:none;"' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%sp_access_url%%/code = The full URL ( generated by s2Member ) where the Customer can gain access./li' . "\n" ; echo 'licode%%sp_access_exp%%/code = Human readable expiration for code%%sp_access_url%%/code. Ex: em( link expires in code%%sp_access_exp%%/code )/em./li' . "\n" ; echo 'licode%%txn_id%%/code = The PayPal® Transaction ID. PayPal® assigns a unique identifier for every purchase./li' . "\n" ; echo 'licode%%amount%%/code = The full Amount of the sale. Most affiliate programs calculate commissions from this./li' . "\n" ; echo 'licode%%first_name%%/code = The First Name of the Customer who purchased Specific Post/Page Access./li' . "\n" ; echo 'licode%%last_name%%/code = The Last Name of the Customer who purchased Specific Post/Page Access./li' . "\n" ; echo 'licode%%full_name%%/code = The Full Name ( First & Last ) of the Customer who purchased Specific Post/Page Access./li' . "\n" ; echo 'licode%%payer_email%%/code = The Email Address of the Customer who purchased Specific Post/Page Access./li' . "\n" ; echo 'licode%%user_ip%%/code = The Customer\'s IP Address, detected during checkout via code$_SERVER["REMOTE_ADDR"]/code./li' . "\n" ; echo 'licode%%item_number%%/code = The Item Number. Ex: codeemsp:13,24,36:72/em/code ( translates to: codeemsp:comma-delimited IDs:expiration hours/em/code )./li' . "\n" ; echo 'licode%%item_name%%/code = The Item Name ( as provided by the codedesc=""/code attribute in your Shortcode, which briefly describes the Item Number )./li' . "\n" ; echo 'licode%%response%%/code = A successful response message that *would* have been displayed to the Customer, had they NOT been redirected to your Custom Return URL upon success. This may contain some basic HTML. For instance, a link to the Specific Post/Page. You don\'t have to use this. You can generate your own response if you like./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Replacement Codes can also be inserted using these instructions:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%cv0%%/code = The domain of your site, which is passed through the `custom` attribute in your Shortcode./li' . "\n" ; echo 'licode%%cv1%%/code = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute; inside your Shortcode, like this: codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|cv1|cv2|cv3"/code. You can have an unlimited number of custom variables. Obviously, this is for advanced webmasters; but the functionality has been made available for those who need it./li' . "\n" ; echo '/ul' . "\n" ; echo 'strongThis example uses cv1 to record a special marketing campaign:/strongbr /' . "\n" ; echo 'em( The campaign ( i.e. christmas-promo ) could be referenced using code%%cv1%%/code )/embr /' . "\n" ; echo 'codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|christmas-promo"/code' . "\n" ; echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Cancellations & Billing Updates ( a href="#" class="ws-dotted-link"open/close/a )/h3' . "\n" ; echo 'div id="ws-plugin--s2member-pro-forms-success-cancellations-updates" style="display:none;"' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%response%%/code = A successful response message that *would* have been displayed to the Customer, had they NOT been redirected to your Custom Return URL upon success. This may contain some basic HTML. For instance, a link back to their account page. You don\'t have to use this. You can generate your own response if you like./li' . "\n" ; echo '/ul' . "\n" ; echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Verify The Integrity Of Replacement Codes ( a href="#" class="ws-dotted-link"open/close/a )/h3' . "\n" ; echo 'div id="ws-plugin--s2member-pro-forms-success-verification" style="display:none;"' . "\n" ; echo 'pIf you know a little PHP, you can verify the integrity of the Replacement Codes returned by s2Member. This is important, because in this particular situation, Replacement Codes are passed publicly in the query string of your Custom Return URL. In other words, a Customer could manually change one of the values; like the dollar amounts. For this reason, you should always verify the integrity of the details being returned to any processing routines that receive this information. In the PHP code for your Custom Return URL, you can use this s2Member API Function: codes2member_pro_paypal_s2p_v_query_ok()/code. Here is an example:/p' . "\n" ; echo 'p1. strongShortcode attribute:/strong codesuccess="/thank-you/?subscr_id=%%subscr_%%&initial=%%initial%%&regular=%%regular%%"/code/p' . "\n" ; echo 'p2. strongs2Member returns Customer to:/strong code/thank-you/?subscr_id=123&initial=0.00&regular=24.95&s2p-v=234098234-23409sdfs234sd234209sdf/code/p' . "\n" ; echo 'p3. strongNow, in your Custom Return Page, you will need to do this before trusting anything:/strong/p' . "\n" ; echo 'p' . c_ws_plugin__s2member_utils_strings:: highlight_php ( file_get_contents ( dirname ( __FILE__ ) . "/code-samples/paypal-s2p-v-query-ok-1.php" ) ) . '/p' . "\n" ; echo 'ps2Member will only verify a query string for up to 10 seconds. After 10 seconds, codes2member_pro_paypal_s2p_v_query_ok()/code will always return codefalse/code, even if the integrity of the query string is valid. This prevents a Customer from bookmarking your Return URL; thereby causing duplicate commissions; in case you\'re using it for tracking purposes. Again, if you only need to obtain details for the purpose of tracking sales, you should just use the simpler API Tracking methods provided by s2Member, under: codes2Member - API / Tracking/code. The API Tracking methods are specifically designed for tracking sales, exactly ONE time for each Customer./p' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'pemIf it is your intention to allow Customers to bookmark your Custom Return URL, you can still do that. Just be aware that codes2member_pro_paypal_s2p_v_query_ok()/code will return codefalse/code after the first 10 seconds. If you want to verify after 10 seconds, you can pass a second argument to the function, like this:/em/p' . "\n" ; echo 'p' . c_ws_plugin__s2member_utils_strings:: highlight_php ( file_get_contents ( dirname ( __FILE__ ) . "/code-samples/paypal-s2p-v-query-ok-2.php" ) ) . '/p' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Could a Customer change the timestamp in the URL?/h3' . "\n" ; echo 'pBased on the structure of the URL, it would appear possible; however, it\'s NOT. s2Member uses an advanced checksum./p' . "\n" ; echo 'h3Can I get rid of the codes2p-v/code variable?/h3' . "\n" ; echo 'pNo, this variable is always passed to your Custom Return URL, it\'s for important verification purposes./p' . "\n" ; echo '/div' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; } /**/ echo 'div class="ws-menu-page-group" title="Shortcode Attributes ( Explained )"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-shortcode-attrs-section"' . "\n" ; echo 'h3Shortcode Attributes ( Explained In Full Detail )/h3' . "\n" ; echo 'pWhen you generate a Form, s2Member will make a a href="http://codex.wordpress.org/Shortcode_API#Overview" target="_blank" rel="external"Shortcode/a available to you. Like most Shortcodes for WordPress®, s2Member reads Attributes in your Shortcode. These Attributes will be pre-configured by one of s2Member\'s Form Generators automatically; so there really is nothing more you need to do. However, many site owners like to know exactly how these Shortcode Attributes work. Below, is a brief overview of each possible Shortcode Attribute./p' . "\n" ; /**/ echo 'table class="form-table" style="margin-top:0;"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr style="padding-top:0;"' . "\n" ; /**/ echo 'td style="padding-top:0;"' . "\n" ; echo 'ul' . "\n" ; echo 'licodeaccept="paypal,visa,mastercard,amex,discover,maestro,solo"/code Accepted Billing Methods. A comma-delimited list of Billing Methods you want to accept. Due to a PayPal® policy, you may NOT exclude PayPal® from this list; s2Member won\'t let you. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodeaccept_via_paypal="paypal"/code Accepted Billing via PayPal®. A comma-delimited list of Billing Methods you want to accept through PayPal®, as opposed to processing them on-site. Due to a PayPal® policy, you may NOT exclude PayPal® from this list; s2Member won\'t let you. strongTip:/strong If you don\'t have a PayPal® Pro account, you can set codeaccept="paypal"/code, or set codeaccept_via_paypal="paypal,visa,mastercard,amex,discover,maestro,solo"/code. With one or both of these configurations, all you need is a PayPal® Standard account with Express Checkout em( which is free )/em. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodeaccept_coupons="1"/code Accept Coupons? Possible values: code0/code = do NOT accept Coupons on this particular Form; code1/code = DO accept Coupon Codes on this particular Form./li' . "\n" ; echo 'licodecancel="0"/code Cancellation Form. Only valid w/ Membership Level Access. Possible values: code0/code = this is NOT a Cancellation Form, code1/code = this IS a Cancellation Form./li' . "\n" ; echo 'licodecaptcha="clean"/code When you set this Attribute, visitors must prove they\'re human by typing a a href="http://en.wikipedia.org/wiki/CAPTCHA" target="_blank" rel="external"captcha/security code/a. Possible values: code0/code = do NOT require a captcha code on this Form; codeclean/code = DO require a captcha code on this Form; using the codeclean/code theme style. Possible a href="http://code.google.com/apis/recaptcha/docs/customization.html" target="_blank" rel="external"theme styles/a include: codered/code, codewhite/code, codeclean/code, and codeblackglass/code. This service is powered by Google\'s reCaptcha system./li' . "\n" ; echo 'licodecc="USD"/code 3 character Currency Code. Not valid when codecancel="1"/code./li' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'licodeccaps="music,videos"/code A comma-delimited list of Custom Capabilities. Only valid w/ Membership Level Access and/or Independent Custom Capabilities./li' . "\n" : '' ; echo 'licodecoupon="SAVE-10"/code Default/pre-filled Coupon Code. This is optional, and the Coupon Code ( if supplied ) must exist in your Coupon Code configuration./li' . "\n" ; echo 'licodecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '"/code must start with your domain. Additional values can be piped in ( ex: codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|cv1|cv2|cv3|etc"/code ). Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodedefault_country_code="US"/code If you set this 2-character value, it will pre-configure the default Country that is selected in the drop-down menu for Checkout and Billing Update Forms. This MUST be an uppercase country code, following the a href="http://www.iso.org/iso/english_country_names_and_code_elements" target="_blank" rel="external"ISO-3166-1 specification/a. If this is empty ( i.e. code""/code ) s2Member will set the default country code automatically; based on currency. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodedesc="Gold Membership @ $29/mo"/code A brief purchase Description. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodedg="0"/code The Digital Goods directive. s2Member will eventually be integrated with a href="https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_IntroducingExpressCheckoutDG" target="_blank" rel="external"Digital Goods/a for inline Express Checkout. But for now, this should always be code0/code./li' . "\n" ; echo 'licodeexp="72"/code Access Expires ( in hours ). Only valid when codesp="1"/code for Specific Post/Page Access./li' . "\n" ; echo 'licodeids="14"/code A Post/Page ID#, or a comma-delimited list of IDs. Only valid when codesp="1"/code for Specific Post/Page Access./li' . "\n" ; echo 'licodelc=""/code Optional 2 character Locale Code em( i.e. Country Code )/em. This controls the interface language used if/when a Customer chooses PayPal® Express Checkout as their payment method. If unspecified, the language is determined by PayPal® Express Checkout when possible, defaulting to codeUS/code emenglish/em when not possible. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodelevel="1"/code Membership Level [1-4] em( or, up to the number of configured Levels )/em. Only valid for Forms providing Membership Level Access, which includes Free Registration Forms too. Free Registration Forms allow a value of codelevel="0"/code whenever coderegister="1"/code for Free Registration. In addition, Free Registration Forms will also allow visitors to register for free, even at higher Levels if you wish. Free Registration Forms will accept any value [0-4] em( or, up to the number of configured Levels )/em.' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? '' : ' With Independent Custom Capabilities this MUST be set to codelevel="*"/code.' ) . '/li' . "\n" ; echo 'licodemodify="0"/code Modification directive. Only valid w/ Membership Level Access. Possible values: code0/code = allows Customers to modify their current Subscription or sign up for a new one, code1/code = allows Customers to only modify their current Subscription. When codemodify="1"/code, s2Member will force a Customer to be logged-in before they can fill out the Form ( very handy ). This is slightly different than PayPal® "Button" Codes; there is no "2" option for "Forms"; only code0/code & code1/code are valid values./li' . "\n" ; echo 'licodens="1"/code The emno_shipping/em directive. Possible values: code0/code = prompt for an address, but do not require one, code1/code = do not prompt for a shipping address, code2/code = prompt for an address, and require one. Applies only to PayPal® Express Checkout; because Pro Forms do not ask for a Shipping Address. However, you may request a Shipping Address by creating Custom Fields under: ems2Member - General Options - Custom Registration Fields/em. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodeps="paypal"/code PayPal® checkout Page Style. Applies only to PayPal® Express Checkout. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licoderegister="0"/code Free Registration Form. Only valid w/ Membership Level Access. Possible values: code0/code = this is NOT a Free Registration Form, code1/code = this IS a Free Registration Form./li' . "\n" ; echo 'licodera="0.01"/code Regular, Buy Now, and/or Recurring Amount. Must be >= code0.01/code. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licoderp="1"/code Regular Period. Only valid w/ Membership Level Access' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? '' : ' and/or Independent Custom Capabilities' ) . '. Must be >= code1/code ( ex: code1/code Week, code2/code Months, code1/code Month, code3/code Days )./li' . "\n" ; echo 'licodert="M"/code Regular Term. Only valid w/ Membership Level Access' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? '' : ' and/or Independent Custom Capabilities' ) . '. Possible values: codeD/code = Days, codeW/code = Weeks, codeM/code = Months, codeY/code = Years, codeL/code = Lifetime./li' . "\n" ; echo 'licoderr="1"/code Recurring directive. Only valid w/ Membership Level Access' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? '' : ' and/or Independent Custom Capabilities' ) . '. Possible values: code0/code = non-recurring "Subscription" with possible Trial Period for free, or at a different Trial Amount; code1/code = recurring "Subscription" with possible Trial Period for free, or at a different Trial Amount; codeBN/code = non-recurring "Buy Now" functionality, no Trial Period possible./li' . "\n" ; echo 'licoderrt=""/code Recurring Times em( i.e. a fixed number of installments )/em. Only valid w/ Membership Level Access. When unspecified, any recurring charges will remain ongoing until cancelled, or until payments start failing. If this is set to code1 or higher/code the regular recurring charges will only continue for X billing cycles, depending on what you specify. This is only valid when coderr="1"/code for recurring "Subscriptions". Please note that a fixed number of installments, also means a fixed period of access. If a Customer\'s billing is monthly, and you set coderrt="3"/code, billing will continue for only 3 monthly installments. After that, billing would stop, and their access to the site would be revoked as well em( based on your EOT Behavior setting under: s2Member - PayPal® Options )/em./li' . "\n" ; echo 'licoderra="2"/code Reattempt failed payments? Possible values: code0/code = do NOT reattempt billing when/if a recurring payment fails; code1 or higher/code = yes, DO reattempt billing when/if a recurring payment fails. With PayPal® Pro integration, PayPal® will retry a maximum of 2 times whenever coderra="2"/code; after that, a Subscription would be terminated due to Max Failed Payments having been reached. With PayPal® Pro integration, the value of this attribute also configures Max Failed Payments. So a setting of coderra="2"/code means that you allow a maximum of 2 failed payments./li' . "\n" ; echo 'licodesp="0"/code Specific Post/Page Form. Possible values: code0/code = this is NOT a Specific Post/Page Access Form, code1/code = this IS a Specific Post/Page Access Form./li' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'licodesuccess=""/code 100% optional. This can be used to create a Custom Return URL on success. Please see the sub-section above titled: emCustom Return URLs on Success/em./li' . "\n" : '' ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'licodetemplate=""/code 100% optional. This can be a custom template file that exists inside your WordPress® theme directory. For example: codetemplate="checkout.php"/code./li' . "\n" : '' ; echo 'licodeta="0.00"/code Trial Amount. Only valid w/ Membership Level Access. Must be code0/code when codert="L"/code or when coderr="BN"/code./li' . "\n" ; echo 'licodetp="0"/code Trial Period. Only valid w/ Membership Level Access. Must be code0/code when codert="L"/code or when coderr="BN"/code./li' . "\n" ; echo 'licodett="D"/code Trial Term. Only valid w/ Membership Level Access. Possible values: codeD/code = Days, codeW/code = Weeks, codeM/code = Months, codeY/code = Years./li' . "\n" ; echo 'licodeupdate="0"/code Billing Update Form. Only valid w/ Membership Level Access. Possible values: code0/code = this is NOT a Billing Update Form, code1/code = this IS a Billing Update Form./li' . "\n" ; echo '/ul' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo '/td' . "\n" ; /**/ echo 'td class="ws-menu-page-table-r"' . "\n" ; c_ws_plugin__s2member_menu_pages_rs:: display ( ) ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; /**/ echo '/div' . "\n" ; } } } /**/ new c_ws_plugin__s2member_pro_menu_page_paypal_forms ( ) ; ? [ full view ]s2member-pro\includes\menu-pages\paypal-forms.inc.php Source Code Documentation Packages ( Overview ) Classes Deprecated Todo Index Source Code(!-- :: s-words --)

Statistics: Posted by System Robot — August 15th, 2011, 3:19 pm


]]>
2011-07-11T17:37:57-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=28002#p28002 <![CDATA[s2Member v110710 / Source Code: s2member-p...]]>
s2Member v110710
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: July 11, 2011, 6:37 pm

Open for public discussion.
(!-- s-words :: --)Source Code Documentation Packages ( Overview ) Classes Deprecated Todo Index Source Code jQuery(window).load(function(){ if(typeof location.hash === 'string' && location.hash.match(/^#/)) jQuery('olli'+location.hash).addClass('hilite'); }); jQuery(window).bind('hashchange', function(){ if(typeof location.hash === 'string' && location.hash.match(/^#/)) jQuery('olli').removeClass('hilite'); jQuery('olli'+location.hash).addClass('hilite'); }); [ full view ]s2member-pro\includes\menu-pages\paypal-forms.inc.php ?php /** * Menu page for s2Member Pro ( PayPal® Forms page ). * * Copyright: © 2009-2011 * {@link http://www.websharks-inc.com/ WebSharks, Inc.} * ( coded in the USA ) * * This WordPress® plugin ( s2Member Pro ) is comprised of two parts: * * o (1) Its PHP code is licensed under the GPL license, as is WordPress®. * You should have received a copy of the GNU General Public License, * along with this software. In the main directory, see: /licensing/ * If not, see: {@link http://www.gnu.org/licenses/}. * * o (2) All other parts of ( s2Member Pro ); including, but not limited to: * the CSS code, some JavaScript code, images, and design; * are licensed according to the license purchased. * See: {@link http://www.s2member.com/prices/} * * Unless you have our prior written consent, you must NOT directly or indirectly license, * sub-license, sell, resell, or provide for free; part (2) of the s2Member Pro Module; * or make an offer to do any of these things. All of these things are strictly * prohibited with part (2) of the s2Member Pro Module. * * Your purchase of s2Member Pro includes free lifetime upgrades via s2Member.com * ( i.e. new features, bug fixes, updates, improvements ); along with full access * to our video tutorial library: {@link http://www.s2member.com/videos/} * * @package s2Member\Menu_Pages * @since 1.5 */ if ( realpath ( __FILE__ ) === realpath ( $_SERVER [ "SCRIPT_FILENAME" ] ) ) exit ( "Do not access this file directly." ) ; /**/ if ( ! class_exists ( "c_ws_plugin__s2member_pro_menu_page_paypal_forms" ) ) { /** * Menu page for s2Member Pro ( PayPal® Forms page ). * * @package s2Member\Menu_Pages * @since 110531 */ class c_ws_plugin__s2member_pro_menu_page_paypal_forms { public function __construct ( ) { echo 'div class="wrap ws-menu-page"' . "\n" ; /**/ echo 'div id="icon-plugins" class="icon32"br //div' . "\n" ; echo 'h2s2Member® Pro / PayPal® Pro Forms/h2' . "\n" ; /**/ echo 'table class="ws-menu-page-table"' . "\n" ; echo 'tbody class="ws-menu-page-table-tbody"' . "\n" ; echo 'tr class="ws-menu-page-table-tr"' . "\n" ; echo 'td class="ws-menu-page-table-l"' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="Quick-Start Guide For PayPal® Pro"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-forms-guide-section"' . "\n" ; echo 'img src="' . esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "dir_url" ] ) . '/images/large-icon.png" title="s2Member ( a Membership management system for WordPress® )" alt="" style="float:right; margin:0 0 0 25px; border:0;" /' . "\n" ; echo 'h3Quick-Start Guide For PayPal® Pro Integration/h3' . "\n" ; echo 'pThe s2Member Pro Module makes it possible for s2Member to use PayPal® Pro Forms ( instead of standard PayPal® Buttons ). PayPal® Pro Forms integrate seamlessly with WordPress® Shortcodes. This allows you to keep Customers on your site at all times, and it consolidates the Checkout / Registration steps into a single form that you can dress up just the way you like. If you would like to take advantage of PayPal® Pro integration, please supply your PayPal® API Username, Password, and Signature. See codes2Member - PayPal® Options/code./p' . "\n" ; echo 'pemstrong*PayPal® Pro Integration*/strong You will need a a href="https://www.paypal.com/us/mrb/pal=KMEJ5UCMUQVAW" target="_blank" rel="external"PayPal® Business Account, w/Pro Service/a. PayPal® Pro accounts require a formal application, along with a small monthly fee. Once you have a PayPal® Pro account, you\'ll need access to your a href="https://cms.paypal.com/us/cgi-bin/?&cmd=_render-content&content_ID=developer/e_howto_api_NVPAPIBasics#id084E30I30RO" target="_blank" rel="external"PayPal® API Credentials/a. Log into your PayPal® Pro account, and navigate to codeProfile - Request API Credentials/code. You\'ll choose ( PayPal® API ), and then choose ( Create Your Own )./em/p' . "\n" ; echo 'pemstrong*Recurring Billing*/strong If you plan to use any of the ( `Subscription` ) options in the Form Generators below, you will ALSO need a href="https://www.paypal.com/cgi-bin/webscr?cmd=xpt/Marketing/general/RecurringPaymentFAQs-outside" target="_blank" rel="external"Recurring Billing/a enabled for your PayPal® Pro account. PayPal\'s Recurring Billing service for Pro accounts is strongrequired/strong for all types of ( `Subscriptions` ), whether you intend for them to be recurring or not. However, it is NOT required for ( `Buy Now` ) functionality. The drop-down menus, in the sections below, have been marked ( `Subscription` ) and ( `Buy Now` ) just for this reason. This way you can see which options will require the use of PayPal\'s Recurring Billing service. PayPal® will charge you a small monthly fee for their Recurring Billing service; which is an add-on for PayPal® Pro accounts./em/p' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'pemstrong*Secure Server*/strong In order to comply with PayPal® and PCI Compliance policies, as set forth by major credit card companies; you will need to host all of your PayPal® Pro Forms on an SSL enabled site. Please check with your hosting provider to ask about obtaining an SSL certificate for your domain. Please note... when you create PayPal® Pro Forms with s2Member; you\'ll be supplied with WordPress® Shortcodes, which you\'ll insert into Posts/Pages of your choosing. These special Posts/Pages will need to be displayed in SSL mode, using links that start with ( codehttps:///code ). — You can skip the SSL certificate during Sandbox testing. SSL is not required until you officially go live. Once you\'re live, you can add the Custom Field codes2member_force_ssl = yes/code to any Post/Page./em/p' . "\n" : 'pemstrong*Secure Server*/strong In order to comply with PayPal® and PCI Compliance policies, as set forth by major credit card companies; you will need to host all of your PayPal® Pro Forms on an SSL enabled page. When you create PayPal® Pro Forms with s2Member; you\'ll be supplied with WordPress® Shortcodes, which you\'ll insert into Posts/Pages of your choosing. These special Posts/Pages will need to be displayed in SSL mode, using links that start with ( codehttps:///code ). You can add the Custom Field codes2member_force_ssl = yes/code to any Post/Page that contains a Pro Form Shortcode. This tells s2Member to force those special Posts/Pages to be viewed over SSL at all times; no matter what./em/p' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'pemstrong*SSL Compatibility*/strong All themes available at a href="http://www.primothemes.com/" target="_blank" rel="external"PriMoThemes.com/a include full support for SSL, as does WordPress® itself. However, there are many themes/plugins that do NOT support SSL enabled Posts/Pages like they should. For this reason, you should be very careful when choosing a WordPress® theme to use with s2Member Pro. Otherwise, your visitors could see the famous "Secure/Insecure" warnings in Internet Explorer® browsers. With s2Member installed, you can add the Custom Field codes2member_force_ssl = yes/code to any Post/Page. s2Member will buffer output on those special Posts/Pages, converting everything over to codehttps:///code for you automatically, and forcing those specific Posts/Pages to be viewed over a secure SSL connection; so long as your server supports the https protocol./em/p' . "\n" : '' ; echo 'pemstrong*PayPal® Pro is NOT Absolutely Required*/strong s2Member is very flexible. It is now possible to integrate Pro Forms without a PayPal® Pro account, whereby the enhanced Form Shortcodes that s2Member provides can be integrated ONLY with PayPal® Express Checkout. In other words, if you get declined for PayPal® Pro service, you can still use s2Member Pro Forms. Ask PayPal® to activate Express Checkout for you. ( it\'s free ). Once Express Checkout is enabled, you will have access to your a href="https://cms.paypal.com/us/cgi-bin/?&cmd=_render-content&content_ID=developer/e_howto_api_NVPAPIBasics#id084E30I30RO" target="_blank" rel="external"PayPal® API Credentials/a. Log into your PayPal® account, and navigate to codeProfile - Request API Credentials/code. You\'ll choose ( PayPal® API ), and then choose ( Create Your Own ). Now ... here is the tricky part; whenever you generate a Pro Form Shortcode with s2Member, be sure to change codeaccept="paypal,visa,mastercard,amex,discover,maestro,solo"/code to just codeaccept="paypal"/code; thereby excluding the on-site credit card processing functionality; which is available only with PayPal® Pro./em/p' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="PayPal® Pro / Free Registration Forms"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-registration-forms-section"' . "\n" ; echo 'h3One Form Does It All For Free Registrations ( copy/paste )/h3' . "\n" ; echo 'pWhenever a visitor registers without paying, they\'ll automatically become a Free Subscriber, at Level #0./p' . "\n" ; echo 'pemstrong*Note*/strong the use of this particular Form will override your Open Registration configuration. In other words, making this Form available is the same as turning Open Registration code(on)/code. One of the benefits to this functionality, is that it makes it possible for you to integrate this Free Registration Form in creative ways ( i.e. making it available ONLY under certain circumstances ); while still leaving Open Registration code(off)/code throughout the rest of the site./em/p' . "\n" ; echo 'pemstrong*Tip ( optional )*/strong It is also possible to change the codelevel="0"/code Attribute to something other than the default Level #0 ( Free Subscriber ). For example, if you need to, you can change it to codelevel="1"/code, attach Custom Capabilities with the codeccaps=""/code Attribute, and even limit this access to a certain timeframe with codetp="30" tt="D"/code ( i.e. 30 Days ). So this Form is very flexible. It can be used to allow free access to just about any aspect of your service. For more information on Attributes, please see the section below: Shortcode Attributes ( Explained )./em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-registration-form-shortcode.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( "0" ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level_label%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level0_label" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; echo 'input id="ws-plugin--s2member-pro-registration-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ for ( $n = 1 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'div class="ws-menu-page-group" title="PayPal® Pro Forms For Level #' . $n . ' Access"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-level' . $n . '-forms-section"' . "\n" ; echo 'h3Pro Form Generator For Level #' . $n . ' Access/h3' . "\n" ; echo 'pVery simple. All you do is customize the form fields provided, for each Membership Level that you plan to offer. Then press (Generate Form Code). These special PayPal® Forms are customized to work with s2Member seamlessly. Member accounts will be activated instantly, in an automated fashion. When you, or a Member, cancels their Membership, or fails to make payments on time, s2Member will automatically terminate their Membership privileges. s2Member makes extensive use of the PayPal® IPN service. s2Member receives updates from PayPal® behind-the-scene. em* Forms are NOT saved here. This is only a Form Generator. Once you\'ve generated your Form, copy/paste it into any Post/Page you like. You\'ll want to provide your visitors with a link to the Post/Page where this Form is located. We suggest placing a link to this Form on your Membership Options Page. That way your visitors can get registered & checkout!/em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'p id="ws-plugin--s2member-pro-level' . $n . '-trial-line"I\'ll offer the first input type="text" id="ws-plugin--s2member-pro-level' . $n . '-trial-period" value="0" size="6" / select id="ws-plugin--s2member-pro-level' . $n . '-trial-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-membership-trial-terms.html" ) . '/select @ $input type="text" id="ws-plugin--s2member-pro-level' . $n . '-trial-amount" value="0.00" size="4" //p' . "\n" ; echo 'pspan id="ws-plugin--s2member-pro-level' . $n . '-trial-then"Then, /spanI want to charge: $input type="text" id="ws-plugin--s2member-pro-level' . $n . '-amount" value="0.01" size="4" / / select id="ws-plugin--s2member-pro-level' . $n . '-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-membership-regular-terms.html" ) . '/select/p' . "\n" ; echo 'pDescription: input type="text" id="ws-plugin--s2member-pro-level' . $n . '-desc" value="' . format_to_edit ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_label" ] ) . ' / description and pricing details here." size="68" //p' . "\n" ; echo 'pCheckout Page Style a href="#" tabindex="-1"[?]/a: input type="text" id="ws-plugin--s2member-pro-level' . $n . '-page-style" value="paypal" size="18" / select id="ws-plugin--s2member-pro-level' . $n . '-currency"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-currencies.html" ) . '/select input type="button" value="Generate Form Code" class="button-primary" //p' . "\n" ; echo 'p' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? ' style="display:none;"' : '' ) . 'Custom Capabilities ( comma-delimited ) a href="#" tabindex="-1"[?]/a input type="text" id="ws-plugin--s2member-pro-level' . $n . '-ccaps" size="40" maxlength="125" //p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-checkout-form-shortcode.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $n ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level_label%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_label" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; echo 'input id="ws-plugin--s2member-pro-level' . $n . '-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; } /**/ echo 'div class="ws-menu-page-group" title="PayPal® Pro Billing Modification Forms"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-modification-forms-section"' . "\n" ; echo 'h3Pro Form Generator For Billing Modifications/h3' . "\n" ; echo 'pIf you\'d like to give your Members ( and/or your Free Subscribers ) the ability to change ( modify ) their billing plan; you can generate a new PayPal® Modification Form here. Configure the updated Level, pricing, terms, etc. Then, make that new Modification Form available to Members who are logged into their existing account with you. For example, you might want to insert a "Level #2" Upgrade link into your Login Welcome Page, which would up-sell existing Level #1 Members to a more expensive plan that you offer./p' . "\n" ; echo 'pemstrong*Modification Process*/strong Very simple. A Member clicks a link to a special Post/Page, which contains a Modification Form you\'ve generated. The Member fills in their billing information. After a successful form submission, s2Member will update the status of their account to the Level, pricing, and terms that you configure below. If the Member already has an existing paid Subscription with you, that paid Subscription will be cancelled automatically behind-the-scene, and a new paid Subscription will be created to replace the old one. Again, the new paid Subscription is based on the Level, pricing, and terms that you specify below. If you need to give Customers some sort of grace period when/if they upgrade to a more expensive plan, please feel free to handle this through the application of free days, or with special pricing configured below./em/p' . "\n" ; echo 'pemstrong*Integrating Conditionals*/strong Since each Modification Form is configured for a specific Level, you may want to create multiple Modification Forms, one for each combination you intend to make available. s2Member\'s API Conditionals can help you display the proper Form to each Customer, based on the status of their existing account. For further details, see: codes2Member - API Scripting/code./em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; /**/ echo 'pModification: select id="ws-plugin--s2member-pro-modification-level"' . "\n" ; /**/ for ( $n = 1 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) { echo 'optgroup label="Level #' . $n . '"' . "\n" ; echo 'option value="upgrade:' . $n . '"↑ Upgrade To Level #' . $n . '/option' . "\n" ; echo ( $n $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'option value="downgrade:' . $n . '"↓ Downgrade To Level #' . $n . '/option' . "\n" : '' ; echo '/optgroup' . "\n" ; /**/ echo ( $n $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ) ? 'option disabled="disabled"/option' . "\n" : '' ; } /**/ echo '/select/p' . "\n" ; /**/ echo 'p id="ws-plugin--s2member-pro-modification-trial-line"I\'ll offer the first input type="text" id="ws-plugin--s2member-pro-modification-trial-period" value="0" size="6" / select id="ws-plugin--s2member-pro-modification-trial-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-membership-trial-terms.html" ) . '/select @ $input type="text" id="ws-plugin--s2member-pro-modification-trial-amount" value="0.00" size="4" //p' . "\n" ; echo 'pspan id="ws-plugin--s2member-pro-modification-trial-then"Then, /spanI want to charge: $input type="text" id="ws-plugin--s2member-pro-modification-amount" value="0.01" size="4" / / select id="ws-plugin--s2member-pro-modification-term"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-membership-regular-terms.html" ) . '/select/p' . "\n" ; echo 'pDescription: input type="text" id="ws-plugin--s2member-pro-modification-desc" value="Description and pricing details here." size="68" //p' . "\n" ; echo 'pCheckout Page Style a href="#" tabindex="-1"[?]/a: input type="text" id="ws-plugin--s2member-pro-modification-page-style" value="paypal" size="18" / select id="ws-plugin--s2member-pro-modification-currency"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-currencies.html" ) . '/select input type="button" value="Generate Form Code" class="button-primary" //p' . "\n" ; echo 'p' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? ' style="display:none;"' : '' ) . 'Custom Capabilities ( comma-delimited ) a href="#" tabindex="-1"[?]/a input type="text" id="ws-plugin--s2member-pro-modification-ccaps" size="40" maxlength="125" //p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-checkout-form-shortcode.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( "1" ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%level_label%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level1_label" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/\/]$/" , 'modify="1" /]' , $ws_plugin__s2member_pro_temp_s ) ; /* Adds modify="1" to the end of the Shortcode. */ echo 'input id="ws-plugin--s2member-pro-modification-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="PayPal® Pro Billing Update Forms"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-update-forms-section"' . "\n" ; echo 'h3One Form Does It All For Billing Updates ( copy/paste )/h3' . "\n" ; echo 'pAn Update Form can be provided to existing Members, as a way for them to update their billing information; without modifying their existing paid Subscription in any way. For instance, a Customer may need to update their billing information, because their credit card is expiring, or because they moved their bank account./p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-update-form-shortcode.html" ) ) ; echo 'input id="ws-plugin--s2member-pro-update-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="PayPal® Pro Billing Cancellation Forms"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-cancellation-forms-section"' . "\n" ; echo 'h3One Form Does It All For Cancellations ( copy/paste )/h3' . "\n" ; echo 'pAccording to PayPal\'s policy on recurring billing, you MUST provide each and every Customer with an easy to way to cancel future charges. Generating a Cancellation Form here, and making that Form available to all Customers is our recommendation. For further details and legalities, please visit the a href="https://www.x.com/" target="_blank" rel="external"PayPal® Developer Network/a./p' . "\n" ; echo 'pemstrong*Cancellation Process*/strong Very simple. A Member clicks a link to a Post/Page that contains a Cancellation Form you\'ve generated. The Member clicks the Submit button to confirm the cancellation. s2Member is notified silently behind-the-scene, and will immediately cancel all future billing. s2Member will later terminate their account access, at the correct point in time. This works in conjunction with the s2Member Auto-EOT System. For further details, see: codes2Member - PayPal® Options - EOT Behavior/code./em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-cancellation-form-shortcode.html" ) ) ; echo 'input id="ws-plugin--s2member-pro-cancellation-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="PayPal® Member Registration Access Links"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-reg-links-section"' . "\n" ; echo 'h3Registration Access Link Generator ( for Customer Service )/h3' . "\n" ; echo 'ps2Member Pro Forms consolidate the Registration/Checkout process into a single-step solution, so it is unlikely that you will ever need this tool. That being said, if you DO need to deal with a Customer Service issue that requires a simple paid Registration Access Link to be created manually, you can use this tool for that. Alternatively, you can create their account yourself/manually by going to codes2Member - Add A Member/code. Either of these methods will work fine./p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'pPaid Membership Level#: select id="ws-plugin--s2member-pro-reg-link-level"' . "\n" ; for ( $n = 1 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) echo 'option value="' . $n . '"s2Member Level #' . $n . '/option' . "\n" ; echo '/select/p' . "\n" ; echo 'pPaid Subscr. ID: input id="ws-plugin--s2member-pro-reg-link-subscr-id" type="text" value="" size="50" / a href="#" tabindex="-1"[?]/a/p' . "\n" ; echo 'pCustom String Value: input id="ws-plugin--s2member-pro-reg-link-custom" type="text" value="' . esc_attr ( $_SERVER [ "HTTP_HOST" ] ) . '" size="30" / a href="#" HTTP_HOST" ] ) ) . '\\\'\\\' attribute of your Shortcode. This Custom Value, MUST always start with your domain name. However, you can also pipe delimit additional values after your domain, if you need to.\\n\\nFor example:\n' . c_ws_plugin__s2member_utils_strings:: esc_sq ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) . '|cv1|cv2|cv3\'); return false;" tabindex="-1"[?]/a input type="button" value="Generate Access Link" class="button-primary" / img id="ws-plugin--s2member-pro-reg-link-loading" src="' . esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "dir_url" ] ) . '/images/ajax-loader.gif" alt="" style="display:none;" //p' . "\n" ; echo 'p' . ( ( is_multisite ( ) && c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) && ! is_main_site ( ) ) ? ' style="display:none;"' : '' ) . 'Custom Capabilities ( comma-delimited ) a href="#" tabindex="-1"[?]/a input type="text" id="ws-plugin--s2member-pro-reg-link-ccaps" size="40" maxlength="125" onkeyup="if(this.value.match(/[^a-z_0-9,]/)) this.value = jQuery.trim (jQuery.trim (this.value).replace (/[ \-]/g, \'_\').replace (/[^A-Z_0-9,]/gi, \'\').toLowerCase ());" //p' . "\n" ; echo 'pFixed Term Length ( for Buy Now transactions ): input id="ws-plugin--s2member-pro-reg-link-fixed-term" type="text" value="" size="10" / a href="#" [?]/a/p' . "\n" ; echo 'p id="ws-plugin--s2member-pro-reg-link" style="font-family:Consolas, monospace; display:none;"/p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="PayPal® Specific Post/Page (Buy Now) Forms"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-sp-forms-section"' . "\n" ; echo 'h3Pro Form Generator For Specific Post/Page Forms/h3' . "\n" ; echo 'ps2Member now supports an additional layer of functionality ( very powerful ), which allows you to sell access to specific Posts/Pages that you\'ve created in WordPress®. Specific Post/Page Access works independently from Member Level Access. That is, you can sell an unlimited number of Posts/Pages using "Buy Now" functionality. Your Customers will NOT be required to have a Membership Account with your site in order to receive access. If they are already a Member, that\'s fine, but they won\'t need to be./p' . "\n" ; echo 'pIn other words, Customers will NOT need to login, just to receive access to the Specific Post/Page they purchased access to. s2Member will immediately redirect the Customer to the Specific Post/Page after checkout is completed successfully. An email is also sent to the Customer with a link ( see: codes2Member - PayPal® Options - Specific Post/Page Email/code ). Authentication is handled automatically through self-expiring links, good for 72 hours by default./p' . "\n" ; echo 'pSpecific Post/Page Access, is sort of like selling a product. Only, instead of shipping anything to the Customer, you just give them access to a specific Post/Page on your site; one that you created in WordPress®. A Specific Post/Page that is protected by s2Member, might contain a download link for your eBook, access to file & music downloads, access to additional support services, and the list goes on and on. The possibilities with this are endless; as long as your digital product can be delivered through access to a WordPress® Post/Page that you\'ve created. To protect Specific Posts/Pages, please see: codes2Member - Restriction Options - Specific Post/Page Access/code. Once you\'ve configured your Specific Post/Page Restrictions, those Posts/Pages will be available in the menus below./p' . "\n" ; echo 'pVery simple. All you do is customize the form fields provided, for each Post/Page that you plan to sell. Then press (Generate Form Code). These special PayPal® Forms are customized to work with s2Member seamlessly. You can even Package Additional Posts/Pages together into one transaction. em* Forms are NOT saved here. This is only a Form Generator. Once you\'ve generated your Form, copy/paste it into any Post/Page you like. You\'ll want to provide your visitors with a link to the Post/Page where this Form is located./em/p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-leading-id"' . "\n" ; echo 'option value=""— Select a Leading Post/Page that you\'ve protected —/option' . "\n" ; /**/ $ws_plugin__s2member_pro_temp_a_pp = ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) ? ( array ) get_posts ( "post_type=any&include=" . $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) : array ( ) ; /**/ $ws_plugin__s2member_pro_temp_a_pp_excludes = array ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "login_welcome_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "membership_options_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "file_download_limit_exceeded_page" ] ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_posts" ] ) ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_pages" ] ) ) ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-additional-ids" multiple="multiple" style="height:100px;"' . "\n" ; echo 'optgroup label="— Package Additional Posts/Pages that you\'ve protected —"' . "\n" ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/optgroup/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pI want to charge: $input type="text" id="ws-plugin--s2member-pro-sp-amount" value="0.01" size="4" / / select id="ws-plugin--s2member-pro-sp-hours"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-sp-hours.html" ) . '/select/p' . "\n" ; echo 'pDescription: input type="text" id="ws-plugin--s2member-pro-sp-desc" value="Description and pricing details here." size="68" //p' . "\n" ; echo 'pCheckout Page Style a href="#" tabindex="-1"[?]/a: input type="text" id="ws-plugin--s2member-pro-sp-page-style" value="paypal" size="18" / select id="ws-plugin--s2member-pro-sp-currency"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-currencies.html" ) . '/select input type="button" value="Generate Form Code" class="button-primary" //p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; echo 'strongWordPress® Shortcode:/strong ( recommended for both the WordPress® Visual & HTML Editors )br /' . "\n" ; $ws_plugin__s2member_pro_temp_s = trim ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/shortcodes/paypal-sp-checkout-form-shortcode.html" ) ) ; $ws_plugin__s2member_pro_temp_s = preg_replace ( "/%%custom%%/" , c_ws_plugin__s2member_utils_strings:: esc_ds ( esc_attr ( $_SERVER [ "HTTP_HOST" ] ) ) , $ws_plugin__s2member_pro_temp_s ) ; echo 'input id="ws-plugin--s2member-pro-sp-shortcode" type="text" value="' . format_to_edit ( $ws_plugin__s2member_pro_temp_s ) . '" style="font-family:Consolas, monospace; width:99%;" /' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-group" title="PayPal® Specific Post/Page Access Links"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-sp-links-section"' . "\n" ; echo 'h3Specific Post/Page Link Generator ( for Customer Service )/h3' . "\n" ; echo 'ps2Member automatically generates Specific Post/Page Links for your Customers after checkout, and also sends them a link in a Confirmation Email. However, if you ever need to deal with a Customer Service issue that requires a new Specific Post/Page Link to be created manually, you can use this tool for that./p' . "\n" ; /**/ echo 'table class="form-table"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr' . "\n" ; /**/ echo 'td' . "\n" ; echo 'form onsubmit="return false;"' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-link-leading-id"' . "\n" ; echo 'option value=""— Select a Leading Post/Page that you\'ve protected —/option' . "\n" ; /**/ $ws_plugin__s2member_pro_temp_a_pp = ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) ? ( array ) get_posts ( "post_type=any&include=" . $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "specific_ids" ] ) : array ( ) ; /**/ $ws_plugin__s2member_pro_temp_a_pp_excludes = array ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "login_welcome_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "membership_options_page" ] , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "file_download_limit_exceeded_page" ] ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_posts" ] ) ) ; /**/ for ( $n = 0 ; $n = $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "levels" ] ; $n ++ ) $ws_plugin__s2member_pro_temp_a_pp_excludes = array_merge ( $ws_plugin__s2member_pro_temp_a_pp_excludes , preg_split ( "/[\r \n \t\s;,]+/" , $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "o" ] [ "level" . $n . "_pages" ] ) ) ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-link-additional-ids" multiple="multiple" style="height:100px; min-width:450px;"' . "\n" ; echo 'optgroup label="— Package Additional Posts/Pages that you\'ve protected —"' . "\n" ; /**/ foreach ( ( $ws_plugin__s2member_pro_temp_a = $ws_plugin__s2member_pro_temp_a_pp ) as $ws_plugin__s2member_pro_temp_o ) if ( ! in_array ( $ws_plugin__s2member_pro_temp_o - ID , $ws_plugin__s2member_pro_temp_a_pp_excludes ) ) echo 'option value="' . esc_attr ( $ws_plugin__s2member_pro_temp_o - ID ) . '"' . esc_html ( $ws_plugin__s2member_pro_temp_o - post_title ) . '/option' . "\n" ; /**/ echo '/optgroup/select a href="#" tabindex="-1"[?]/a/p' . "\n" ; /**/ echo 'pselect id="ws-plugin--s2member-pro-sp-link-hours"' . file_get_contents ( dirname ( dirname ( __FILE__ ) ) . "/templates/options/paypal-sp-hours.html" ) . '/select input type="button" value="Generate Access Link" class="button-primary" / img id="ws-plugin--s2member-pro-sp-link-loading" src="' . esc_attr ( $GLOBALS [ "WS_PLUGIN__" ] [ "s2member" ] [ "c" ] [ "dir_url" ] ) . '/images/ajax-loader.gif" alt="" style="display:none;" //p' . "\n" ; echo 'p id="ws-plugin--s2member-pro-sp-link" style="font-family:Consolas, monospace; display:none;"/p' . "\n" ; echo '/form' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ if ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) { echo 'div class="ws-menu-page-group" title="Custom Return URLs On Success"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-forms-success-section"' . "\n" ; echo 'h3Custom Return URLs On Success ( optional, for developers )/h3' . "\n" ; echo 'ps2Member Pro opens the door for Custom Return URLs upon success. You can add a special attribute to any Form Shortcode ( codesuccess="/my-thank-you-page/"/code ). This makes it possible to integrate PayPal® Pro Forms in very creative ways; and even receive/verify Replacement Code variables, as needed. For example, ( codesuccess="/my-thank-you-page/?subscr_id=%%subscr_id%%"/code )./p' . "\n" ; echo 'pemA Custom Return URL is 100% optional. In fact, if you only need to obtain details for the purpose of tracking sales, you should just use the simpler API Tracking methods provided by s2Member, under: codes2Member - API / Tracking/code. In other words, if you don\'t use the codesuccess=""/code attribute in your Shortcode, s2Member will handle things gracefully, all on its own. So using a Custom Return URL is only necessary when you need advanced customization for one reason or another./em/p' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Free Registration Forms ( a href="#" class="ws-dotted-link"open/close/a )/h3' . "\n" ; echo 'div id="ws-plugin--s2member-pro-forms-success-free-registration" style="display:none;"' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%role%%/code = The Role ID code( subscriber, s2member_level[0-9]+, administrator, editor, author, contributor )/code./li' . "\n" ; echo 'licode%%level%%/code = The Level number code( 0, 1, 2, 3, 4 )/code. ( emdeprecated, no longer recommended; use code%%role%%/code/em )/li' . "\n" ; echo 'licode%%ccaps%%/code = Custom Capabilities. Ex: codemusic,videos,free_gift/code ( emin comma-delimited format/em )./li' . "\n" ; echo 'licode%%auto_eot_time%%/code = Auto-EOT Time ( if applicable ). Ex: code1299925670/code ( emunix timestamp/em )./li' . "\n" ; echo 'licode%%user_first_name%%/code = The First Name of the Member who registered their Username./li' . "\n" ; echo 'licode%%user_last_name%%/code = The Last Name of the Member who registered their Username./li' . "\n" ; echo 'licode%%user_full_name%%/code = The Full Name ( First & Last ) of the Member who registered their Username./li' . "\n" ; echo 'licode%%user_email%%/code = The Email Address of the Member who registered their Username./li' . "\n" ; echo 'licode%%user_login%%/code = The Username the Member selected during registration./li' . "\n" ; echo 'licode%%user_pass%%/code = The Password selected or generated during registration./li' . "\n" ; echo 'licode%%user_ip%%/code = The User\'s IP Address, via code$_SERVER["REMOTE_ADDR"]/code./li' . "\n" ; echo 'licode%%user_id%%/code = A unique WordPress® User ID generated during registration./li' . "\n" ; echo 'licode%%response%%/code = A successful response message that *would* have been displayed to the Customer, had they NOT been redirected to your Custom Return URL upon success. This may contain some basic HTML. For instance, it might contain a link to the login page. You don\'t have to use this. You can generate your own response if you like./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Registration Fields are also supported here:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%date_of_birth%%/code would be valid; if you have a Custom Registration Field with the ID codedate_of_birth/code./li' . "\n" ; echo 'licode%%street_address%%/code would be valid; if you have a Custom Registration Field with the ID codestreet_address/code./li' . "\n" ; echo 'licode%%country%%/code would be valid; if you have a Custom Registration Field with the ID codecountry/code./li' . "\n" ; echo 'liemcode%%etc, etc...%%/code strongsee:/strong s2Member - General Options - Custom Registration Fields/em./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Replacement Codes can also be inserted using these instructions:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%cv0%%/code = The domain of your site, which is passed through the `custom` attribute in your Shortcode./li' . "\n" ; echo 'licode%%cv1%%/code = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute; inside your Shortcode, like this: codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|cv1|cv2|cv3"/code. You can have an unlimited number of custom variables. Obviously, this is for advanced webmasters; but the functionality has been made available for those who need it./li' . "\n" ; echo '/ul' . "\n" ; echo 'strongThis example uses cv1 to record a special marketing campaign:/strongbr /' . "\n" ; echo 'em( The campaign ( i.e. christmas-promo ) could be referenced using code%%cv1%%/code )/embr /' . "\n" ; echo 'codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|christmas-promo"/code' . "\n" ; echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Membership Sales / Signups & Modifications ( a href="#" class="ws-dotted-link"open/close/a )/h3' . "\n" ; echo 'div id="ws-plugin--s2member-pro-forms-success-sales" style="display:none;"' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%subscr_id%%/code = The PayPal® Subscription ID, which remains constant throughout any & all future payments. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%initial%%/code = The Initial Fee charged during signup. If you offered a 100% Free Trial, this will be code0/code. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%regular%%/code = The Regular Amount of the Subscription. This value is codealways 0/code, no matter what. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%recurring%%/code = This is the amount that will be charged on a recurring basis, or code0/code if non-recurring. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%first_name%%/code = The First Name of the Customer who purchased the Membership Subscription./li' . "\n" ; echo 'licode%%last_name%%/code = The Last Name of the Customer who purchased the Membership Subscription./li' . "\n" ; echo 'licode%%full_name%%/code = The Full Name ( First & Last ) of the Customer who purchased the Membership Subscription./li' . "\n" ; echo 'licode%%payer_email%%/code = The Email Address of the Customer who purchased the Membership Subscription./li' . "\n" ; echo 'licode%%item_number%%/code = The Item Number ( colon separated codeemlevel:custom_capabilities:fixed term/em/code ) for the Membership Subscription./li' . "\n" ; echo 'licode%%item_name%%/code = The Item Name ( as provided by the codedesc=""/code attribute in your Shortcode, which briefly describes the Item Number )./li' . "\n" ; echo 'licode%%initial_term%%/code = This is the term length of the Initial Period. This will be a numeric value, followed by a space, then a single letter. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%regular_term%%/code = This is the term length of the Regular Period. This will be a numeric value, followed by a space, then a single letter. [ a href="#" ?/a ]/li' . "\n" ; echo 'licode%%modification%%/code = code1/code if/when a Billing Modification has just taken place; otherwise code0/code indicates a new Customer./li' . "\n" ; echo 'licode%%user_first_name%%/code = The First Name listed on their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_last_name%%/code = The Last Name listed on their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_full_name%%/code = The Full Name listed on their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_email%%/code = The Email Address associated with their User account. This might be different than what is on file with your Payment Gateway./li' . "\n" ; echo 'licode%%user_login%%/code = The Username associated with their account. The Customer created this during registration./li' . "\n" ; echo 'licode%%user_ip%%/code = The Customer\'s IP Address, detected during checkout via code$_SERVER["REMOTE_ADDR"]/code./li' . "\n" ; echo 'licode%%user_id%%/code = A unique WordPress® User ID that references this account in the WordPress® database./li' . "\n" ; echo 'licode%%response%%/code = A successful response message that *would* have been displayed to the Customer, had they NOT been redirected to your Custom Return URL upon success. This may contain some basic HTML. For instance, it might contain a link to the login page. You don\'t have to use this. You can generate your own response if you like./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Registration Fields are also supported here:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%date_of_birth%%/code would be valid; if you have a Custom Registration Field with the ID codedate_of_birth/code./li' . "\n" ; echo 'licode%%street_address%%/code would be valid; if you have a Custom Registration Field with the ID codestreet_address/code./li' . "\n" ; echo 'licode%%country%%/code would be valid; if you have a Custom Registration Field with the ID codecountry/code./li' . "\n" ; echo 'liemcode%%etc, etc...%%/code strongsee:/strong s2Member - General Options - Custom Registration Fields/em./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Replacement Codes can also be inserted using these instructions:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%cv0%%/code = The domain of your site, which is passed through the `custom` attribute in your Shortcode./li' . "\n" ; echo 'licode%%cv1%%/code = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute; inside your Shortcode, like this: codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|cv1|cv2|cv3"/code. You can have an unlimited number of custom variables. Obviously, this is for advanced webmasters; but the functionality has been made available for those who need it./li' . "\n" ; echo '/ul' . "\n" ; echo 'strongThis example uses cv1 to record a special marketing campaign:/strongbr /' . "\n" ; echo 'em( The campaign ( i.e. christmas-promo ) could be referenced using code%%cv1%%/code )/embr /' . "\n" ; echo 'codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|christmas-promo"/code' . "\n" ; echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Specific Post/Page Transactions ( a href="#" class="ws-dotted-link"open/close/a )/h3' . "\n" ; echo 'div id="ws-plugin--s2member-pro-forms-success-sp-sales" style="display:none;"' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%sp_access_url%%/code = The full URL ( generated by s2Member ) where the Customer can gain access./li' . "\n" ; echo 'licode%%sp_access_exp%%/code = Human readable expiration for code%%sp_access_url%%/code. Ex: em( link expires in code%%sp_access_exp%%/code )/em./li' . "\n" ; echo 'licode%%txn_id%%/code = The PayPal® Transaction ID. PayPal® assigns a unique identifier for every purchase./li' . "\n" ; echo 'licode%%amount%%/code = The full Amount of the sale. Most affiliate programs calculate commissions from this./li' . "\n" ; echo 'licode%%first_name%%/code = The First Name of the Customer who purchased Specific Post/Page Access./li' . "\n" ; echo 'licode%%last_name%%/code = The Last Name of the Customer who purchased Specific Post/Page Access./li' . "\n" ; echo 'licode%%full_name%%/code = The Full Name ( First & Last ) of the Customer who purchased Specific Post/Page Access./li' . "\n" ; echo 'licode%%payer_email%%/code = The Email Address of the Customer who purchased Specific Post/Page Access./li' . "\n" ; echo 'licode%%user_ip%%/code = The Customer\'s IP Address, detected during checkout via code$_SERVER["REMOTE_ADDR"]/code./li' . "\n" ; echo 'licode%%item_number%%/code = The Item Number. Ex: codeemsp:13,24,36:72/em/code ( translates to: codeemsp:comma-delimited IDs:expiration hours/em/code )./li' . "\n" ; echo 'licode%%item_name%%/code = The Item Name ( as provided by the codedesc=""/code attribute in your Shortcode, which briefly describes the Item Number )./li' . "\n" ; echo 'licode%%response%%/code = A successful response message that *would* have been displayed to the Customer, had they NOT been redirected to your Custom Return URL upon success. This may contain some basic HTML. For instance, a link to the Specific Post/Page. You don\'t have to use this. You can generate your own response if you like./li' . "\n" ; echo '/ul' . "\n" ; /**/ echo 'strongCustom Replacement Codes can also be inserted using these instructions:/strong' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%cv0%%/code = The domain of your site, which is passed through the `custom` attribute in your Shortcode./li' . "\n" ; echo 'licode%%cv1%%/code = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute; inside your Shortcode, like this: codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|cv1|cv2|cv3"/code. You can have an unlimited number of custom variables. Obviously, this is for advanced webmasters; but the functionality has been made available for those who need it./li' . "\n" ; echo '/ul' . "\n" ; echo 'strongThis example uses cv1 to record a special marketing campaign:/strongbr /' . "\n" ; echo 'em( The campaign ( i.e. christmas-promo ) could be referenced using code%%cv1%%/code )/embr /' . "\n" ; echo 'codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|christmas-promo"/code' . "\n" ; echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Cancellations & Billing Updates ( a href="#" class="ws-dotted-link"open/close/a )/h3' . "\n" ; echo 'div id="ws-plugin--s2member-pro-forms-success-cancellations-updates" style="display:none;"' . "\n" ; echo 'ul style="margin: 10px 0 10px 20px; list-style: disc outside;"' . "\n" ; echo 'licode%%response%%/code = A successful response message that *would* have been displayed to the Customer, had they NOT been redirected to your Custom Return URL upon success. This may contain some basic HTML. For instance, a link back to their account page. You don\'t have to use this. You can generate your own response if you like./li' . "\n" ; echo '/ul' . "\n" ; echo '/div' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Verify The Integrity Of Replacement Codes ( a href="#" class="ws-dotted-link"open/close/a )/h3' . "\n" ; echo 'div id="ws-plugin--s2member-pro-forms-success-verification" style="display:none;"' . "\n" ; echo 'pIf you know a little PHP, you can verify the integrity of the Replacement Codes returned by s2Member. This is important, because in this particular situation, Replacement Codes are passed publicly in the query string of your Custom Return URL. In other words, a Customer could manually change one of the values; like the dollar amounts. For this reason, you should always verify the integrity of the details being returned to any processing routines that receive this information. In the PHP code for your Custom Return URL, you can use this s2Member API Function: codes2member_pro_paypal_s2p_v_query_ok()/code. Here is an example:/p' . "\n" ; echo 'p1. strongShortcode attribute:/strong codesuccess="/thank-you/?subscr_id=%%subscr_%%&initial=%%initial%%&regular=%%regular%%"/code/p' . "\n" ; echo 'p2. strongs2Member returns Customer to:/strong code/thank-you/?subscr_id=123&initial=0.00&regular=24.95&s2p-v=234098234-23409sdfs234sd234209sdf/code/p' . "\n" ; echo 'p3. strongNow, in your Custom Return Page, you will need to do this before trusting anything:/strong/p' . "\n" ; echo 'p' . c_ws_plugin__s2member_utils_strings:: highlight_php ( file_get_contents ( dirname ( __FILE__ ) . "/code-samples/paypal-s2p-v-query-ok-1.php" ) ) . '/p' . "\n" ; echo 'ps2Member will only verify a query string for up to 10 seconds. After 10 seconds, codes2member_pro_paypal_s2p_v_query_ok()/code will always return codefalse/code, even if the integrity of the query string is valid. This prevents a Customer from bookmarking your Return URL; thereby causing duplicate commissions; in case you\'re using it for tracking purposes. Again, if you only need to obtain details for the purpose of tracking sales, you should just use the simpler API Tracking methods provided by s2Member, under: codes2Member - API / Tracking/code. The API Tracking methods are specifically designed for tracking sales, exactly ONE time for each Customer./p' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'pemIf it is your intention to allow Customers to bookmark your Custom Return URL, you can still do that. Just be aware that codes2member_pro_paypal_s2p_v_query_ok()/code will return codefalse/code after the first 10 seconds. If you want to verify after 10 seconds, you can pass a second argument to the function, like this:/em/p' . "\n" ; echo 'p' . c_ws_plugin__s2member_utils_strings:: highlight_php ( file_get_contents ( dirname ( __FILE__ ) . "/code-samples/paypal-s2p-v-query-ok-2.php" ) ) . '/p' . "\n" ; /**/ echo 'div class="ws-menu-page-hr"/div' . "\n" ; /**/ echo 'h3Could a Customer change the timestamp in the URL?/h3' . "\n" ; echo 'pBased on the structure of the URL, it would appear possible; however, it\'s NOT. s2Member uses an advanced checksum./p' . "\n" ; echo 'h3Can I get rid of the codes2p-v/code variable?/h3' . "\n" ; echo 'pNo, this variable is always passed to your Custom Return URL, it\'s for important verification purposes./p' . "\n" ; echo '/div' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; } /**/ echo 'div class="ws-menu-page-group" title="Shortcode Attributes ( Explained )"' . "\n" ; /**/ echo 'div class="ws-menu-page-section ws-plugin--s2member-pro-shortcode-attrs-section"' . "\n" ; echo 'h3Shortcode Attributes ( Explained In Full Detail )/h3' . "\n" ; echo 'pWhen you generate a Form, s2Member will make a a href="http://codex.wordpress.org/Shortcode_API#Overview" target="_blank" rel="external"Shortcode/a available to you. Like most Shortcodes for WordPress®, s2Member reads Attributes in your Shortcode. These Attributes will be pre-configured by one of s2Member\'s Form Generators automatically; so there really is nothing more you need to do. However, many site owners like to know exactly how these Shortcode Attributes work. Below, is a brief overview of each possible Shortcode Attribute./p' . "\n" ; /**/ echo 'table class="form-table" style="margin-top:0;"' . "\n" ; echo 'tbody' . "\n" ; echo 'tr style="padding-top:0;"' . "\n" ; /**/ echo 'td style="padding-top:0;"' . "\n" ; echo 'ul' . "\n" ; echo 'licodeaccept="paypal,visa,mastercard,amex,discover,maestro,solo"/code Accepted Billing Methods. A comma-delimited list of Billing Methods you want to accept. Due to a PayPal® policy, you may NOT exclude PayPal® from this list; s2Member won\'t let you. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodeaccept_via_paypal="paypal"/code Accepted Billing via PayPal®. A comma-delimited list of Billing Methods you want to accept through PayPal®, as opposed to processing them on-site. Due to a PayPal® policy, you may NOT exclude PayPal® from this list; s2Member won\'t let you. strongTip:/strong If you don\'t have a PayPal® Pro account, you can set codeaccept="paypal"/code, or set codeaccept_via_paypal="paypal,visa,mastercard,amex,discover,maestro,solo"/code. With one or both of these configurations, all you need is a PayPal® Standard account with Express Checkout em( which is free )/em. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodeaccept_coupons="1"/code Accept Coupons? Possible values: code0/code = do NOT accept Coupons on this particular Form; code1/code = DO accept Coupon Codes on this particular Form./li' . "\n" ; echo 'licodecancel="0"/code Cancellation Form. Only valid w/ Membership Level Access. Possible values: code0/code = this is NOT a Cancellation Form, code1/code = this IS a Cancellation Form./li' . "\n" ; echo 'licodecaptcha="clean"/code When you set this Attribute, visitors must prove they\'re human by typing a a href="http://en.wikipedia.org/wiki/CAPTCHA" target="_blank" rel="external"captcha/security code/a. Possible values: code0/code = do NOT require a captcha code on this Form; codeclean/code = DO require a captcha code on this Form; using the codeclean/code theme style. Possible a href="http://code.google.com/apis/recaptcha/docs/customization.html" target="_blank" rel="external"theme styles/a include: codered/code, codewhite/code, codeclean/code, and codeblackglass/code. This service is powered by Google\'s reCaptcha system./li' . "\n" ; echo 'licodecc="USD"/code 3 character Currency Code. Not valid when codecancel="1"/code./li' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'licodeccaps="music,videos"/code A comma-delimited list of Custom Capabilities. Only valid w/ Membership Level Access./li' . "\n" : '' ; echo 'licodecoupon="SAVE-10"/code Default/pre-filled Coupon Code. This is optional, and the Coupon Code ( if supplied ) must exist in your Coupon Code configuration./li' . "\n" ; echo 'licodecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '"/code must start with your domain. Additional values can be piped in ( ex: codecustom="' . esc_html ( $_SERVER [ "HTTP_HOST" ] ) . '|cv1|cv2|cv3|etc"/code ). Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodedefault_country_code="US"/code If you set this 2-character value, it will pre-configure the default Country that is selected in the drop-down menu for Checkout and Billing Update Forms. This MUST be an uppercase country code, following the a href="http://www.iso.org/iso/english_country_names_and_code_elements" target="_blank" rel="external"ISO-3166-1 specification/a. If this is empty ( i.e. code""/code ) s2Member will set the default country code automatically; based on currency. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodedesc="Gold Membership @ $29/mo"/code A brief purchase Description. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodedg="0"/code The Digital Goods directive. s2Member will eventually be integrated with a href="https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_IntroducingExpressCheckoutDG" target="_blank" rel="external"Digital Goods/a for inline Express Checkout. But for now, this should always be code0/code./li' . "\n" ; echo 'licodeexp="72"/code Access Expires ( in hours ). Only valid when codesp="1"/code for Specific Post/Page Access./li' . "\n" ; echo 'licodeids="14"/code A Post/Page ID#, or a comma-delimited list of IDs. Only valid when codesp="1"/code for Specific Post/Page Access./li' . "\n" ; echo 'licodelc=""/code Optional 2 character Locale Code em( i.e. Country Code )/em. This controls the interface language used if/when a Customer chooses PayPal® Express Checkout as their payment method. If unspecified, the language is determined by PayPal® Express Checkout when possible, defaulting to codeUS/code emenglish/em when not possible. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodelevel="1"/code Membership Level [1-4] em( or, up to the number of configured Levels )/em. Only valid for Forms providing Membership Level Access, which includes Free Registration Forms too. Free Registration Forms allow a value of codelevel="0"/code whenever coderegister="1"/code for Free Registration. In addition, Free Registration Forms will also allow visitors to register for free, even at higher Levels if you wish. Free Registration Forms will accept any value [0-4] em( or, up to the number of configured Levels )/em./li' . "\n" ; echo 'licodemodify="0"/code Modification directive. Only valid w/ Membership Level Access. Possible values: code0/code = allows Customers to modify their current Subscription or sign up for a new one, code1/code = allows Customers to only modify their current Subscription. When codemodify="1"/code, s2Member will force a Customer to be logged-in before they can fill out the Form ( very handy ). This is slightly different than PayPal® "Button" Codes; there is no "2" option for "Forms"; only code0/code & code1/code are valid values./li' . "\n" ; echo 'licodens="1"/code The emno_shipping/em directive. Possible values: code0/code = prompt for an address, but do not require one, code1/code = do not prompt for a shipping address, code2/code = prompt for an address, and require one. Applies only to PayPal® Express Checkout; because Pro Forms do not ask for a Shipping Address. However, you may request a Shipping Address by creating Custom Fields under: ems2Member - General Options - Custom Registration Fields/em. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licodeps="paypal"/code PayPal® checkout Page Style. Applies only to PayPal® Express Checkout. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licoderegister="0"/code Free Registration Form. Only valid w/ Membership Level Access. Possible values: code0/code = this is NOT a Free Registration Form, code1/code = this IS a Free Registration Form./li' . "\n" ; echo 'licodera="0.01"/code Regular, Buy Now, and/or Recurring Amount. Must be >= code0.01/code. Not valid when codecancel="1"/code./li' . "\n" ; echo 'licoderp="1"/code Regular Period. Only valid w/ Membership Level Access. Must be >= code1/code ( ex: code1/code Week, code2/code Months, code1/code Month, code3/code Days )./li' . "\n" ; echo 'licodert="M"/code Regular Term. Only valid w/ Membership Level Access. Possible values: codeD/code = Days, codeW/code = Weeks, codeM/code = Months, codeY/code = Years, codeL/code = Lifetime./li' . "\n" ; echo 'licoderr="1"/code Recurring directive. Only valid w/ Membership Level Access. Possible values: code0/code = non-recurring "Subscription" with possible Trial Period for free, or at a different Trial Amount; code1/code = recurring "Subscription" with possible Trial Period for free, or at a different Trial Amount; codeBN/code = non-recurring "Buy Now" functionality, no Trial Period possible./li' . "\n" ; echo 'licoderrt=""/code Recurring Times em( i.e. a fixed number of installments )/em. Only valid w/ Membership Level Access. When unspecified, any recurring charges will remain ongoing until cancelled, or until payments start failing. If this is set to code1 or higher/code the regular recurring charges will only continue for X billing cycles, depending on what you specify. This is only valid when coderr="1"/code for recurring "Subscriptions". Please note that a fixed number of installments, also means a fixed period of access. If a Customer\'s billing is monthly, and you set coderrt="3"/code, billing will continue for only 3 monthly installments. After that, billing would stop, and their access to the site would be revoked as well em( based on your EOT Behavior setting under: s2Member - PayPal® Options )/em./li' . "\n" ; echo 'licoderra="2"/code Reattempt failed payments? Possible values: code0/code = do NOT reattempt billing when/if a recurring payment fails; code1 or higher/code = yes, DO reattempt billing when/if a recurring payment fails. With PayPal® Pro integration, PayPal® will retry a maximum of 2 times whenever coderra="2"/code; after that, a Subscription would be terminated due to Max Failed Payments having been reached. With PayPal® Pro integration, the value of this attribute also configures Max Failed Payments. So a setting of coderra="2"/code means that you allow a maximum of 2 failed payments./li' . "\n" ; echo 'licodesp="0"/code Specific Post/Page Form. Possible values: code0/code = this is NOT a Specific Post/Page Access Form, code1/code = this IS a Specific Post/Page Access Form./li' . "\n" ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'licodesuccess=""/code 100% optional. This can be used to create a Custom Return URL on success. Please see the sub-section above titled: emCustom Return URLs on Success/em./li' . "\n" : '' ; echo ( ! is_multisite ( ) || !c_ws_plugin__s2member_utils_conds:: is_multisite_farm ( ) || is_main_site ( ) ) ? 'licodetemplate=""/code 100% optional. This can be a custom template file that exists inside your WordPress® theme directory. For example: codetemplate="checkout.html"/code./li' . "\n" : '' ; echo 'licodeta="0.00"/code Trial Amount. Only valid w/ Membership Level Access. Must be code0/code when codert="L"/code or when coderr="BN"/code./li' . "\n" ; echo 'licodetp="0"/code Trial Period. Only valid w/ Membership Level Access. Must be code0/code when codert="L"/code or when coderr="BN"/code./li' . "\n" ; echo 'licodett="D"/code Trial Term. Only valid w/ Membership Level Access. Possible values: codeD/code = Days, codeW/code = Weeks, codeM/code = Months, codeY/code = Years./li' . "\n" ; echo 'licodeupdate="0"/code Billing Update Form. Only valid w/ Membership Level Access. Possible values: code0/code = this is NOT a Billing Update Form, code1/code = this IS a Billing Update Form./li' . "\n" ; echo '/ul' . "\n" ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; echo '/div' . "\n" ; /**/ echo '/div' . "\n" ; /**/ echo '/td' . "\n" ; /**/ echo 'td class="ws-menu-page-table-r"' . "\n" ; c_ws_plugin__s2member_menu_pages_rs:: display ( ) ; echo '/td' . "\n" ; /**/ echo '/tr' . "\n" ; echo '/tbody' . "\n" ; echo '/table' . "\n" ; /**/ echo '/div' . "\n" ; } } } /**/ new c_ws_plugin__s2member_pro_menu_page_paypal_forms ( ) ; ? [ full view ]s2member-pro\includes\menu-pages\paypal-forms.inc.php Source Code Documentation Packages ( Overview ) Classes Deprecated Todo Index Source Code(!-- :: s-words --)

Statistics: Posted by System Robot — July 11th, 2011, 5:37 pm


]]>
2011-07-09T06:18:32-05:00 http://www.primothemes.com/forums/viewtopic.php?t=13336&p=25631#p25631 <![CDATA[s2Member v111220 / Source Code: s2member-p...]]>
s2Member v111220
Source Code: s2member-pro\includes\menu-pages\paypal-forms.inc.php
Docs updated: December 20, 2011, 9:52 am

Open for public discussion.
(!-- s-words :: --)n/a(!-- :: s-words --)

Statistics: Posted by System Robot — July 9th, 2011, 6:18 am


]]>