Free Trial getting downgraded

After years of selling regular (no-trial) subscriptions we now are selling subs with a 1 week free trial - HOWEVER - every account is getting downgraded automatically at the end of the trial. How is this possible?

Shortcode used:
[s2Member-Pro-PayPal-Form level=“4” ccaps="" desc=“1 Week free / then FULL access for 12 months” ps=“semantica” lc="" cc=“USD” dg=“0” ns=“1” custom=“www.semantica-portuguese.com|en” ta=“0” tp=“1” tt=“W” ra=“150” rp=“1” rt=“Y” rr=“0” rrt="" rra=“0” accept=“paypal,visa,mastercard,amex,discover,maestro,solo” accept_via_paypal=“paypal” coupon="" accept_coupons=“1” default_country_code="" captcha=“0” /]

Do you have logging enabled? Have you checked the IPN logs for your payment gateway to see if the gateway is telling s2Member that the payment was made?

I had this happening with rra=2 (the shortcode that s2m generates for a buy now with trial, non-recurring) and have since changed it to rra=0 and my first test it did not downgrade. I’m doing a second test and will have results in a few days. Logging is on. BTW i tried with a short trial of 1 day and it failed but can’t recall if that was with rra=2 or 0. Would be great if you guys would do some testing of your code generator as I have already reported problems with rra=2 with trial + non-recurring giving paypal eror (17).

Seems really buggy / untested.

Spending all my time dealing with downgraded customer, angry emails and user testing s2m code. Not a good experience for us.

I’m no longer working for WebSharks, so there is no “you guys” on this thread. That said, how did you report this problem? If not on GitHub, that’s where I’d go.

Sorry about the complaint tone pat :smirk_cat: I think I posted on the web sharks official support channel. The git issue is here

So is there just sales support now - Jason went to the hills?

I, and others have gotten replies for tech support using the chat button, but your best bet for things that actually look like bugs in WebSharks programs is GitHub. Occasionally, someone from WebSharks will post here and those of us who frequent these forums do our best, of course.

This issue continues - every day more angry users that have had their accounts downgraded after having PAID. I now have full details of the issue below. Relevant logs attached that mention the user’s email address.

S2M TRIAL FAILURE TESTING

STEP 1: ACCOUNT REGISTRATION

shortcode used:

[s2Member-Pro-PayPal-Form level=“1” ccaps=“freetrial” desc=“1 Day free / then FULL access for 6 months” ps=“semantica” lc="" cc=“USD” dg=“0” ns=“1” custom=“www.semantica-portuguese.com|en” ta=“0” tp=“1” tt=“D” ra=“1” rp=“6” rt=“M” rr=“0” rrt="" rra=“0” accept=“paypal,visa,mastercard,amex,discover,maestro,solo” accept_via_paypal=“paypal” coupon="" accept_coupons=“1” default_country_code="" captcha=“0” /]

*** NOTE THAT WE ARE USING rra=0 because rr=2 (the shortcode generator from s2m) gives PP error as reported in this issue: https://github.com/websharks/s2member/issues/1064

USER DETAILS:
jameshall-6-month-4@semantica-portuguese.com
username = jameshall-6-month-4
password = semantica
Account created with wp ID = 4292
Paid sub ID = RP0000003179
START TRIAL: APR 5 9:22 AM UTC-7

PAYPAL ACCEPTED PAYMENT:
Website Payments Pro API Solution (Unique Transaction ID #0NV72816YA087612M)
Date: Apr 7, 2017
Time: 06:23:04 PDT (*PDT is 7 hours earlier than UTC)
Status: Completed
Payment Type: Website Payments Pro API Solution
Profile Name: 1491538932:1 D:6 M~www.semantica-portuguese.com~1:freetrial
Profile Status: Mature
Deactivated Date: Fri Apr 07, 2017
Profile ID: RP0000003179

SO FAR ALL OF THIS LOOKS NORMAL!

STEP 2: DEMOTION:

Later, on the same day that PayPal accepted payment, s2m demoted the user:

Demoted by s2Member: Fri Apr 7, 2017 4:55 pm UTC
Paid Subscr. ID @ time of demotion: paypal → RP0000003179

AND SO….
What could be happening here?
s2m has been around for a while and I find it hard to believe I would be the first person to sell a 6 month, non-recurring membership with a free trial. Do I need to test this for 5 month access, 4 month access…? I’m just extremely frustrated.

LOGS HERE: https://dl.dropboxusercontent.com/u/62676091/jameshall-6-month-4%40semantica-portuguese.com.zip

According to the gateway-core-ipn.log this was a subscriber cancellation from PayPal:

LOG ENTRY: Fri Apr 7th, 2017 @ precisely 4:45 pm UTC
PHP v5.6.30-0+deb8u1 :: WordPress v4.7.3 :: s2Member v170221 :: s2Member Pro v170221
Memory 16.10 MB :: Real Memory 17.00 MB :: Peak Memory 19.79 MB :: Real Peak Memory 20.75 MB
www.semantica-portuguese.com/?s2member_paypal_notify=1
User-Agent: s2Member v170221; https://www.semantica-portuguese.com
Array
(
    [txn_type] => subscr_cancel
    [subscr_id] => RP0000003179
    [custom] => www.semantica-portuguese.com
    [period1] => 1 D
    [period3] => 6 M
    [payer_email] => jameshall-6-month-4@semantica-portuguese.com
    [first_name] => james
    [last_name] => hall
    [option_name1] => Originating Domain
    [option_selection1] => www.semantica-portuguese.com
    [option_name2] => Customer IP Address
    [option_selection2] => 68.0.140.45
    [item_number] => 1:freetrial
    [item_name] => 1 Day free / then FULL access for 6 months
    [proxy_verified] => paypal
    [s2member_log] => Array
        (
            [0] => IPN received on: Fri Apr 7, 2017 4:45:46 pm UTC
            [1] => s2Member POST vars verified with a Proxy Key
            [2] => s2Member originating domain (`$_SERVER["HTTP_HOST"]`) validated.
            [3] => s2Member `txn_type` identified as ( `subscr_cancel|recurring_payment_profile_cancel|mp_cancel` ).
            [4] => Auto-EOT Time for this account: Fri Apr 7, 2017 4:22 pm UTC
            [5] => Cancellation Notification Emails have been processed.
        )

    [subscr_gateway] => paypal
    [subscr_baid] => RP0000003179
    [subscr_cid] => RP0000003179
    [ccaps] => freetrial
    [level] => 1
    [ip] => 68.0.140.45
    [s2member_paypal_proxy] => paypal
    [s2member_paypal_proxy_use] => pro-emails
    [s2member_paypal_proxy_verification] => df906692b147b9a90850466e8d880e04
)

You have a LOT of cancellations in that log. I only saw 1 that was due to payment failure, but that was not a thorough cross-check of the logs, just a quick look.

s2Member demoted the User because PayPal sent a transaction saying the User had canceled.

I did cross-check 3 users between gateway-core-ipn and auto-eot-system and, for those 3, each EOT action had a corresponding cancellation transaction from PayPal. PayPal is sending cancellation transactions and s2Member is processing them. If your Users are not canceling at PayPal then you need to find out why PayPal is sending those transactions. I think it highly unlikely that s2Member is creating these log entries out of thin air nor do I think this is caused by any kind of theme/plugin conflict.

Thanks for checking this out, Pat.

We have a real mystery here since this cancellation was not from any user action. Every test membership gets mysteriously cancelled. At least we now know that it’s a cancellation and nothing else. Now the question becomes:

What could cause an automatic cancellation?

~James

That would usually be a funding issue, e.g. credit card expired, no or changed paypal account, etc

The logs I have sent are related to a test purchase — from an account that I control - my money etc. I did not cancel. The cc is in good standing. I’ve done this many times. It’s none of these issues.

All (100%) of new accounts since we started offering a free trial (several weeks ago) are being demoted automatically — it’s not a funding issue for all of these people. I can see the payments made in PP — all of them go through fine. No refunds etc.

The point is that PayPal thinks you did cancel. So actually, yes, it is one of those issues. You need to ask PayPal why it thinks that.

Thanks Tim.

When I talk to PP should I be telling them that their api is sending us premature cancel orders? I’m just not sure how to say what’s happening accurately, do you?

That is exactly what I would tell them. If you Google, you will see that this has happened with PayPal before, though apparently not with s2Member.

But expect to have to press the point. PayPal is a real PITA to deal with in many ways. I moved to Stripe years ago.

Pat - the RP profile is assigned temporarily just for the trial, right? (this is a non-recurring sale). How does the RP profile normally get “cancelled” ?

No. The rp is the Regular Period for the subscription. It has nothing to do with the trial period. You always need the attributes that start with r.

A subscription can be canceled from PayPal by you or the Subscriber. It can be canceled with a cancellation form on your site. Finally, it can be canceled at PayPal for non-payment: bad credit card info, credit card declined, something else happened when PayPal submitted payment…

Since you are using a 1 Day free trial and your subscriptions are being canceled at the end of the day, something is happening at PayPal when the payment is submitted.

There is one possibility I hadn’t thought of before: Have you changed the Grace Period (PayPal Options → EOT Grace Time**) for the EOT to 0? If so, it is possible that s2Member is canceling as soon as the trial expires. I don’t know why there would be a log entry from PayPal, but it could be that the trial is expiring before PayPal can submit the payment info via IPN.

1 Like

This is happening to all of the purchases made on the site — they normally have a 7 day trial period — the 1 day is just for my testing. The grace period is set for 86400 seconds.

By “RP” I was talking about the profile ID — before the trial I noticed that IDs that had “RPxxxxx” were only for recurring profile subs. It seems now that even purchasers of the 6 month product get assigned an RPxxxx as well now. I think this RP goes away at end of trial. Could that be causing a cancel notice to get sent?

I don’t think so. I think it has to do with rra="0" which means that the subscription is canceled if payment fails just once for any reason. I think there is something going on at PayPal and the payments are failing and the subscriptions are being canceled. As I said, PayPal is telling s2Member that the subscriptions were canceled, not the other way around.

do you have a soluution, this is interesting for me, too

This is looking more and more like an s2m bug.

Here’s why:

PP doesn’t send anything on its own apart from first payment and cancel if it is user initiated. I see S2 as a monitor basically. S2 regularly makes calls to PP to get the status of the profile and if PP says that the profile is expired then S2 does its job.

So if we break this down:

  • User fills out the S2 payment form
  • S2 form has the required HTML tags that PP needs based on one time payment, recurring, how many days and so on… (this is where I think the mistake might be)
  • User pays on paypal site
  • PP creates profile or one time payment based on what the S2 member sends.
  • After payment, PP sends notification to the site.

Then what happens for recurring:

  • S2 regularly makes calls to PP to see what the actual status is in case of recurring.
  • If status active, S2 does nothing.
  • If status expired, S2 demotes it.

Then what happens for TRIAL OF A NON-RECURRING PRODUCT:

  • this is where I’m stumped! a RP is clearly created for all non-recurring products IF it has a trial. This profile is killed off when trial is over. Then PP sends the CANCEL and then my users freak out and send angry email.

Can you elaborate on what’s supposed to happen here, Pat?

Thanks, James