Members not upgraded even after successful paypal payment

I'm working in Paypal sandbox mode with the Membership plugin, and am able to successfully register a person and then make a payment that all seems to work fine. IPN is fine. All seems fine.

The transaction even appears to be completed in the gateway transactions report (http://cl.ly/image/1u0i3x2r001h).

However, the member is NOT being upgraded to premium. They just stay at the basic visitor level that they are defaulted to when they're registering (http://cl.ly/image/1g0d2t0N2C2h).

What's confusing me is that they payment goes through, and the site and Paypal seem to be communicating enough to say the transaction is posted. And I'm even able to refund transactions and the gateway transactions report reflects everything. It all seems fine.

So what are possible reasons that the member is not being made Premium despite all this? I've hunted through the forums and can't find a scenario such as this where everything seems successful otherwise.

  • Dharmendra

    Hello Louis Basenese,

    I hope you are well today and thanks for asking the question.

    Please make sure that you have configured everything correctly as here described https://premium.wpmudev.org/project/membership/#usage.

    Could you please grant me support access, this is done through our WPMU DEV Dashboard plugin:

    Admin —> Network (if applicable) —> WPMU DEV Dashboard —> Support —> Staff Access [TAB]

    I can then take a closer look for you.

    Have a great day! :slight_smile:

  • Louis Basenese

    Went through and deactivated every plugin except the Membership plugin and ran ran through another transaction with a new test user.

    Same result- the transaction is successful, the gateway shows the transaction as completed, but the subscriber is still not made premium. It just stays on the set-by-default level/subscription (http://cl.ly/image/2g0Z093M121r).

    Everything else seems successful, it's just not upgrading the user after everything goes through.

  • aristath

    Hello again @Louis Basenese, I hope you're well today!

    This is a pretty weird issue... I don't think I've seen this before!

    I have notified our Second Level Support on this thread (they're the code gurus), hopefully their insights will help us figure this one out!

    It would be nice if you you could keep the support access active until they get here though so that they may access your site themselves and see exactly what goes on!

    Cheers,
    Ari.

  • Hoang Ngo

    Hi @Louis Basenese,

    I hope you are well today and I'm very sorry about the issue.

    This is mostly because the IPN not setup properly. In the gateway setting, you will see a message, which let you know the right IPN url, and please follow this guide to update the right IPN url to your PayPal account.

    https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNSetup/

    If you have any issues please don't hesitate to let us know so we can assist
    Best regards,
    Hoang

    • Louis Basenese

      @Hoang, I don't believe you've read the original post or the followup posts, that the IPN is set up correctly with the Paypal account, and that in the Membership plugin, transaction settings CORRECTLY report the transaction as having gone through successfully. Communication between Paypal and the plugin don't appear to be the problem. The plugin clearly shows the money was received, and the transaction completed. But the member is NOT upgraded.

      @aristath So we have to start running real transactions with real money in order to test something that should have a test mode? I want to confirm, that in the Membership plugin transaction settings, the payment shows as having gone through. So if Paypal has done it's part, isn't the problem on the PLUGIN side?

  • Tyler Postle

    Hey Louis,

    Hope you are well today!

    Thanks for posting that information. I notice you have a coming soon page up. Do you have redirects setup? Or using a coming soon plugin? If PayPal is re-directing the user when sending them back then this could be causing the issue.

    Make sure you turn off/disable any plugin that might be causing that. Get your site setup as if you were selling a real membership then do the test. Let us know if this works :slight_smile:

    Can you please try this using PayPal on live mode as well? This could simply be an issue with the PayPal Sandbox mode...

    I agree with my colleague @aristath here as well. If it still isn't successful then try switching to live mode and putting the price of the membership down to a $1 just for test purposes. Even if the sandbox mode test is successful, you should STILL do a test in live mode just to be sure. The last thing you want is your first sales being declined because the switch to live mode changed something.

    Let us know how you make out here, if you are still having issues then we're happy to continue troubleshooting with you :slight_smile:

    All the best,
    Tyler

  • Louis Basenese

    OK, after updating to LIVE mode with a $1 payment, it went through and I was upgraded to Premium successfully. BUT:

    HOWEVER, and this is kind of a big issue. When I was first sent back to the site from Paypal, the Welcome page was still PROTECTED, so I got a protected/no-access message. But after I clicked around, it updated and I was a premium user.

    So basically, there was some sort of delay possibly? Where I was not technically upgraded in time to be given the Welcome page. But I need to be able to see the Welcome page, or that results in a poor user experience.

    The plugin seems to control the protected nature of the Welcome page, so I'm not sure how we can ensure that the timing of everything happens so the paid user doesn't experience a delay and not be given the Welcome message.

    Is there a fix or workaround for this? If I apply a page as the Welcome page, the plugin automatically protects it, so it's not like I can have a non-private Welcome page. So it leaves us a bit stuck.

  • Tyler Postle

    Hey Louis,

    Hope you are well today! Glad we have made some progress here :slight_smile:

    I have a couple possible solutions for you here.

    1. You could try setting the auto return URL via PayPal and direct it to a created WordPress page that you can make sure is unprotected via the access levels: PayPal Auto Return URL

    2. I have attached an updated version of the protection.php page. Please create a copy of your existing protection.php then upload the attached version overwriting the old one located at: /membership/classes/Membership/Module/Protection.php The copy you made of the old one is just in-case anything goes wrong with the new one - you will be able to easily revert back :slight_smile:

    Let me know if this solves the issue! If not, we'll continue to troubleshoot with you.

    All the best,
    Tyler

  • Louis Basenese

    I decided to try option #2, and I can confirm that whatever you updated in that file seems to have worked, so THANK YOU. The member is upgraded to Premium in enough time to where I properly see the Welcome page.

    HOWEVER, there is one question that remains however, that might be related to this. And this was happening before, not just after updating the Protection.php file. It's an issue regarding how the 'finite' payment gets processed by Paypal.

    I have the payment settings configured to be 'finite' for a period of 1 year. While everything goes through properly, the notifications of payment from Paypal are strange. I get 3 emails, as the CUSTOMER:

    1. "Profile Canceled" - this is the first email that comes through, and it tells me "You successfully canceled the following PayPal Recurring Payment profile."

    2. "You sent an automatic payment of..." (This is an expected, normal email).

    3. "You set up an automatic payment profile" telling me that I have configured a yearly automatic payment.

    What's curious is that this is the order they always come through to me as the CUSTOMER. Profile canceled, then the payment notification, then the profile setup.

    It's almost like the plugin's 'finite' settings tell Paypal to set up an automation and then cancel the recurring payment. Is this what's happening? It's very curious and the user experience seems odd.
    Is there something in the 'finite' setting that causes an 'automatic payment profile' to be set up and then canceled immediately?

  • Louis Basenese

    Hi, I'm reopening this item because the issue with serial payments is re-occurring.

    Is there a limit to the price of a subscription?

    I've found that if I try to do an annual price that is high, in this case $2500/year, even though the payment goes through and registers on the site in the Paypal gateway transactions, the member is NOT upgraded to premium.

    However, if I follow the same steps and price the membership to a lower amount, for example $625/year, the member IS successfully upgraded to premium

    I can't figure out where the limit is, and why there is one. Again, with no other configuration changes, even though the payment successfully posts and appears in the paypal gateway transactions, the higher price one will never upgrade to premium, but all things exactly the same except the price, and it does go through OK.

    Is there a limit coded into the Membership plugin?

  • Tyler Postle

    Hey Louis,

    Hope you are well today!

    I don't believe this should affect the charge limit in the current version since the price field was changed to a text box from a dropdown sometime ago; however, let's give it a shot before we dig deeper into this :slight_smile:

    Try placing this into your wp-config.php file:

    define( 'MEMBERSHIP_MAX_CHARGE', 2500);

    If that doesn't help then we'll further investigate the issue to get this resolved.

    Look forward to your reply.

    All the best,
    Tyler

  • Louis Basenese

    OK, I added that line to the wp-config.php, and there does not appear to be any change. The transaction successfully posts, the gateway transactions successfully shows the payment as posted, but for the high dollar amounts, the Membership plugin refuses to upgrade the member to Premium, even though the lower dollar amounts works great. I have not figured out where the threshold dollar amount is, where it turns from success to failure. I'm going to try $1000 next and then $999 as a test to see if the threshold might be at 4 figures.

    And just to clarify, I CAN successfully post transactions of a single dollar (or even $625) using both live mode with real money, and sandbox mode, and the member IS upgraded to premium. It only fails with the high dollar amount.

    Obviously I can't test the value of $2500 using live mode, but if sandbox mode works for small numbers and doesn't for large numbers, then I have no reason to believe I can use the live mode and just hope that it works.

    And, as mentioned before, I was able to change the price up to $625 in sandbox and it DID work successfully. But $2499 or 2500 does not upgrade to premium.

    Supporting that info, is that my Remote Ping to mailchimp does NOT fire for that high dollar amount either, but it DOES fire for the lower amounts, further suggesting that it's the plugin that's just not upgrading higher dollar amount subscriptions.

    What's further interesting is that if I refund that high dollar amount on the Paypal side, the membership exit Remote Ping to mailchimp does execute, even though the signup Remote ping never did.

    Basically what I'm saying is that everything else is working like it should, the payments posting, paypal, etc. But if the membership is a high dollar amount (which is necessary for my site), it fails to execute the membership upgrade, even though the payment went through.

    But low dollar amounts, works great.

  • Hoang Ngo

    Hi @Louis Basenese,

    I hope you are well today and I'm sorry for the issue.

    Just for clarify, what's the payment gateway you are using, if it is PAYPAL, I still need to know exactly the module in use too.

    Also, please add this code to your wp-config.php

    define('MEMBERSHIP_DEBUG_LEVEL','adv');
    define('MEMBERSHIP_DEBUG_METHOD','email');
    define('MEMBERSHIP_DEBUG_EMAIL','your@email');

    This will enable membership debug, and when an error happen, it will sending to your email.

    I also try to do some transactions with very large amount, $3000 and $5000, which still working for me.

    Best regards,
    Hoang

  • Louis Basenese

    Also, to reiterate, the transaction posts successfully always. It's the auto-upgrading to premium that doesn't happen when the price is 4 digits.

    When you say it's working for you, you must clarify if you're following the same conditions.

    A 4 digit price ($1000+), serial (renewable), yearly, using the Paypal Payments Standard Gateway.

    And again, the payment will go through, it's just the auto-upgrading to premium that fails. But if the price is simply changed to 3 digits ($999 or less), the auto upgrade to premium always works.

  • Louis Basenese

    Per your suggestion, I put the debug lines in the wp-config.php file, with my email address.

    I went through a $2499 membership process, and the result is the same- payment transaction is fine and successful, but the member is not updated to premium.

    There was NO debug error email that came through.

    Email functionality on the server is fine, I successfully received my account setup notifications, and all WordPress email notifications come through fine. There was just no debug error email.

    So again, we're in the same place. There are no errors. Transactions with 3 figures work fine in any amount and auto-update to premium. But 4 figures do not auto-update to premium.

    I feel like I'm saying the same thing over and over, so hopefully you understand by now and can respond accordingly.

  • Hoang Ngo

    Hi @Louis Basenese

    I hope you are well today and I'm sorry about the issue.

    Here is the quick patch, which fixing this issue.
    For apply the patch, please download the attachment, and then replace the file /membership/membershipincludes/gateways/gateway.paypalexpress.php

    Please note that, sometime, it will take some second delay before the transaction settled on your site. Example, when user return back to your site after payment, sometime, they will still see the protection page, just need to wait for a small time for the system process the payment.

    If you have any issues please don't hesitate to let us know so we can assist

    Best regards,
    Hoang

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.