Possible to prevent Non-Supporter signups?

Supporter seems to be good enough for our current project but I can't help but wonder if there's a few more things I could do with it.

What we ideally want is for people to sign up but be required to set up a subscription via PayPal. Then, they would have a membership with 30 "free days" and then start being charged their monthly subscription rate after that.

Consequently, there would be NO free plan, but there would be effectively a free trial period. And if their membership were to expire, their site would no longer be publicly visible.

Is this possible with Supporter?

  • brigleb

    @drmike: thanks for the suggestion, although Pay to Blog is missing the trial period feature so can't work. It also lacks many of the features of Supporter that I kinda like, such as the statistics. Simpler, though....

    @Aaron: why would modifications to the paypal button code be necessary? it seems the trial period is an option in the settings for Supporter. also, your suggestion re: simply altering the form for signup makes sense, but can't people just, say, close their browser window and then go log in, and not have to pay at all??

  • brigleb

    Yeah, it doesn't seem like Supporter actually sets the "free days" value for PayPal. Am I missing something?

    It seems the code should be in there around line 218 of supporter-gateway-paypal.php. For a 30 day trial, we should be setting a1 to 0, p1 to 30, and t1 to D (for "days").

    https://www.paypal.com/en_US/ebook/subscriptions/html.html

    While I could certainly hardcode these in myself, I hate doing that particularly when there are options in the UI that should be setting them. Any suggestions?

  • brigleb

    Well, I'm getting a bit off-topic here and I apologize for that, but my issues are relevant to the present discussion, so...

    I went ahead and added those input fields mentioned in my last comment, to supporter-gateway-paypal.php. It worked great, I saw the $0 charge in PayPal, and it said I would be charged next on January 31. Perfect!

    However, though PayPal is quite happy to have accepted my payment, and indicates that everything went fine, my WPMU site did nothing.

    I was taken back to the /wp-admin area, but it doesn't know that I've "paid," and will only show me the /wp-admin/supporter.php page. This is for a subdomain of my site, at http://testing.fluttershow.com/. My site uses only the Supporter and Domain plugins from here.

    I'm wondering what's wrong. Is there an issue with a $0 transaction coming from PayPal? Is there some reason it would not notify my server of this? I see nothing whatsoever in Apache's error_log and nothing noteworthy in access_log.

  • Aaron

    The current trial period doesn't require signing up for a subscription ahead of time, which it sounded like you wanted.

    No, the force signup option completely takes over the admin area until you click the dismiss link. With minor code changes you can remove the dismiss link and and force the checkout screen for everyone.

    If you can't handle it yourself, try a developer. I'm on there too.
    https://premium.wpmudev.org/wpmu-jobs/developers/2/

  • brigleb

    Thanks, guys, but I'm still a little confused. There is no documentation anywhere on the "free days" feature so the change I made, to enable the $0 charge for the first 30 days on PayPal, seemed logical.

    So I'm still wondering why, when that transaction has been completed by PayPal, the plugin is not then letting me log in and use the account.

    I haven't removed the "dismiss" link but I plan to, once this problem is resolved. That won't be difficult. But the fact that the subscription purchase via PayPal isn't working... that's a show-stopper.

  • brigleb

    So I gather that my understanding of the "free days" was incorrect. It apparently waits that many days, and then upon login presents the user with the payment request, keeping them from logging in. Is that correct?

    Perhaps I am missing something, but I was expecting the behavior to use PayPal's "free days" feature. I prefer this because it asks people for their payment information up front, which I believe will lead to more users staying with my system. This is also the way most services work that I am used to... Basecamp by 37signals is a good example.

    Any possibility of at least making this an option for that feature?

    Regardless, on a more practical level: what happens to the users after the "free days" period? Or rather, what happens to their blog? If they have for example uploaded a gigabyte of images, will they just stick around?

  • Andrew

    Hiya,

    So I gather that my understanding of the "free days" was incorrect. It apparently waits that many days, and then upon login presents the user with the payment request, keeping them from logging in. Is that correct?

    If you're referring to the Pay to Blog plugin then that's correct for the most part. The difference is that the users can still login but the blog admin panel is disabled.

    Perhaps I am missing something, but I was expecting the behavior to use PayPal's "free days" feature.

    I'm afraid that's not how the plugin works.

    Any possibility of at least making this an option for that feature?

    There are any immediate plans. You could certainly modify the plugin to meet your needs though

    what happens to the users after the "free days" period? Or rather, what happens to their blog?

    The admin panel is disabled until they pay.

    If they have for example uploaded a gigabyte of images, will they just stick around?

    Yes. However, you could code a plugin that bumps up the upload space after they pay.

    Thanks,
    Andrew

  • brigleb

    Thanks so much, Andrew.

    I did in fact modify the Supporter plugin to use the "free days" feature via PayPal. And it worked, according to my PayPal account. The problem is that even after signing up (essentially paying $0), my site did not recognize that payment, presumably not getting a valid IPN response or something.

    I'm just curious if you know why this might be. Do you know if there is an issue with PayPal, in terms of the "free days" feature? Perhaps it does not send a notification on a signup when no actual monetary transaction takes place? I realize I'm getting a bit "speculative" here but it's worth asking if you have any ideas that could help me with this approach.

    You mention that I could "write a plugin that bumps up the upload space after they pay." Does Supporter not offer that feature? It seems that it does, at least according to the UI. Am I misunderstanding how that works?

    Finally, it seems that Supporter disables the admin panel when the subscription expires. Is there any way to disable the whole account, or at least for the admin to receive a notification of this event? My concern is that, without this taking place, the system could become quite cluttered with unused blogs, not to mention all of the files those users have uploaded, incurring ongoing expenses.

    Thanks so much for all of your helpful answers.

  • James Farmer

    It could be that a $0 payment wouldn't work with PayPal - have you considered manual upgrades if you'd like to try offering free accounts?

    Aaron may have some other ideas / info about this too... technically speaking.

    And yeh, Supporter does include a featrure that increases the upgrade space by a set amount for paying members - just check the options menu about 70% of the way down

    "Finally, it seems that Supporter disables the admin panel when the subscription expires. Is there any way to disable the whole account, or at least for the admin to receive a notification of this event?"

    I don't believe there's a way to disable the whole account, but I'm sure notifications could be built in.

    I wouldn't worry about clutter - WPMU is built to handle hundreds of thousands of old a, new, deactivated and spammed blogs... it's the kind of thing you might need to concern yourself with once the site is very large and then a simple sql command removing blogs which have been deactivated etc. should do it.

  • brigleb

    Thanks James and Andrew. I think I'm getting my head around it now.

    I'm extremely reluctant to consider manual upgrades - or in fact anything manual! I'm definitely adjusting my expectations to run my site the way this plugin works, at least until I find the time to rewrite it (or hire someone to do so). It's not that I'm lazy it's just that when you start adding manual things you are subject to human error and it takes more and more time, and so on. But we'll see.

    Regarding the clutter of expired accounts... what I'm building is essentially a blog site for artists. Therefore, I do very much expect folks to upload a large quantity of files. The database space is a non-issue, as you say, but the uploads most certainly could be. So ultimately, if I stay with this plugin, I would probably add functionality to reduce members back to their previous quotas.

    That of course brings up complications. With our Basecamp account, if you have 10GB stored on your account, and want to downgrade to a 5GB account (for example), it won't let you. This kind of iron-fist approach isn't going to work with PayPal, so I'll have to come up with an approach that does. I will probably want the system to deal with it automatically, perhaps via a cron job after a specified length of time.

    I guess that does seem like a drawback to Supporter I hadn't considered from the outset. While it does grant more upload space when a member becomes a supporter, it has no means of reducing that space when their status downgrades.

  • Aaron

    Finally, it seems that Supporter disables the admin panel when the subscription expires.

    It does not do this, just moves everything back to the "basic" blog features. To change this you can hook the 'supporter_inactive' action, which gets fired on expiration with a function to update the 'supporter_signed_up' option to 1.

    You will also have to remove the dismiss link by commenting out line 503 of the framework file.

    Is there any way to disable the whole account, or at least for the admin to receive a notification of this event?

    You can hook into the the 'supporter_inactive' action like above.

    As far as PayPal and the IPN, I'm not sure what is going on. Perhaps it's not sending a 'Completed' or 'Processed' payment_status and only the 'subscrip_created' notification. In which case you will need to make some modifications to supporter-paypal.php.

    Hope that all helps!