I know many of you are interested in having different levels of listings with the user paying for premium listings. This is certainly crucial for me and something that I have spent most of my time working on. The object being that a premium member can add more details then a basic member and their listing would be placed above the basic listings.
I have tested the following modules for suitability of collecting payment from users:
1. Pay per node (part of ecommerce)
2. Paypal node (part of ecommerce)
3. LG Paypal (not part of ecomerce).
There are two main ways of approaching this:
A. One listing per user. Listing is the users profile.
B. Multiple listings per user. Listings are nodes and not part of the user profile.
I initially looked at the first way (A) using a combination of views, cck, node profile, views fusion, LM paypal and field permissions. The advantge of this approach is that it is fairly easy to upgrade from a basic to a premium listing/account using LM Paypal. This is done by changing the "role" when the user pays the fee via LM Paypal and using field premissions to make certain fields available to "premium" roles only. You can use Views Fusion to place profile/nodes from premium users above those of basic users.
The major disadvantage of this approach is that a user can only add one listing, because it is tied into the profile. So if the user works for a chain of stores, for example, he/she would need to create a new account for each store. It also makes it a lot more difficult to create listings yourself (see the thread on populating the directory), because you need to create an account first for each listing.
An important note here is that I could not actually get LG Paypal to work. It is still in "Head" status and seems to be quite buggy.
I prefer the second approach (B) because it is more flexible. The administrator can create business listings on behalf of businesses and transfer ownership of the listing(node) to them later when that business creates an account (a good way to initally populate the directory). I used Pay per node (and ecommerce) to charge users for adding premium listings.
When you create the Pay per Node product (create -> product), you specify which content type it is for. So simply create a content type for premium listings (using cck) with all of the relevant fields and set it to "sticky" so it sits on the top of the results.
The process for the user is something like this:
i. create an account
ii. Purchase the "pay per node" product via Paypal
iii. In "my account", click on "Pay per node" and then you see that you have one available node. You click on create, and add that listing (which creates a node with the content type of "premium" (or whatever you want to call it).
The major problem with this is that it seems to be impossible for the user to upgrade from a basic listing to a premium listing because they are two different content types. I have tried the "Node Type" module to enable users to upgrade by changing the content type, but this do NOT force when to pay for the node, because they are not creating a new node.
Does anyone have any ideas on how to enable users to upgrade without having to add all of the data again?

Comments
Actions?
This is just a SWAG as I haven't looked into any of this, but can you tie a purchase to an action? My plan (not yet implemented) is to put all the fields on the same content type, have a hidden "premium listing" field, and theme the output differently based on that. When a person pays for premium, I flip the switch, so to speak. If it could be tied into actions, perhaps that could do the switch flipping?
Michelle
Payment types
I'm not sure if you're referring to the same module when talking about LG PayPal and LM PayPal... I tried the same modules as you did and got stuck on the upgrade as well. I also tried LM Paypal and it did work for me just fine. LM Paypal has 2 different levels of sponsorship: 1.role subscription; 2. node subscription. I tried the node one. It doesn't have to be nodeprofile or usernode - it can be a regular node that user can create as many as they want... but in order to make them live - they need to pay. Otherwise nodes stay unpublished. I actually remember now that nodes didn't get published after the payments, so I had to change status manually... but that's a minor bug considering that nothing else worked :)lol
Michelle, I'll take a look
Michelle, I'll take a look at Actions and see..
Gemini,
Sorry, yes I do mean LM Paypal.
Are you using Drupal 5.2?
I tried the node subscription as well. The problem that I had was that the node was published even though the user had not paid for it! It had a note at the bottom of the node say something like "not published", but it was there for all to view.
Did you create a node type with the publishing status set to "unpublished" ? I tried it that way, but when the user looks in "my account", the node can not be viewed and can only be viewed by the administrator.
--
BeFused - Drupal tutorials | Twitter @blairwadman
Yes, I'm using 5.2 and yes
Yes, I'm using 5.2 and yes you're right - that's exactly what was happening. I think I submitted an issue ticket for it as well. I made nodes unpublished by default and created a view to show them to a current member. What I did, I redirect people on their login to a specific page that shows that view... I actually have a message with call to action to create new listing.. below I list unpaid listings and below that their active listings. Just 2 different views.
Sounds like a good way of
Sounds like a good way of doing it. I'll submit an issue ticket as well in the hope that the developer can tidy up the process a bit. It does seem that LM Paypal is probably the best solution for a directory.
--
BeFused - Drupal tutorials | Twitter @blairwadman
subscribe
link