latest stable versions: v150827 (changelog)

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

Jason (Lead Developer)

Staff Member

My Latest Replies (From Various Topics)

Viewing 25 replies - 51 through 75 (of 1,909 total)
Author Replies
Author Replies
Posted: Wednesday May 15th, 2013 at 6:51 pm #50037
Staff Member

Do you have any idea where to start on troubleshooting this issue? Would my silent post url have anything to do with it?

Thanks for the follow-up.

No, the silent post integration should not have any impact this.

I would start looking at your authnet-api.log file for log entries that include x_method=cancel and an x_subscription_id matching the old ARB that should have been cancelled. If there is a communication issue between your site and the Authorize.Net API, the log entry should indicate that problem.

In my investigation, I did not find any references to x_method=cancel at all; indicating to me there could be a problem with the Pro Form Shortcode.

If you would like to submit a Dashboard login for me, I’ll run diagnostics for you. Also, please post the s2Member Pro Form Shortcode that’s being used. Please make sure that your Shortcode does not have level="*".

Posted: Wednesday May 15th, 2013 at 2:08 am #50003
Staff Member

Thanks for the follow-up.

So when does S2 cancel it at the end of their subscriptions?

A new purchase (for a new Subscription) results in the old ARB being cancelled (in real-time; during checkout); and a new ARB is created to take it’s place — with the new terms of sale.

If you are seeing an active ARB in your Authorize.Net account which will result in double billing, I suggest terminating (or deactivating) that manually until you can find the underlying cause of this problem on your installation.

I just took a quick at your log files and I’m not seeing an s2Member® demotion referencing `16429099`. However, it’s possible I’m not seeing some of your latest log entries. If s2Member left a demotion note, that would indicate to me the ARB is no longer active?

Posted: Monday May 13th, 2013 at 6:08 pm #49888
Staff Member

Thanks for the heads up guys!

s2Member v130513 was released a short while ago to correct this issue.
Please see: http://www.s2member.com/changelog/#s2-changes-v130513
Posted: Monday May 13th, 2013 at 4:22 pm #49864
Staff Member

Thanks for the heads up on this thread :-)

Any new sale results in a new Paid Subscr. ID (and the old one is cancelled; e.g. the old ARB is terminated).

With TWO exceptions. If level="*" where the customer is making a Buy Now purchase for Independent Custom Capabilities; or if you are selling Specific Post/Page Access via Buy Now functionality.

See: Dashboard -› s2Member® -› Authorize.Net® Pro Forms -› Capability (Buy Now) Forms
See also: Dashboard -› s2Member® -› Authorize.Net® Pro Forms -› Specific Post/Page (Buy Now) Forms


If you are making a Buy Now purchase that does NOT have level="*" it will cancel the previous Subscription and start you on a new one that is costing you only ONE time (e.g. a Buy Now purchase).


If you want to sell something extra, WITHOUT modifying an existing Subscription (of any kind); you should do that with Independent Custom Capabilities (e.g. level="*"), or with Specific Post/Page Access.

All of this assumes the customer is logged in when they make a purchase from you. If an existing customer makes another purchase while they are NOT logged into the site; there is no way for s2Member to associate that customer with an existing account; and therefore any previous ARBs will NOT be cancelled.

We suggest that existing customers be instructed to log into the site before changing their billing plan with you. With s2Member’s Authorize.Net integration, you can force the customer to be logged into the site by adding this Shortcode Attribute to your Pro Form Shortcode.

modify="0" Modification directive. Only valid w/ Membership Level Access. Possible values: 0 = allows Customers to modify their current Subscription or sign up for a new one, 1 = allows Customers to only modify their current Subscription. When modify="1", s2Member will force a Customer to be logged-in before they can fill out the Form (very handy).

See also: Dashboard -› s2Member® -› Authorize.Net® Pro Forms -› Shortcode Attributes (Explained)

Please let us know if problems persist :-)

Posted: Saturday May 11th, 2013 at 5:04 am #49731
Staff Member
This issue was resolved in s2Member v130510. Please see:
http://www.s2member.com/forums/topic/paypal-expired-security-token/page/2/#post-49729
Posted: Saturday May 11th, 2013 at 5:03 am #49730
Staff Member

You’re very welcome. Yea, PayPal is still our favorite processor too :-)

This issue was resolved in s2Member v130510. Please see:
http://www.s2member.com/forums/topic/paypal-expired-security-token/page/2/#post-49729
Posted: Saturday May 11th, 2013 at 4:49 am #49729
Staff Member

Thanks for your patience while we worked through this issue.

s2Member v130510 is now available (among other things, it resolves this issue).
Please see: http://www.s2member.com/changelog/#s2-changes-v130510

Changelog Excerpt:

(s2Member Pro) Updating Payflow Integration w/ Payflow Bug Workaround

Updating Payflow integration to support Billing Agreement IDs (aka: BAID values) when working together with Payflow Express Checkout APIs (and where a site owner is charging on a recurring basis).

This improvement also allows s2Member to work around a Payflow bug where BILLINGTYPE=RecurringPayments results in error #7 (Invalid/Expired TOKEN) whenever Payflow attempts to rebill a customer. s2Member now sets BILLINGTYPE=RecurringBilling; and we pass BAID=B-xxxxxx instead of passing TOKEN=xxxxxx.

Site owners also need to contact PayPal MTS and ask to have Reference Transactions (free) enabled for Recurring Billing service. If you attempt to checkout through an s2Member Pro Form, and you get error #11452 “Merchant not enabled for Reference transactions”; this is the reason.

You need to enable Reference transactions. If you have accounts at PayPal.com (and also an account at manager.paypal.com); where these accounts are connected to each other; Reference Transactions MUST be enabled in both places. It’s a vetted process, so you are required to contact PayPal MTS about this.

~ However, you ONLY need Recurring Billing service and Reference Transactions enabled IF you’re operating a PayPal Payments Pro (Payflow Edition) account; and only IF you’re charging customers on a recurring basis.

Important To Note:

All of these changes related to Payflow Express Checkout
(as detailed in this changelog entry); impact only ONE specific scenario.

– You have a PayPal Payments Pro (Payflow Edition) account.
– You charge your customers on a recurring basis.
– A customer chooses PayPal as their billing method during checkout.

No other part of s2Member’s integration with Payflow was modified in this release. Credit card transactions were not, and are not, impacted by this bug; or by this update.


Why do I need to contact PayPal MTS about Reference Transactions?

As noted above, s2Member now sets BILLINGTYPE=RecurringBilling; and we pass BAID=B-xxxxxx instead of passing TOKEN=xxxxxx. A `BAID` is a Billing Agreement ID; and this requires your account to have Reference Transactions enabled; in order to process Recurring Billing Profiles via Express Checkout.

Express Checkout is used whenever a customer chooses to use PayPal as their billing method. Reference Transactions (e.g. BAIDs) are not required to process credit card transactions. Only for Express Checkout via PayPal, where a customer has specifically chosen to pay you via PayPal.

Why BILLINGTYPE=RecurringBilling instead of BILLINGTYPE=RecurringPayments?

We do this because there is a bug (on the Payflow side of things) with BILLINGTYPE=RecurringPayments; which actually stems (in part) from the way PayPal enables Recurring Billing service under the Payflow Edition. They enable Recurring Billing (as opposed to Recurring Payments). Anyway, this is all quite confusing, and explaining this in full detail would require another dedicated article about PayPal’s naming conventions :-) We may publish more information on this in the s2Member KB over the next few days.


How To Resolve (Invalid/Expired TOKEN) during rebills.

  • Upgrade to s2Member and s2Member Pro v130510+.
  • Call (or email) PayPal Merchant Technical Support (MTS). Ask them to enable Reference Transactions for your Payflow API Integration. You need to process Recurring Billing (Billing Agreements) via Express Checkout; and this requires Reference Transactions be enabled.

Rectifying Existing Recurring Payments profiles created via Payflow

All site owners that have collected Recurring Payments Profiles via Express Checkout (as opposed to Recurring Billing Profiles, are broken. If they wish to rectify this, they will need to contact PayPal MTS and request assistance. PayPal’s own API brought these in, yet they are unable to deal with them properly. The Invalid TOKEN error that occurs currently, will need to be resolved by PayPal MTS. The maintenance release of s2Member v130510 will only work around this issue for future transactions you process.

When/if you call PayPal MTS, you should explain the following.

I was processing Recurring Profiles through the Payflow API as BILLINGTYPE=RecurringPayments with a TOKEN; and Payflow keeps triggering the error Invalid/Expired TOKEN whenever rebills occur. What can I do?

My software vendor has since changed this, so we are now sending these through as BILLINGTYPE=RecurringBilling and we include a BAID as well. So this is resolved going forward. However, existing profiles remain broken. What can you do for me?

Note from s2Member:
At this time, the only solution we are aware of, is to contact PayPal MTS and ask them to correct the problem for you (from their end). Ask PayPal to convert these & create Billing Agreements for them, or to correct the error with expired TOKEN values related to BILLINGTYPE=RecurringPayments. We suggest calling PayPal MTS to discuss this.


Payflow Recurring Billing Profiles Don’t Show Up @ PayPal.com?

When you have a PayPal Payments Pro (Payflow Edition) account, Recurring Billing is handled via Payflow APIs (this is a PayPal standard, and NOT an s2Member standard). As a result, all Recurring Billing Profiles are maintained (i.e. viewable/editable) at manager.paypal.com. If you don’t have a PayPal Manager login, please contact PayPal MTS and request one.

Posted: Monday May 6th, 2013 at 11:32 pm #49336
Staff Member
UPDATE: We are still working with PayPal to resolve this issue, but it appears that we are getting closer to a resolution. A new release of s2Member will be forthcoming (next day or two); to help resolve this issue related to Express Checkout under a Payflow integration.
Posted: Monday May 6th, 2013 at 11:32 pm #49335
Staff Member
UPDATE: We are still working with PayPal to resolve this issue, but it appears that we are getting closer to a resolution. A new release of s2Member will be forthcoming (next day or two); to help resolve this issue related to Express Checkout under a Payflow integration.
Posted: Sunday Apr 28th, 2013 at 4:47 am #48611
Staff Member
UPDATE: This issue has been escalated to PayPal MTS, and we are awaiting a resolution. We will update this thread once we receive confirmation and/or assistance from PayPal MTS.
Posted: Sunday Apr 28th, 2013 at 4:46 am #48610
Staff Member
UPDATE: This issue has been escalated to PayPal MTS, and we are awaiting a resolution. We will update this thread once we receive confirmation and/or assistance from PayPal MTS.
Posted: Friday Apr 26th, 2013 at 9:56 am #48489
Staff Member

Thanks for the heads up on this thread :-)

MultiViews are explained here, they are an Apache standard.
http://httpd.apache.org/docs/2.2/content-negotiation.html

It is not detrimental to the functionality of s2Member, so if you are running a server which is having trouble with that setting, please remove it from the list in the /s2member-files/.htaccess file.

Find this line:
Options +FollowSymLinks -MultiViews -Indexes

Change it to:
Options +FollowSymLinks -Indexes

Posted: Thursday Apr 11th, 2013 at 6:56 am #47167
Staff Member

Thanks for your patience.

~ I apologize for the long delay on this.

I think it with this profil Id: I-M89T1LXF2L6P

I’m sorry but I was unable to find a reference in any of your s2Member® log files related to this ID.

I just had another problem with someone tried to get a membership, but he’s from Germany, every time someone from Germany tried to get a membership I have to do it manually and it working.

I investigated your log files and inspected cases where German customers were attempting checkout. In the cases that I found, you had customers that were attempting to complete checkout via PayPal Express Checkout. s2Member Pro redirected them to PayPal Express Checkout after the customer chose PayPal as their preferred payment method. However, your log files indicate that these customers either:

(a) never returned from PayPal Express Checkout,

or (b) there was a processing failure on the PayPal end that may have prevented s2Member from being notified about the transaction.

I suspect the underlying cause of this could be this setting in your PayPal account.
Please check this section of your PayPal Account: Profile -› Website Payment Preferences

I don’t have an Id for this transaction but it’s the last attempt: his email is: c——-@googlemail.com
Thank you for your help Jason

I found log entries related to this transaction. It was the same case as above. Your log files indicate the customer was redirected to PayPal Express Checkout but never returned from checkout at PayPal.

s2Member’s API call that initiated PayPal Express Checkout succeeded, but this was the last log entry associated with this customer. Therefore, I must assume the customer never returned from PayPal Express Checkout. Or, if they did, your web server refused the connection for some reason (perhaps); you might check your Apache log files for issues related to things like Mod Security or another server-side failure upon the customer’s return.

If this customer returned from PayPal Express Checkout, s2Member did not know about it.

-------- Output string/vars: ( Thu Mar 21, 2013 3:18:25 pm UTC ) --------
RESULT=0&RESPMSG=Verified&TOKEN=EC-1H255967JL939584F&CORRELATIONID=7e92166448630
array (
  'RESULT' => '0',
  'RESPMSG' => 'Verified',
  'TOKEN' => 'EC-1H255967JL939584F',
  'CORRELATIONID' => '7e92166448630',
)

The customer would have been returned to this URL after completing checkout at PayPal.

array (
  'TRXTYPE' => 'A',
  'ACTION' => 'S',
  'TENDER' => 'P',
  'RETURNURL' => 'http://www.m----f----.com/monthly-membership/?s2member_paypal_xco=s2member_pro_paypal_checkout_return',
Posted: Monday Apr 8th, 2013 at 3:47 am #46831
Staff Member

Thanks for the heads up on this thread :-)

In this post you have a screenshot of this happening (i.e. no formatting).
http://www.s2member.com/forums/topic/no-css-formatting-inside-s2member/#lead-topic-46731

Please right-click and choose View Source on that page. Look for a <link rel="stylesheet"&#91;/hilite&#93; that points to s2Member's CSS file and post that for us please.
&#91;/note_box&#93;

You should find something like this in the source view on that page.
&#91;hilite pre_code&#93;
<link rel='stylesheet' id='ws-plugin--s2member-menu-pages-css' href='http://www.example.com/?ws_plugin__s2member_menu_pages_css=217755276&ver=130214-130214-157807781&#039; type='text/css' media='all' />

Posted: Friday Apr 5th, 2013 at 3:10 am #46677
Staff Member
UPDATE: This patch was formally applied to the maintenance release of s2Member v130404.
See changelog: http://www.s2member.com/changelog/#s2-changes-v130404

Please let us know if the problem continues in the latest release of s2Member®. I just made an attempt to reproduce this against the latest version; and with a sub-directory as well. So far everything seems fine.

1. It is a REST.GET.BUCKET instead of REST.GET.OBJECT like the first one.

s2Member® does not issue a REST call of any kind (other than to generate a link and redirect the customer to that link); which results in a RESTful API use on the part of s2Member; but the final call is established on the Amazon side of things, in the way it handles the URL that we generate.

Based on the output in XML that you supplied earlier, I’m not surprised to see that method being processed by the logs. The question is why was it doing that. It sounds like, the URL was corrupted in some way to me. If that came from the previous PATCH file we supplied, please try the official release of s2Member® and report back.

2. The file name is not at the beginning of “GET /” but is a parameter buried unlike “GET /doof.png”

This is to be expected. s2Member® configures the request beyond that of what many simple services will do.

3. Whatever response-requires is it expired a week ago (3/22) instead of today (3/29). (I did these tests last night.

This is to be expected. The expires value is intentionally set in the past, to prevent browser caching. This is simply the Expires: header value (s2 is following standards for this header). It’s NOT the expiration of the Bucket Object itself; which is configured in a separate component of the query string.

Posted: Friday Apr 5th, 2013 at 2:59 am #46676
Staff Member
UPDATE: This patch was formally applied to the maintenance release of s2Member v130404.
See changelog: http://www.s2member.com/changelog/#s2-changes-v130404
Posted: Thursday Mar 28th, 2013 at 10:26 pm #46017
Staff Member

Thanks for the heads up on this thread :-)

I was unable to reproduce this myself. However, it sounds like this problem could be attributed to permission settings on your Bucket and/or a possible index file problem. Please make sure that your S3 Bucket is not publicly available, and that your S3 Bucket is not setup as a Static Host of any kind.

See also: https://forums.aws.amazon.com/message.jspa?messageID=108471

If problems persist, I would contact AWS about this, to find out why files served through authenticated URLs are resulting in a ListBucketResult set for you. This is not a normal occurrence.

Posted: Thursday Mar 28th, 2013 at 9:15 pm #46011
Staff Member

Thanks for the heads up on this thread :-)

@ Matthew Bailey

What you posted looks correct from my end, assuming your API Notification URL leads to the correct domain that was x’d out. Your implementation matches the instructions provided here; which have worked successfully for others. If you continue to have trouble, I would investigate the IP address itself and ensure it matches up with the value that iDevAffiliate has. If you have your iDev installation on a different server, this could be a configuration issue related to the way in which the IP address is collected. iDev may collect one value and s2Member collects another; resulting in a possible inconsistency that results in a mismatch during tracking.

s2Member® uses the server environment variable: $_SERVER['REMOTE_ADDR'] to detect the customer’s IP address. I believe iDev uses the same value (this is a standard), but you can check with them to be sure.

Posted: Friday Mar 22nd, 2013 at 12:08 am #45431
Staff Member

Thanks for the follow-up…

Downgrading a customer can be accomplished by changing their Role on the site.
Please see: Knowledge Base » s2Member® Roles/Capabilities

You will want to set their Role back to a Free Subscriber status.

As for s2Member® doing this through an upgrade or downgrade process, that’s not something that an upgrade/downgrade Button or Pro Form would handle for you, because the Free Subscriber Role is at Level #0; it is reserved for Free Subscribers, or for paying customers that cancelled and were demoted back down. The act of cancelling your account, automatically demotes you back down to a Free Subscriber.

Please see also: Dashboard -› s2Member® -› PayPal® Options -› Automatic EOT Behavior

Posted: Thursday Mar 21st, 2013 at 11:17 am #45352
Staff Member

Thanks for your reply :-)

May I also have a specific Transaction ID which failed to complete processing? You mentioned a specific user before, do you have the original Transaction ID, or Subscription ID; or anything else which I can use to identify that transaction in the logs with?

If you need to post that privately, please use: s2Member® » Private Contact Form

Posted: Thursday Mar 21st, 2013 at 11:04 am #45351
Staff Member

Thanks for your reply :-)

Yes, the new email log should be helpful, and server logs can also be helpful. If your site uses Sendmail, you can check your log files to see if the server is rejecting the email for some reason, or if there is some other problem.

I can tell you this is not a widespread issue, so I will have to assume that it’s something server-specific, or installation-specific. If you are having trouble with the log files, please post those privately and we’ll review them for you. Try to give me something to go on also (i.e. a specific transaction ID, or a specific email address; where I can do a lookup on a specific email message that should have been sent but was not).

Please use: s2Member® » Private Contact Form

Thanks!

Posted: Thursday Mar 21st, 2013 at 9:42 am #45341
Staff Member

Thanks for your reply :-)

No, that is not necessary. Closing this topic.
I feel we have explained this thoroughly for you already.
Posted: Thursday Mar 21st, 2013 at 9:09 am #45333
Staff Member

Thanks for the heads up on this thread :-)

Regarding Subscription Modifications Buttons/Forms generated with s2Member®
Buttons (PayPal® Standard)

With PayPal Standard “Buttons”, a Modification is handled mostly on the PayPal side of things. There are details about this process at the PayPal website, and in the s2Member® documentation built into your Dashboard. The short version goes something like this…

Dashboard -› s2Member® -› PayPal Buttons -› Modification Buttons
*Modification Process* When you send a Member to PayPal® using a Subscription Modification Button, PayPal® will ask them to login. Once they’re logged in, instead of being able to signup for a new Membership, PayPal® will provide them with the ability to upgrade and/or downgrade their existing Membership with you, by allowing them to switch to the Membership Plan that was specified in the Subscription Modification Button. PayPal® handles this nicely, and you’ll be happy to know that s2Member has been pre-configured to deal with this scenario as well, so that everything remains automated. Their Membership Access Level will either be promoted, or demoted, based on the actions they took at PayPal® during the modification process. Once an existing Member completes their Subscription Modification at PayPal®, they’ll be brought back to their Login Welcome Page, instead of to the registration screen.
The rules regarding when/what is used in the next billing cycle, after an upgrade occurs; is left entirely up to PayPal’s system. The techniques they use are discussed here.
Further discussion here and here (really, in several places online).
See also: Dashboard -› s2Member® -› PayPal® Buttons -› Subscr. Modification Buttons


Pro Forms (s2Member® Pro w/ PayPal® Pro Integration)

See: Dashboard -› s2Member® -› PayPal® Pro Forms -› Billing Modification Forms

s2Member® -› PayPal® Pro Forms -› Billing Modification Forms
If 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.

*Modification Process* 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 in your Modification Pro Form.

*Integrating Conditionals* 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: Dashboard -› s2Member -› API Scripting.

*Independent Custom Capabilities* If you just want to sell an existing Member new Custom Capabilities, without affecting their paid Subscription in any way, please see: Dashboard -› s2Member® -› PayPal® Pro Forms -› Capability (Buy Now) Forms. Independent Capability Forms facilitate Buy Now functionality, specifically for Custom Capabilities, without affecting the Customer’s primary Subscription and Membership Level Access.


The original question posted in this thread…

Dmitry Sandal wrote…

Hello!

We have two plans:
$ 7 / month
$ 50 for the first 2 years and then $ 50 / year

When the user selects $50 plan, he paid the full $50 for the first two years.
What happens if he decides to update its plan for $ 7 a month?
Will he get back the $ 50? If not, when it will begin to pay $ 7 a month, after 2 years? After the expiration of the first plan?

If the user cancels their subscription for $ 50 he will have access to the end of the subscription term? But if he decides to make another $ 50 subscription, he will lose the first $ 50?

When the user selects $50 plan, he paid the full $50 for the first two years.
What happens if he decides to update its plan for $ 7 a month?

When you generate your Modification Pro Form, you will need to grant the customer two free years (e.g. what the customer already paid you for); and then have the new billing start at $7/month moving forward beyond those 2 years they’ve already paid you for.

If the user cancels their subscription for $ 50 he will have access to the end of the subscription term?

Yes, the customer would continue to have access (even after cancelling);
for a full two years they have already paid you for. Please see this section of your Dashboard for further details/documentation on this behavior. Dashboard -› s2Member® -› PayPal® Options -› Automatic EOT Behavior

But if he decides to make another $ 50 subscription, he will lose the first $ 50?

Yes, this is possible, because if they purchase again, it wipes out their existing EOT Time, and allows them to start fresh on your site under the terms of their most recent purchase with you. s2Member® does NOT support multiple simultaneous subscriptions for any single customer.

I’m not sure I would term it “loses the original $50”, but I suppose that could happen, depending upon what the customer purchases next (i.e. what your site offers on that next purchase). If your site is providing access to something (normally the case with s2Member); the original $50 may have granted them access to something that their second purchase does not. It could happen, yes.

However, I’m not sure I follow you here completely. If this is happening on your site, you might want sell Custom Capabilities to existing customers instead of completely changing their primary Subscription.

In either case, this type of behavior is not something s2Member® will support natively, because s2Member® does NOT support multiple simultaneous subscriptions for any single customer. When one ends, we deal with the EOT Time for that one. If a new one takes it’s place; we’re now dealing only with the new one (e.g. the customer starts fresh under the terms of their most recent purchase).

Regarding time/date/amount calculations…

I noticed some discussion about this above. While it’s fine to do this (if you want to get very specific about things); this is NOT something that s2Member® will handle for you in any automated way; and this is by design. There are simply too many variables to consider; and too many business models in which one approach may work nicely, while another would handle the situation horribly.

There are also some important limitations on the PayPal® side of things that can prevent s2Member® from handling every possible scenario perfectly; IF we tried to update an existing Recurring Profile in an automated way. Such as raising the dollar amount or changing the frequency of billing; to which there are limitations imposed by PayPal®. This is why s2Member® Pro will actually terminate the previous Recurring Profile and replace it with a new one (to circumvent issues with the PayPal® Pro API when it comes to things like this). An s2Member® Pro Modification replaces the previous Recurring Billing with a new one; very simple. The new terms are dictated by the configuration of your Modification Pro Form. No limitations this way :-)

The point is this. Instead of making these decisions for you, we provide you with the tools you need to determine the proper course of action; depending on the customer; depending on the site, or on any number of other factors.

In most cases, it is NOT necessary to perform any advanced calculations. You can simply round things off in a way that is fair to both you and the customer. However, if you want to get specific, s2Member® stores the Last Payment Time for each customer for you; and this is a good way to calculate things like this. If you know the existing billing schedule, and you know the Last Payment Time; you can decide how many free days to give them, and make any advanced payment calculations that you’d like to make.

$s2member_last_payment_time = get_user_field ("s2member_last_payment_time"); # Timestamp. Last time an actual payment was received by s2Member.

See also: http://www.s2member.com/codex/stable/s2member/api_functions/package-functions/#src_doc_get_user_field()

It is also possible to query the PayPal® Pro API (where billing details reside — at PayPal); and gain access to every possible detail related to their existing Billing Profile with you.
Example using this technique to acquire every possible detail…
<?php
$user_id = get_current_user_ID();
$subscr_id = get_user_option('s2member_subscr_id', $user_id);

if (($paypal = c_ws_plugin__s2member_paypal_utilities::paypal_api_response (array('METHOD' => 'GetRecurringPaymentsProfileDetails', 'PROFILEID' => $subscr_id))) && !$paypal['__error'])
	print_r($paypal); // Gives you a full array of details.
?>

Further details here: https://www.s2member.com/forums/topic/last-payment-time-is-wrong/#post-28491

The $paypal variable will contain the following details, as documented by PayPal. This was pulled from the PayPal API docs, which are provided to you in your s2Member.com account. Upon logging in at s2Member.com, go to the My Account page, and download the s2m-pro-extras.zip file. Inside the zip file, you’ll find this information in the file: paypal-pro-api.pdf and/or payflow-pro-rec-api.pdf


The important thing to note, is this…
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 in the Modification Pro Form.

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 in the Modification Pro Form.

And please remember that it’s always possible for advanced site owners to perform their own calculations and inject custom variables into a Shortcode.
<?php
$initial_period_days = 365 * 2; // Two years.
$new_monthly_amount = 7.00; // $7.00/monthly.

echo do_shortcode('&#91;&#91;s2Member-Pro-PayPal-Form tp="'.$free_days.'" tt="D" ta="0.00" rp="30" rt="D" ra="'.$new_monthly_amount.'" ... /&#93;&#93;');
?>

See also: Knowledge Base » Using Variables In A Shortcode
See also: Dashboard -› s2Member® -› PayPal® Pro Forms -› Shortcode Attributes (Explained)

Posted: Thursday Mar 21st, 2013 at 7:18 am #45319
Staff Member

Thanks for the heads up on this thread :-)

I investigated this installation and I find many log entries like this which do not appear to have originated with s2Member Payment Buttons or Pro Forms. There is no custom value, no item_number, or item_name; indicating the transaction originated from another software application. In one case, with customer Jan D; the transaction came through the Send Money tab at PayPal.com; not through s2Member.

Can you please post the s2Member® Shortcode that you’re using. I tried to access your Dashboard but I was denied access with the credentials you submitted. The FTP details work fine, but Dashboard access was not working for me. Thanks!

'custom' => '',
'txn_type' => 'express_checkout', (sometimes 'txn_type' => 'send_money')
'item_name' => '',
'mc_currency' => 'CAD',
'item_number' => '',
array (
  0 => 'IPN received on: Thu Mar 21, 2013 6:45:55 am UTC',
  1 => 's2Member POST vars verified through a POST back to PayPal®.',
  2 => 'Unable to verify `$_SERVER["HTTP_HOST"]`. Please check the `custom` value in your Button Code. It MUST start with your domain name.',
),
Posted: Thursday Mar 21st, 2013 at 6:54 am #45318
Staff Member

Thanks for the heads up on this thread :-)

It does not work with Authorize.Net at all, because Authorize.Net does not notify s2Member about ANY type of refund/reversal. We do poll the Authorize.Net ARB system though, so with Subscriptions that are refunded and then terminated, that gets back to s2Member because of the termination; not because of the refund.

This is mentioned in the documentation here. I’m sorry.
Dashboard -› s2Member® -› Authorize.Net® Options -› Automatic EOT Behavior

Viewing 25 replies - 51 through 75 (of 1,909 total)

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

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