So Let's Talk About Paid User Upgrades...

digitalpoint

Well-known member
I'm thinking I might need to rewrite the user upgrade system that comes with XenForo, but before I start mucking with that, maybe I'm missing some stuff or not looking in the right place?

It seems okay when you have a few paid upgrades... but when you start dealing with thousands of users with paid upgrades (or even hundreds), the system starts having issues.

Not handling Canceled_Reversal payment status makes users not get the subscription they paid for in some cases (more info on that here).

Not handling overlapping subscription periods. For example say a user has a month subscription to something, and in the middle of that month, they upgrade to an annual plan. The annual plan starts then, not at the end of the existing one. In addition, I think the system might (not 100% sure on this) cancel the user upgrade when the MONTHLY one expires, basically making the user not get the annual one. This could be solved by grouping the upgrades so certain upgrades were linked to others, and then any incoming subscriptions extend the end date, rather than ignore it.

If you look at a user record in the AdminCP, there is no indicator that have an active user upgrade.

You also can't search if the user has a user upgrade. If you have 100 pages of user upgrades, the only way you can find it to know if the user has one or to manually downgrade it is to page through 100 pages and look for that username. Yeah... no. :) Ability to search for other things too would be nice (like transaction ID).

Using the (really) old "websites payments" system for setting up the payments is well... really old and very limited. PayPal has a fantastic NVP API (does not require pre-approval to use) that gives WAY more control... like you could tell the user if their PayPal subscription was active or not in PayPal by paying API call... you could let the user cancel the PayPal subscription from your website, etc. More info on that: http://xenforo.com/community/threads/paypal-nvp-api.22939/
 
On this specific point:

Not handling overlapping subscription periods. For example say a user has a month subscription to something, and in the middle of that month, they upgrade to an annual plan. The annual plan starts then, not at the end of the existing one.

http://xenforo.com/community/threads/regarding-user-upgrades.35231/#post-399968

edit - oh wait, you are talking about different upgrades? Then the system needs multiple payment / duration options for individual upgrades.
 
You are correct. Current system is far from usable on large forums.

I've been running forum that uses subscriptions, sorting through hundreds of pages in order to downgrade user was not an option, so I wrote a custom add-on that subscriptions tab to user editor. Its not a proper add-on because it modifies core XF code, so I won't publish it, but I can send you a copy if you want it.

Also there is a bug in XF that you might want to fix on your forum: http://xenforo.com/community/threads/paypal-ipns-returning-500.31736/page-2#post-363934
 
For what it's worth, I've not had a paid usergroup upgrade work since forever. The payment gets made, the usergroup doesn't change and the user always (without any exception) has to PM me to say they've bought it and have me manually upgrade them. And it's not for a huge site either.
 
I'm thinking I might need to rewrite the user upgrade system that comes with XenForo

If that does become your action, it would be terrific to have an option to run a defined/job script upon successful completion of an upgrade. In this way you can perform non-XF actions as a result of the upgrade, such as create an email account when the user upgrade (purchase) has completed. Just, cheekily, getting in early ... ;)
 
For what it's worth, I've not had a paid usergroup upgrade work since forever. The payment gets made, the usergroup doesn't change and the user always (without any exception) has to PM me to say they've bought it and have me manually upgrade them. And it's not for a huge site either.

Check the xf_user_upgrade_log table. Is there any record of the transaction? The record may contain a specific error message if there was a problem. If there is no record of the transaction then make sure the payment completed (in your paypal account). Also check these things:

1) Make sure your board URL is correct:

Admin CP -> Home -> Options -> Basic Board Information -> Board URL

2) Note that the paypal callbacks don't work if your forum is behind a htaccess login.

Or it's possible Paypal simply failed to send the callback. That happens sometimes in which case you can manually upgrade the user in the Admin CP.

If that does become your action, it would be terrific to have an option to run a defined/job script upon successful completion of an upgrade. In this way you can perform non-XF actions as a result of the upgrade, such as create an email account when the user upgrade (purchase) has completed. Just, cheekily, getting in early ... ;)

http://xenforo.com/community/resources/run-query-on-user-upgrade-code-example.396/
 
You are correct. Current system is far from usable on large forums.

I've been running forum that uses subscriptions, sorting through hundreds of pages in order to downgrade user was not an option, so I wrote a custom add-on that subscriptions tab to user editor. Its not a proper add-on because it modifies core XF code, so I won't publish it, but I can send you a copy if you want it.

Want. Please.

Everything else Shawn says is pretty much spot-on. I picked up a plugin from somebody that allows the same upgrade to be purchased repeatedly, but my users don't really understand how it works. And if you have overlapping subscriptions, XF doesn't seem to have very elaborate checking to ensure that the expiration actions for the first subscription don't screw up the ongoing subscription.

Me? I'd just be happy if somebody wrote a plugin that exposed the user_upgrade_active and user_upgrade_expired tables within the acp. Maybe just add a tab on the user account details. The way things are right now, the only way you can accurately add additional time to an existing subscription is to change the end_date field in the DB. If you try to manually add an account upgrade with the acp tools, it defaults to changing the time to today's date plus the upgrade period. So if somebody still has an existing yearly subscription that expires in July and you manually add another on top of it, XF changes the date to 2/4/14, rather than 7/14.

I am going to make use of that cancelled_reversal bug to get myself a DP premium member account, though. That's a good find.
 
While I'm thinking about it, permission settings for upgrades would be awesome as well. That's something we've gotten by without since vB, but it would be great to have again.

My only fear is that if somebody writes an add-on that does these things, XF will write their own in the next release and I'll have to migrate the data.
 
My main concern I have (which im starting to deal with hundreds now) - is the following:

  1. Users are clueless how to take benefits afterwards, a lot use mobile so any notifications isnt sent to them. I need an email or private message stating that they are now signed up as a paid subscriber and it will show a list of how to take advantage of each benefit.
  2. Easier way after or before they are signed up, a way to pay for more years + discounted for the more years they choose to upgrade upon.
Lemme know, im highly interested ;)
 
Check the xf_user_upgrade_log table. Is there any record of the transaction? The record may contain a specific error message if there was a problem. If there is no record of the transaction then make sure the payment completed (in your paypal account). Also check these things:

No errors, but the record is there and payments have all completed in paypal.

1) Make sure your board URL is correct:

Admin CP -> Home -> Options -> Basic Board Information -> Board URL

Yes it is.

2) Note that the paypal callbacks don't work if your forum is behind a htaccess login.
It's not behind htaccess login.


Or it's possible Paypal simply failed to send the callback. That happens sometimes in which case you can manually upgrade the user in the Admin CP.

It's not happening sometimes, it's happened EVERY time since I put the site on xF, which was over 12 months ago :D
 
My only fear is that if somebody writes an add-on that does these things, XF will write their own in the next release and I'll have to migrate the data.

Yes, it would be about time to continue development at XenForo and steer a fast path with it...

Seems like we slowly but certainly reach a point where patching current limitations with to many add-ons is simply reaching it's end. The front end of XenForo was written with so many good ideas and careful thougths about usability but the back end on the other side lacks too many urgently needed features to seriously run a forum community.
 
It's not happening sometimes, it's happened EVERY time since I put the site on xF, which was over 12 months ago :D

Hi! I don't know if you are still having this issue, but I was having this exact same problem (and came looking here for the solution) and I THINK it's because the IPN url in your Paypal seller settings is wrong! Mine apparently was, so I am hoping that is the fix to this, and maybe will be for you too! After having transfer my domain name, and then importing the forum I totally forgot about updating the settings in paypal itself.

I found this in the user guide http://xenforo.com/help/user-upgrades/

In order to receive payments for User Upgrades, you must have a Premier or Business PayPal account. You must enable Instant Payment Notifications (IPNs) in PayPal under your Selling Preferences. You should enter a notification URL of [your Board URL]/payment_callback.php.[/url]
 
Hi! I don't know if you are still having this issue, but I was having this exact same problem (and came looking here for the solution) and I THINK it's because the IPN url in your Paypal seller settings is wrong! Mine apparently was, so I am hoping that is the fix to this, and maybe will be for you too! After having transfer my domain name, and then importing the forum I totally forgot about updating the settings in paypal itself.

I found this in the user guide http://xenforo.com/help/user-upgrades/
Hi, still having the issue but no it's not the IPN :(
 
If you look at a user record in the AdminCP, there is no indicator that have an active user upgrade.

You also can't search if the user has a user upgrade. If you have 100 pages of user upgrades, the only way you can find it to know if the user has one or to manually downgrade it is to page through 100 pages and look for that username. Yeah... no. :) Ability to search for other things too would be nice (like transaction ID).

Big bump on this. With thousands of user upgrades active, performing customer service is impossible. "When does my sub expire?" I don't know without looking through 240 pages. Upgrade info should be shown in user's profile and should be editable from there. Please! :)

I really hate to install an addon for this functionality, because it's sure to be released as a core feature at some point, right? ;)
 
Has anyone tried aMember with Xenforo for upgrades? I haven't, but have heard its pretty good. It might be a solution for now.
But as i said.... I have not tried it, so I do not know the capabilities of aMember. I am too hoping to start a paid subscription upgrade for my forum (when i get it)
 
Has anyone tried aMember with Xenforo for upgrades? I haven't, but have heard its pretty good. It might be a solution for now.
But as i said.... I have not tried it, so I do not know the capabilities of aMember. I am too hoping to start a paid subscription upgrade for my forum (when i get it)
Is there a demo somewhere?
 
@Moshe1010, the official aMember forums run on XenForo. They most likely use it.
Yea, but you can't really see it from an admin perspective. They have the regular Demo, but I can't find any XF demo with it. I'm wondering what the XF integration gives for admins except for customer's profiles integration (subscription/payment history/ customers details)
 
Top Bottom