Paypal Payment Not Updating Membership Level

Hi, first off, a big thank you to the S2member team and for those volunteering their time through this and other forums for ongoing support.

W/ my S2member Pro installation, I just noticed a bug yesterday where after one of my website free members made a payment (via Paypal) to upgrade his account, his account level remained the same (at free membership). I’ve included the code below for reference, and virtually identical code (w/ the exception of the ccaps, ra and the desc values) executed successfully about 2 months ago. Let me know if you have any ideas on why the membership level of this website free member didn’t upgrade on his payment (which I’ve confirmed was received from Paypal’s website).

[s2Member-Pro-PayPal-Form level=“1” ccaps=“equities” desc=“Equities & ETFs (1 Month): USD 19 payment, billed monthly” ps=“paypal” lc="" cc=“USD” dg=“0” ns=“1” custom=“tradablepatterns.com” ta=“0” tp=“0” tt=“D” ra=“19” rp=“1” rt=“M” rr=“1” rrt="" rra=“2” accept=“paypal” accept_via_paypal=“paypal” coupon="" accept_coupons=“0” default_country_code="" captcha=“0” /]

Much appreciated in advance!

Darren

If the user was already a Level0 user then they should be paying using an upgrade form rather than a “buy” form.

See https://s2member.com/kb-article/forms-for-modifying-user-accounts/

Hi Tim, tks for the quick response. I’ve actually been using S2MemberPro for almost 6yrs and never once had an issue w/ the member level being upgraded from a Level 0 membership, and while using the code for the “buy” form. In fact, I’ve never had the code for the upgrade form installed, and yet was able to receive payments from these members who successfully upgraded from Level 0. I think there’s another issue where somehow Paypal isn’t communicating w/ S2Member at the time of purchase. I’ve begun looking at how I can get Stripe setup in place of Paypal, but would prefer sticking to Paypal if possible as my existing code and configuration had worked fine for 6 years. Looking fwd to any ideas.

Ok. As a long time user with pre-existing operating code, is there anything that changed recently. Just upgraded php, s2member plugin, other…

Have you looked at the PayPal developer logs https://developer.paypal.com/developer/dashboard/live/ ?

Hi Tim,
Strangely, I don’t see any Live API Calls or Webhook Events listed in the past month, even though I’ve had payments received through Paypal, as well as a free member properly upgraded to a paid account. I did upgrade PHP on my web server (to 7.3.18) about a month ago, but am pretty sure it was after the upgrade that I still had a free member properly upgraded w/ the correct Level by S2Member.

Have you see any other observations similar to mine, that have emerged just in the past week or 2? I scanned the forum posts and it doesn’t appear anyone else has experienced what I’ve described.

I’ve included below a copy and paste of my log file relevant to the member upgrade attempt just now where a payment was processed by Paypal and where my free member account didn’t upgrade. Let me know if you see something in this log that points us in the right direction. Much thanks in advance!

LOG ENTRY: Fri Jun 12th, 2020 @ precisely 2:55 pm UTC
PHP v7.3.18 :: WordPress v5.4.1 :: s2Member v200301 :: s2Member Pro v200301
Memory 62.60 MB :: Real Memory 65.00 MB :: Peak Memory 62.65 MB :: Real Peak Memory 65.00 MB


User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363
-------- Input vars: ( Fri Jun 12, 2020 2:55:16 pm UTC ) --------
array (
‘METHOD’ => ‘SetExpressCheckout’,
‘RETURNURL’ => ‘https://tradablepatterns.com/membership/equities-etfs/?s2p-option&s2member_paypal_xco=s2member_pro_paypal_checkout_return’,
‘CANCELURL’ => ‘https://tradablepatterns.com/membership/equities-etfs/?s2p-option&s2member_paypal_xco=s2member_pro_paypal_checkout_cancel’,
‘PAGESTYLE’ => ‘paypal’,
‘LOCALECODE’ => ‘’,
‘NOSHIPPING’ => ‘1’,
‘SOLUTIONTYPE’ => ‘Sole’,
‘LANDINGPAGE’ => ‘Billing’,
‘ALLOWNOTE’ => ‘0’,
‘L_BILLINGTYPE0’ => ‘RecurringPayments’,
‘L_BILLINGAGREEMENTDESCRIPTION0’ => ‘Equities & ETFs (1 Month): USD 19 payment, billed monthly’,
‘MAXAMT’ => ‘19.00’,
‘PAYMENTREQUEST_0_CURRENCYCODE’ => ‘USD’,
‘PAYMENTREQUEST_0_SHIPTONAME’ => ‘Darren Chu’,
‘PAYMENTREQUEST_0_SHIPTOSTREET’ => ‘’,
‘PAYMENTREQUEST_0_SHIPTOCITY’ => ‘’,
‘PAYMENTREQUEST_0_SHIPTOSTATE’ => ‘’,
‘PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE’ => ‘US’,
‘PAYMENTREQUEST_0_SHIPTOZIP’ => ‘’,
‘EMAIL’ => ‘darrenchu@hotmail.com’,
‘VERSION’ => ‘71.0’,
‘USER’ => ‘darrentchu_api1.gmail.com’,
‘PWD’ => ‘xxxxxxxx/PWD/SIG’,
‘SIGNATURE’ => ‘xxxxxxxx/PWD/SIG’,
)
-------- Output string/vars: ( Fri Jun 12, 2020 2:55:17 pm UTC ) --------
TOKEN=EC%2d3LK02442D5622140M&TIMESTAMP=2020%2d06%2d12T14%3a55%3a17Z&CORRELATIONID=84277e3ec6fa0&ACK=Success&VERSION=71%2e0&BUILD=54634679
array (
‘TOKEN’ => ‘EC-3LK02442D5622140M’,
‘TIMESTAMP’ => ‘2020-06-12T14:55:17Z’,
‘CORRELATIONID’ => ‘84277e3ec6fa0’,
‘ACK’ => ‘Success’,
‘VERSION’ => ‘71.0’,
‘BUILD’ => ‘54634679’,
)

LOG ENTRY: Fri Jun 12th, 2020 @ precisely 2:56 pm UTC
PHP v7.3.18 :: WordPress v5.4.1 :: s2Member v200301 :: s2Member Pro v200301
Memory 62.59 MB :: Real Memory 65.00 MB :: Peak Memory 62.64 MB :: Real Peak Memory 65.00 MB


User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363
-------- Input vars: ( Fri Jun 12, 2020 2:56:44 pm UTC ) --------
array (
‘METHOD’ => ‘GetExpressCheckoutDetails’,
‘TOKEN’ => ‘EC-3LK02442D5622140M’,
‘VERSION’ => ‘71.0’,
‘USER’ => ‘darrentchu_api1.gmail.com’,
‘PWD’ => ‘xxxxxxxx/PWD/SIG’,
‘SIGNATURE’ => ‘xxxxxxxx/PWD/SIG’,
)
-------- Output string/vars: ( Fri Jun 12, 2020 2:56:44 pm UTC ) --------
TOKEN=EC%2d3LK02442D5622140M&BILLINGAGREEMENTACCEPTEDSTATUS=1&CHECKOUTSTATUS=PaymentActionNotInitiated&TIMESTAMP=2020%2d06%2d12T14%3a56%3a44Z&CORRELATIONID=b965af9610562&ACK=Success&VERSION=71%2e0&BUILD=54634679&EMAIL=darrenchu%40hotmail%2ecom&PAYERID=SP7G98N38XXDC&PAYERSTATUS=verified&BUSINESS=ebizdevelopers%2enet&FIRSTNAME=Darren&LASTNAME=Chu&COUNTRYCODE=CA&ADDRESSSTATUS=Confirmed&CURRENCYCODE=USD&AMT=0%2e00&ITEMAMT=0%2e00&SHIPPINGAMT=0%2e00&HANDLINGAMT=0%2e00&TAXAMT=0%2e00&NOTIFYURL=https%3a%2f%2ftradablepatterns%2ecom%2f%3fs2member_paypal_notify%3d1&INSURANCEAMT=0%2e00&SHIPDISCAMT=0%2e00&INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_CURRENCYCODE=USD&PAYMENTREQUEST_0_AMT=0%2e00&PAYMENTREQUEST_0_ITEMAMT=0%2e00&PAYMENTREQUEST_0_SHIPPINGAMT=0%2e00&PAYMENTREQUEST_0_HANDLINGAMT=0%2e00&PAYMENTREQUEST_0_TAXAMT=0%2e00&PAYMENTREQUEST_0_NOTIFYURL=https%3a%2f%2ftradablepatterns%2ecom%2f%3fs2member_paypal_notify%3d1&PAYMENTREQUEST_0_INSURANCEAMT=0%2e00&PAYMENTREQUEST_0_SHIPDISCAMT=0%2e00&PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID=darrentchu%40gmail%2ecom&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUESTINFO_0_ERRORCODE=0
array (
‘TOKEN’ => ‘EC-3LK02442D5622140M’,
‘BILLINGAGREEMENTACCEPTEDSTATUS’ => ‘1’,
‘CHECKOUTSTATUS’ => ‘PaymentActionNotInitiated’,
‘TIMESTAMP’ => ‘2020-06-12T14:56:44Z’,
‘CORRELATIONID’ => ‘b965af9610562’,
‘ACK’ => ‘Success’,
‘VERSION’ => ‘71.0’,
‘BUILD’ => ‘54634679’,
‘EMAIL’ => ‘darrenchu@hotmail.com’,
‘PAYERID’ => ‘SP7G98N38XXDC’,
‘PAYERSTATUS’ => ‘verified’,
‘BUSINESS’ => ‘ebizdevelopers.net’,
‘FIRSTNAME’ => ‘Darren’,
‘LASTNAME’ => ‘Chu’,
‘COUNTRYCODE’ => ‘CA’,
‘ADDRESSSTATUS’ => ‘Confirmed’,
‘CURRENCYCODE’ => ‘USD’,
‘AMT’ => ‘0.00’,
‘ITEMAMT’ => ‘0.00’,
‘SHIPPINGAMT’ => ‘0.00’,
‘HANDLINGAMT’ => ‘0.00’,
‘TAXAMT’ => ‘0.00’,
‘NOTIFYURL’ => ‘https://tradablepatterns.com/?s2member_paypal_notify=1’,
‘INSURANCEAMT’ => ‘0.00’,
‘SHIPDISCAMT’ => ‘0.00’,
‘INSURANCEOPTIONOFFERED’ => ‘false’,
‘PAYMENTREQUEST_0_CURRENCYCODE’ => ‘USD’,
‘PAYMENTREQUEST_0_AMT’ => ‘0.00’,
‘PAYMENTREQUEST_0_ITEMAMT’ => ‘0.00’,
‘PAYMENTREQUEST_0_SHIPPINGAMT’ => ‘0.00’,
‘PAYMENTREQUEST_0_HANDLINGAMT’ => ‘0.00’,
‘PAYMENTREQUEST_0_TAXAMT’ => ‘0.00’,
‘PAYMENTREQUEST_0_NOTIFYURL’ => ‘https://tradablepatterns.com/?s2member_paypal_notify=1’,
‘PAYMENTREQUEST_0_INSURANCEAMT’ => ‘0.00’,
‘PAYMENTREQUEST_0_SHIPDISCAMT’ => ‘0.00’,
‘PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID’ => ‘darrentchu@gmail.com’,
‘PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED’ => ‘false’,
‘PAYMENTREQUESTINFO_0_ERRORCODE’ => ‘0’,
)

LOG ENTRY: Fri Jun 12th, 2020 @ precisely 2:56 pm UTC
PHP v7.3.18 :: WordPress v5.4.1 :: s2Member v200301 :: s2Member Pro v200301
Memory 62.59 MB :: Real Memory 65.00 MB :: Peak Memory 62.64 MB :: Real Peak Memory 65.00 MB


User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363
-------- Input vars: ( Fri Jun 12, 2020 2:56:44 pm UTC ) --------
array (
‘METHOD’ => ‘CreateRecurringPaymentsProfile’,
‘EMAIL’ => ‘darrenchu@hotmail.com’,
‘FIRSTNAME’ => ‘Darren’,
‘LASTNAME’ => ‘Chu’,
‘SUBSCRIBERNAME’ => ‘Darren Chu’,
‘DESC’ => ‘Equities & ETFs (1 Month): USD 19 payment, billed monthly’,
‘PROFILEREFERENCE’ => ‘1594609004:0 D:1 M~tradablepatterns.com~1:equities’,
‘INITAMT’ => ‘19.00’,
‘FAILEDINITAMTACTION’ => ‘CancelOnFailure’,
‘CURRENCYCODE’ => ‘USD’,
‘AMT’ => ‘19.00’,
‘TAXAMT’ => ‘0.00’,
‘MAXFAILEDPAYMENTS’ => ‘2’,
‘AUTOBILLOUTAMT’ => ‘AddToNextBilling’,
‘PROFILESTARTDATE’ => ‘2020-07-13T00:00:00Z’,
‘BILLINGPERIOD’ => ‘Month’,
‘TOTALBILLINGCYCLES’ => ‘0’,
‘BILLINGFREQUENCY’ => ‘1’,
‘TOKEN’ => ‘EC-3LK02442D5622140M’,
‘VERSION’ => ‘71.0’,
‘USER’ => ‘darrentchu_api1.gmail.com’,
‘PWD’ => ‘xxxxxxxx/PWD/SIG’,
‘SIGNATURE’ => ‘xxxxxxxx/PWD/SIG’,
)
-------- Output string/vars: ( Fri Jun 12, 2020 2:56:47 pm UTC ) --------
PROFILEID=I%2dXSERGEK9M317&PROFILESTATUS=PendingProfile&TIMESTAMP=2020%2d06%2d12T14%3a56%3a47Z&CORRELATIONID=fefd56b59ff5d&ACK=Success&VERSION=71%2e0&BUILD=54492453
array (
‘PROFILEID’ => ‘I-XSERGEK9M317’,
‘PROFILESTATUS’ => ‘PendingProfile’,
‘TIMESTAMP’ => ‘2020-06-12T14:56:47Z’,
‘CORRELATIONID’ => ‘fefd56b59ff5d’,
‘ACK’ => ‘Success’,
‘VERSION’ => ‘71.0’,
‘BUILD’ => ‘54492453’,
)

Cheers,
Darren

Hi Tim,
Could you also provide me the link to the Stripe Image Branding (for the display of the accepted credit cards on the payment form)? I accidentally overwrote it with one of my own image URLs, but realized that the default Stripe image suggested displays better.

Cheers,
Darren

Hi Tim,
Not sure if this is related, but just about an hr ago, after submitting a few Paypal payments using a real account, and then refunding it each time, I received the following excerpt of an email from Paypal…let me know why you think the IPN is getting rejected…

Please check your server that handles PayPal Instant Payment Notifications (IPN). IPNs sent to the following URL(s) are failing:

https://tradablepatterns.com/?s2member_paypal_notify=1

If you do not recognize this URL, you may be using a service provider that is using IPN on your behalf. Please contact your service provider with the above information. If this problem continues, IPNs may be disabled for your account.

Thanks,
Darren

It is related. If s2member does not get the IPN it does not know to move the user into a new subscription level.

You will need to do some tests to see if the IPN delivery fails every time or fails intermittently.

NOTE: I’m puzzled that you said the payment worked since the log says ‘CHECKOUTSTATUS’ => ‘PaymentActionNotInitiated’,

Tks Tim,
I’ll try to run some tests…in the meantime, can you send me the Stripe URL for the image they provide for the credit cards accepted? I’ll need to swap in a live Stripe service while troubleshooting my Paypal issue. Cheers.

I don’t work for the plugin company. I’m just another user. Not sure what you are looking for. Just download the plugins. Everything you are looking for should be there.

Ahh right…anyways, after going into my Paypal IPN Notification history, it appears that the issue this past wk or so has been the failure by Paypal to reach the IPN URL provided within S2member.

When going into Paypal Developer’s IPN Simulator, by inputting the same IPN URL provided by S2Member, I get the error: IPN was not sent, and the handshake was not verified. Review your information.

Any other S2member user with Paypal integrated experiencing the same issue w/ IPN Notifications not going through?

Assuming the Paypal Developer’s IPN Simulator is an online tool hit F12 , select the Network tab and run it again. The network handshake should tell you what’s wrong.

Hi Tim,
I realized that one of my security plugins (WP Cerber) was blocking the efforts by Stripe and Paypal to communicate w/ my website. Tks for your patience and suggestions. After whitelisting Stripe and Paypal within WP Cerber, everything’s working again. Hope you’re enjoying your weekend.

Darren

“Security” plugins seem to be the latest culprit in a rash of issues related to message non-delivery.

Glad you got it worked out.