Previous subscribers not auto-upgraded after modification

Hi, I’ve checked the previous threads, found something similar but not the same and have had no luck in contacting the s2member authors over the course of three months. So I very much hope one of the community can help.

My issue, which started seemingly arbitrarily about three months ago (I know it won’t have been arbitrary!), is that when a Level 0 (free) subscriber uses the modification form to upgrade to Level 1 (paid) access, their subscriber level no longer automatically upgrades.

All funds are received, and the paid subscription id and, if relevant, EOT date/time are populated. But the user remains with a site role of ‘Registered (Free)’ rather than ‘Gold (Monthly)’, i.e. L0 not L1.

Over time, I’ve come to realise that (I believe) this impacts only members who have one or more previous L1+ subscriptions. That is, those paying users whose membership lapsed and they then re-subscribed to a paying level.

Below is an example ipn log file, with all sensitive data redacted (hopefully). I would be very grateful if any of you wonderful community members was able to see what I cannot, and point me in the direction of a possible solution.

Obviously, very happy to share more information on request.

Thanks a million in advance,
Matt

LOG ENTRY: Sun Jul 25th, 2021 @ precisely 6:13 pm UTC
PHP v7.4.12 :: WordPress v5.8 :: s2Member v210526 :: s2Member Pro v210526
Memory 47.08 MB :: Real Memory 49.90 MB :: Peak Memory 52.10 MB :: Real Peak Memory 52.99 MB
www.geegeez.co.uk/?s2member_paypal_notify=1
User-Agent: s2Member v210526; https://www.geegeez.co.uk
Array
(
[txn_type] => web_accept
[txn_id] => 1BP63532XF23xxxxxx
[custom] => www.geegeez.co.uk|2.219.xxx.xxx
[mc_gross] => 6.00
[mc_currency] => GBP
[tax] => 0.00
[payer_email] => barxxxxxx2@gmail.com
[first_name] => bxxxx
[last_name] => xxxxx
[option_name1] => Referencing Customer ID
[option_selection1] => 22738
[option_name2] => Customer IP Address
[option_selection2] => 2.219.xxx.xxx
[item_name] => £6 / One Time Payment (for 2 days’ access, non-recurring)
[item_number] => 1::2 D
[option_name] => Referencing Customer ID
[option_selection] => 22738
[proxy_verified] => paypal
[s2member_log] => Array
(
[0] => IPN received on: Sun Jul 25, 2021 6:13:10 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 ( web_accept|subscr_signup ).
[4] => s2Member txn_type identified as ( web_accept|subscr_signup ) w/ update vars.
[5] => Automatic EOT (End Of Term) Time set to: Tue Jul 27, 2021 6:13:11 pm UTC.
[6] => s2Member Level/Capabilities updated w/ advanced update routines.
[7] => Modification Confirmation Email sent to: “xxxxx xxxxx” barxxxxxxy2@gmail.com.
[8] => User exists. Handling payment for Subscription via ( web_accept ).
[9] => Payment Notification URLs have been processed.
[10] => Storing IPN signup vars now. These are associated with a User’s account record; for future reference.
)

[subscr_gateway] => paypal
[subscr_id] => 1BP63532XF23xxxxxx
[subscr_baid] => 1BP63532XF23xxxxxx
[subscr_cid] => 1BP63532XF23xxxxxx
[level] => 1
[ccaps] => 
[eotper] => 2 D
[ip] => 109.153.xxx.xx
[period1] => 0 D
[mc_amount1] => 0.00
[period3] => 2 D
[mc_amount3] => 6.00
[initial_term] => 0 D
[initial] => 6.00
[regular] => 6.00
[regular_term] => 2 D
[recurring] => 0
[currency] => GBP
[currency_symbol] => £
[s2member_paypal_proxy] => paypal
[s2member_paypal_proxy_use] => pro-emails
[s2member_paypal_proxy_coupon] => Array
    (
        [coupon_code] => 
        [full_coupon_code] => 
        [affiliate_id] => 
    )

[s2member_paypal_proxy_verification] => 5a48cb0d4d1ad604daffa9a4e9c10xxx

)

LOG ENTRY: Sun Jul 25th, 2021 @ precisely 6:13 pm UTC
PHP v7.4.12 :: WordPress v5.8 :: s2Member v210526 :: s2Member Pro v210526
Memory 47.01 MB :: Real Memory 49.90 MB :: Peak Memory 52.12 MB :: Real Peak Memory 52.99 MB
www.geegeez.co.uk/?s2member_paypal_notify=1
User-Agent: PayPal IPN ( https://www.paypal.com/ipn )
Array
(
[mc_gross] => 6.00
[protection_eligibility] => Ineligible
[item_number1] => 1::2 D
[payer_id] => CB74HX6WB2xxx
[tax] => 0.00
[payment_date] => 11:13:09 Jul 25, 2021 PDT
[payment_status] => Completed
[charset] => windows-1252
[first_name] => bxxxx
[mc_fee] => 0.31
[notify_version] => 3.9
[custom] => www.geegeez.co.uk|2.219.xxx.xxx
[payer_status] => unverified
[business] => mattxxxxxxx@hotmail.com
[num_cart_items] => 1
[verify_sign] => APKiNHykbcLt7PoiWc-ZVdLLpYvYAqvNv9xxxxnHFmL93LiAg22-Vcw
[payer_email] => bxxxxxxxx2@gmail.com
[memo] => £6 / One Time Payment (for 2 days’ access, non-recurring)
[txn_id] => 1BP63532XF23xxxxxx
[payment_type] => instant
[last_name] => xxxxx
[item_name1] => £6 / One Time Payment (for 2 days’ access, non-recurring)
[receiver_email] => mattxxxxxxx@hotmail.com
[payment_fee] =>
[shipping_discount] => 0.00
[quantity1] => 1
[insurance_amount] => 0.00
[receiver_id] => QSCGPPM8ExxxC
[txn_type] => cart
[discount] => 0.00
[mc_gross_1] => 6.00
[mc_currency] => GBP
[residence_country] => GB
[receipt_id] => 5226-5054-xxxx-8117
[shipping_method] => Default
[transaction_subject] => £6 / One Time Payment (for 2 days’ access, non-recurring)
[payment_gross] =>
[ipn_track_id] => 8xxbe4e04bd50
[item_number] => 1::2 D
[item_name] => £6 / One Time Payment (for 2 days’ access, non-recurring)
[quantity] => 1
[s2member_log] => Array
(
[0] => IPN received on: Sun Jul 25, 2021 6:13:32 pm UTC
[1] => s2Member POST vars verified through a POST back to PayPal.
[2] => s2Member originating domain ($_SERVER["HTTP_HOST"]) validated.
[3] => s2Member txn_type identified as ( cart ).
[4] => The txn_type does not require any action on the part of s2Member.
[5] => s2Member Pro handles Cart events on-site, with an IPN proxy.
)

[subscr_gateway] => paypal

)

Any changes in domain name? Try to recreate the payment buttons/forms you use.

Also check IPN at your Paypal account. And other credentials too, as well.

1 Like

Hi Krum

Thank you very much for taking time to reply.

I can confirm that this is a mature (running for seven years) instance of s2member, always on the same domain.

I have recreated the modification forms but still the same.
And the IPN looks fine as far as I can tell.

To be clear, new customers are able to register and pay and get upgraded without a problem; recurring subscriptions are being managed without a problem, and EOT dates are being honoured/access being downgraded appropriately.

The one thing that is not working is when a user who previously subscribed but reverted to the free level after subscription expired, re-subscribes. In this case, the PayPal details are stored and displayed in the Users WP view, so too any EOT date. BUT… the user level is not automatically upgraded as per the modification forms.

A further update on this. It looks like it may be specifically in relation to users who have previously had a “non-subscription” transaction on their account. That is, they previously paid for a fixed period of access.

I still have no idea why this should cause the issue it is…