By LeeMcL on
Thanks to all the people who have helped so far (see this old thread http://drupal.org/node/73727 for previous discussions). That thread became a little too long and unweildy so I've started this one as a replacement.
The new release is out and please people, I need feedback. Only a few people have provided any so far. To them I send thanks!
Here are the highlights of the changes:
- Added options to email subscribers on joining, near end, end
- Option to email admin on new subscribers and subscribers leaving
- Added trial period support
- Improved admin support - better ways to view subscriptions, subscribers..
You can find the new release here:
Comments
Feedback request
Happy to provide feedback but not quite sure where you'd like it to be sent? Is here the right place?
If so! just downloaded and installed, creating first subscription:
user warning: Data too long for column 'type' at row 1 query: INSERT INTO watchdog (uid, type, message, severity, link, location, referer, hostname, timestamp) VALUES (1, 'LM_PayPal_Subscriptions', 'sql:INSERT INTO {lm_paypal_subscriptions} ...
type too long
First thanks for the feed back and posting here is fine.
I'll make sure that watchdog is passed a suitable short 'type', maximum 16 chars. I was surprised that I've not been hit by this myself. But a quick search on Drupal.org shows it is MySQL 5 in "strict" mode and I am running MySql 4.1. I just hope that there are no other oversized strings, nothing obviously stands out!
I was about to post a new version I'll make sure it is fixed for that.
Lee
--
Lee McLoughlin
lmmrtech.com
New Release
New version out with support for paid adverts.
You can find out more and download it from:
http://lmmrtech.com/lm_paypal_module_for_drupal
--
Lee McLoughlin
lmmrtech.com
Thanks for the speedy fix
Thanks so much for the speedy fix - it's working beautifully now. The paid adverts sound very interesting so I've put 1.17 in and the type problem is definitely gone but the ad bit is eluding me ATM!
Paid Adverts
Once you've enabled the lm_paypal and lm_paypal_paid_adverts modules you will need to configure both (admin/settings/lm_paypal and admin/settings/lm_paypal_paid_adverts). You will probably want to change the access control so that only certain roles can create adverts. Then users can create adverts using the new link under 'create content'. Once they have created an advert they can make it publically readable by paying for it.
Hope this helps
Lee
--
Lee McLoughlin
lmmrtech.com
thank you
Lee,
thank you very much. I'll try to test it in the next 2 days.
Others please help test!
bad news
bad news. this is on the old version, not the new version.
the blank website problem is back.
all pages are completely blank.
right now I can produce this problem with complete reliability
rename lm_paypal.module to something else
site works
restore lm_paypal.module (by renaming)
everything blank.
although the problem was been intermitten in the past, right now it occurs with complete reliability.
however, this is on the old website, not a clean install.
i've made no changes in the meantime.
others, please test and see if you get this also.
blank pages - memory?
The lm_paypal module is pretty large so it might be causing you to run out of memory. It runs on my standard setup without change but you could try increasing the memory available to PHP. I usually do this by adding the following to my settings.php file:
ini_set('memory_limit', '12M');
That or there is something weird in the your old website that is still causing it problems.
Lee
--
Lee McLoughlin
lmmrtech.com
Is this module for 4.7 only?
I currently have a 4.6 install running and need to get paypal subscriptions working on it. So, will this module work on 4.6?
lm_paypal is for 4.7 only
Sorry but this module will not work with 4.6.
Lee
--
Lee McLoughlin
lmmrtech.com
/user fixed
.module was missing ?> at end.
after I put that in, I can get to /user.
however, front page is still blank.
locale
it is possible I've found the problem.
locale module must be enabled.
i looked in cpanel error logs
said t is undefined function
in api docs it looks like t requires locale function
locale function is in locale module
i enabled locale module and so far everything looks right (this is the old version).
i'll try the new version now.
working great
I have the new version on a clean site.
i've tested the ad module.
everything is working great.
locale is NOT enabled.
no error messages in admin
no error messages in cpanel
right now my ads don't show up in my account, but i assume that's just because you had to leave before it was done.
below i'll add some comments about features.
lee, thank you! you are really very productive. thank you for producing 4 modules so quickly.
after a break, I'll test subs, but since donations and subs were working well before I assume they will be fine.
Everything Working
I'm glad to hear that everything is working OK. Paid Adverts should be working OK - albeit in a limited fashion. I just posted some more notes about them, let me know if they help.
Lee
--
Lee McLoughlin
lmmrtech.com
feature requests for ad module
it's working correctly as far i've tested. so thank you!
what I hope it can do
1) recurring.
I am producing something more like an on-going ad in a magazine, and less like a used car ad. so I'm expecting my ads to be recurring every month.
2) types. i plan to have multiple types. right now all postings appear under one category in "create content"
say (not the actual case)
day care listing
vacation rental
so I need to have different node types that have different fields
3) cck. I was hoping this can integrate with cck. so that each node type can have more than 2 fields.
lee, I know you are on vacation, and I hope you are having a good one. if you can write back and just say whether these features are possible (tho you can't do them right now) that would be much appreciated.
thank you. thank you.
Adverts
Glad to hear that its all working for you.
1) I'll ad recurring ad's on my return.
2) Multiple ad types will take quite a bit of work. (Thats why I did the very simple version currently available.)
I guess I could so something clever with cck. Currently I based things on a story node and even that was a bit tricky!
3) cck: I've never used it. I've used flexinode - but never looked at either at the programming level. Last time I looked which was ages ago, cck was still experimental - is this still the case?
So I'll have a look, on my return, at changing the paid advert node to being based on cck, supporting multiple types and also adding a recurring payments option.
Vacation is good thanks!
Lee
I'm in the process of
I'm in the process of completeing a paypernode.module which works with Drupals ecommerce package. You create your advert node types using CCK, then create a product of type 'paypernode' - in which you can specify the content-type and price.
The only problem I have left is making the workflow nice for the user after they have paid for the advert, I want to redirect them to the node/add/xxxx page. Problems occur when payment gateways do not return instantly with a payment complete status (PayPal is one that sends back the result via the /ipn url).
--
Ixis (UK) providing Drupal consultancy and Drupal theme design.
--
Ixis (UK): Drupal support, Drupal hosting.
workflow
lee,
so nice to hear from you. thanks for the quick reply. I just remembered you are in la from london, not sf, so it's a big vacation. glad you are having a good time. definitely enjoy your vacation.
*. yes, cck seems quite stable now.
*. i realized the workflow is complex. we could either have user pick
a) run this once
b) run this until i cancel it.
or
not give the user a choice.
for myself, i am actually thinking of only having one option for a specific node type.
eg. vacation rental gets "run til cancel"
eg. advertisement for concert gets "run once"
i think i'd rather the user not get "run once" for vacation rental, but I'll have to think about it.
probably one choice per node type is easier for you.
*. I applied for a paypal account. I think i'll just hold off on testing until the account comes thru and i can test live. the sandbox is a lot of trouble
*. the only other thing i'll need in the next few months is file downloads (for selling pdfs) but given how fast you are producing everything it sounds like it'll be easy for you.
*. you are terrific! I'll definitely send you some money if I end up using this, which looks like a very strong possibility right now.
thank you.
Paid Ad's
I'll read up on cck on my return and see how best to implement it.
I was going to use/modify the lm_paypal_subscriptions system to provide recurring payments for adverts. So it will have a similar layout for administrator with the ability to define different kinds of paid adverts with a similar range of payment options. But until I've worked with cck I'm not sure how this will all hang together.
I've not really thought about file downloads but I'm hoping it won't be too difficult.
Lee
thank you
yes I agree. thank you!
file downloads
Lee,
thank you very much for being willing to think about file downloads!
the ecommerce suite has this functionality. i believe it's in a module called generic (but could be another name). (poorly named. generic originally meant anything that does not require shipping.) the functionality works great. you pay for the file. then a link in your menu shows up called "my files". the file is there. you have x days (configurable I think) to view it and/or download it.
it's the one part of ecommerce that works great. i've never seen any modifications to it, as opposed to the other modules that require sub-features, shipping, taxes, etc.
so hopefully, given what a great job you've done in getting out recurring memberships so quickly (and fixing the many major problems it had), file downloads will be a piece of cake!
Sounds very promising - can you import existing subscriptions?
Hi Lee!
I just found your new module by chance and it sounds like this will be the future replacement of the existing two PayPal modules...
I've read thru both long posts but could not find out
a) Did you inherit some code from the old modules means: can they be left aside or do I need them?
b) Is there a way to import existing client subscriptions into the ad system ?
My requirement here is
1) different durations and prices (hence different roles/values)
2) different subscription trigger points
so practically everythings different
I'm thinking about creating a sql script for that purpose, feeding all the "paypal history" into it by hand,
so there's not necessarly a need for a full automated subscription sync
c) do you have a way to modify existing subscriptions, e.g. change the amounts or trigger dates? I read in the API spec that there seems to be something like that, but it's not available via the PP UI
Thanks & best regards,
Christoph C. Cemper
--- http://www.cemper.com
--- http://weblog.cemper.com
--- http://www.marketingfan.com
Importing Existing Subscriptions
Hi Christop.
Are there really two existing PayPal modules? I know the old PayPal_Framework and its subscription and tipjar module buts that the only once I know of.
a) My module is writen from scratch and is not based on nor requires any other modules. Apart from, of course, the standard Drupal modules.
b) Currently there is no way to import subscriptions from other systems. At some stage I do plan to have some way to compare PayPal's history with the details inside my module. This is mainly to deal with system recovery after crashes. But this isn't something I will be working on in the near future.
So if you do program this I'd be very interested in it!
c) yes you can modify existing subscriptions. But I hid it away because it is problematic. PayPal has a record of all the subscriptipn details for a subscriber and they cannot be modified once a subscription is taken out. So if you edit the subscription details inside Drupal you will only effect new subscribers. Then you will have new and old subscribers apparantly with the same subscription but with different rates/amounts/whatever... so its problematic.
Lee
PS: To edit a subscription go to admin/lm_paypal/subscriptions click on the subid and then you'll find an edit link near the bottom of the page.
--
Lee McLoughlin
lmmrtech.com
paypal subscription modify
Lee,
thanks for your reply...
I actually didn't mean to edit the subscription data INSIDE the drupal db, which would be obvious, but change the subscription cycle INSIDE PAYPAL
the PayPal IPN API has the function subscr_modify specified
and according to the specs from May2005 you could change things even using an "subsrc_effective" date!
according to p61 you can change
- periiod 1..3
- amount 1..3
- mc_amount1 and amount2
- recurring
so that would allow for changes to the future billing, increase in rates etc - all features that are not available using the normal PP interface
best,christoph
subscription modify
I am using the May 2006 documentation and although it mentions subscr_modify is doesn't give much in the way of details. It doesn't even say which fields can be modified or how you specify the subscription to change.
After Googling it seems you can use it to change the details for a single subscriber. For example by having an "extend" button that would give them extra time on their subscription.
Sounds like a useful feature to have in the long run. I'll add it to my TODO list.
Thanks for pointing it out.
Lee
--
Lee McLoughlin
lmmrtech.com
works as far as I have tried it
Lee
I have installed your module and it seems ok. I am looking at various options for people to subscribe to a (wwoof.org) web site either as hosts (providing information on pages, part of which is not viewable to anon browsers) or members (seeing hidden information for host pages in different countries, depending on the flavour of membership). We are VAT registered so need to know the country of the payee in reports. At some stage we may want to add VAT to the price where people are from EU countries (as per ec_tax module). Not all member of the orgainsation use the web (or do use the web but pay for membership with cash etc) but we would like to be able to keep the definitive records in the drupal database so we will need to able to add records to user_roles in such a way that they lapse after a year. Manually adding records to lm_paypal_subscribers would seem to be a way of doing this. (poss with other fields to enable accounting)
Paddy
errors
paddy and lee,
would you mind looking in your cpanel error logs (might be the same as apache error logs) to see if you get the same errors I'm getting?
dozens of these
[Mon Aug 21 14:08:19 2006] [error] PHP Fatal error: Call to undefined function: l() in /home/ /public_html /modules/lm_paypal/lm_paypal.module on line 61
http://drupal.org/node/78002#comment-147105
thank you
Very strange error
I've never seen this error and since the function l is in one of the core Drupal modules, common.inc, I find cant think how it would occur.
Is there anything unusual about your Drupal installation?
Lee
--
Lee McLoughlin
lmmrtech.com
possible error message on completely new install
I've just set up some new sandboxes. This is a completely install with no contrib except for lmpaypal.
I just process a donation. It appeared to work correctly. But I did find this (seeming) error message in admin.
empty item_number - being converted to web_accept
Its not an error
All donations have an empty item_number so that is really just a reminder. It is only printed when debugging is enabled so it wont appear when the code goes live.
Lee
--
Lee McLoughlin
lmmrtech.com
everything else right
everything else looks right
1. deducted from user account in paypal
2. added to biz account in paypal
3. shows up in admin -- lm
4. no errors in cpanel
not removed from menu
I have noticed that lm paypal is not removed from the navigation menu when the modules are removed.
I believe this is not expected behavior
Menu update
Did you disable the modules under admin/modules first? I just did that here and the lm_paypal references are removed from the menus.
--
Lee McLoughlin
lmmrtech.com
working
you are right that this is happening correctly now with the new version. I guess I forgot to disable them before removing them. thanks.
if price is zero
my subscription button is not working. I don't know why.
UPDATE: I just checked the old site. The button on the old site works if I go to it via the navigation menu. On the new site, the button does not work, even if I go via the navigation menu. so problem is not button. I've enabled access control. both sites use version 1.17. I'll have to think about what else needs to be configured.
RESOLVED. It turns out that I had inadvertently skipped the price when setting up the subscription because of the way the screen paged down. The default price is zero. I realized this finally when using the navigation menu to get to the button and the description said that the price is zero.
I'm leaving this here for others who may run into the same issue. The Paypal error message was too vague.
it's taken directly from the readme
This is the error i get
http://www.sandbox.paypal.com/cgi-bin/webscr
Error Detected
The link you have used to enter the PayPal system is invalid. Please review the link and try again.
_account
The link you have used to enter the PayPal system is invalid. Please review the link and try again.
Pre-Checking for Paypal
PayPal can be a little cryptic when it encounters an error in the subscription details. I've added a form validation function to look for potential errors in the subscription and I'll check for the problem you encountered too.
--
Lee McLoughlin
lmmrtech.com
great
just tested sub
everything working great.
user promoted correctly and instantly. (so nice to see that working smoothly without the old timezone and cron problems.) Lee, thank you!!)
2 paypal accounts correctly adjusted
no error messages in admin or cpanel.
hurray!
after a break I'll test the ads and the notification messages. Lee, thank you for putting in the very flexible 3 kinds of notification emails.
ad module
the ad module is working right as it was before.
a few comments
1) for webmasters: the easiest way for the buyer to view their ad after purchase is probably to enable the module tracker, which puts "recents posts" in navigation menu, and direct user to look in recent posts via the postpurchase page.
2) for Lee: I imagine 80% of buyers will think the ad has been published before it's paid for, because the buy can see it. I know you tell them others can't see it, but I don't think they will understand that. Perhaps one way to help address this is to change the name of the paypal tab to "pay to publish ad". if possible, changing the "view" tab to "view draft" tab will also help.
I think the confusion will cause a lot of angry users who will demand to know why their friends cannot view the ad, even though they can. they might even do a chargeback on their credit card, which will be expensive.
i know it is a misunderstanding on the buyer's part, but the process is so counterintuitive that I think we'll have to make a lot of effort to make it as clear as possible. the customer service costs and chargebacks (plus the costs of being possibly frozen by paypal for complaints about fraud) can easily add up to more than the revenues from the ad.
i do understand that the way drupal is set up we may have to live with this workflow. it is the same workflow suggested by gordon, the maintainer of ecommerce.
Lee, thank you for doing a great as well as fast job of implementing this. it's really exciting to see this almost ready.
Paid Ad Workflow
I'll add a big warning at the start of the Create/edit page to remind the user that the advert will be visible only to them until it is paid for. If I can I'll add more reminders into other places too.
I'll change the PayPal tab - but I cannot see how to change the view tab.
--
Lee McLoughlin
lmmrtech.com
admin
will the buyer be able to view "my ads"?
will there be a place where we can view a log of the ads transactions?
since the other 2 modules have this, I guess those 2 are planned features.
will we be able to download spreadsheets of the transactions? is this straightforward, or quite hard? clearly if there are a lot of buyers, this feature will become very important. my sense is that we can't sort the transactions, right? we can't sort the user list that comes in drupal by default, so i guess we have the same limitations here. my plan is to download and sort in spreadsheet software.
I know the feature requests are coming fast, and you've already said you'll take a look at multiple types of ads, as well as cck. thank you!
oops
oops. the error messages have returned. this is on a completely new sandbox 4.7.3 with only lm contrib modules. I wouldn't think it's any problem with the website.
can other testers please check to see if you have these error messages?
i found them in cpanel under "error logs".
as far as i know, they are "apace error logs" but i'm just guessing. maybe it's php error logs
any info on all the possible places to look for error logs would be appreciated
[Mon Aug 21 14:08:19 2006] [error] PHP Fatal error: Call to undefined function: l() in /home/ /public_html /modules/lm_paypal/lm_paypal.module on line 61
[Mon Aug 21 14:05:15 2006] [error] PHP Fatal error: Call to undefined function: l() in /home/ /public_html /modules/lm_paypal/lm_paypal.module on line 61
[Mon Aug 21 14:05:15 2006] [error] PHP Fatal error: Call to undefined function: l() in /home/ /public_html /modules/lm_paypal/lm_paypal.module on line 61
[Mon Aug 21 14:05:15 2006] [error] PHP Fatal error: Call to undefined function: l() in /home/ /public_html /modules/lm_paypal/lm_paypal.module on line 61
[Mon Aug 21 14:05:13 2006] [error] PHP Fatal error: Call to undefined function: l() in /home/ /public_html /modules/lm_paypal/lm_paypal.module on line 61
[Mon Aug 21 14:05:11 2006] [error] PHP Fatal error: Call to undefined function: l() in /home/ /public_html /modules/lm_paypal/lm_paypal.module on line 61
[Mon Aug 21 14:03:40 2006] [error] PHP Fatal error: Call to undefined function: l() in /home/ /public_html /modules/lm_paypal/lm_paypal.module on line 61
[Mon Aug 21 14:03:40 2006] [error] PHP Fatal error: Call to undefined function: l() in /home/ /public_html /modules/lm_paypal/lm_paypal.module on line 61
[Mon Aug 21 14:00:20 2006] [error] PHP Fatal error: Call to undefined function: l() in /home/ /public_html /modules/lm_paypal/lm_paypal.module on line 61
[Mon
This function is being called about 60 times an hour. Why is it being called so often when no one is buying anything?
hook_init()
This is a very puzzling problem which I just cannot duplicate here.
But hook_init() functions seems to be handled specially inside Drupal. I wonder if there is some circumstance under which it exectures my lm_paypal_init() before loading common.inc?
If this is the case I'll recode to avoid hook_init() functions alltogether.
--
Lee McLoughlin
lmmrtech.com
New Version Avoiding hook_init()
There is a new version avoiding hook_init() available at:
http://lmmrtech.com/lm_paypal_module_for_drupal
--
Lee McLoughlin
lmmrtech.com
error logs
I am running the module on a shared host under IIS and there is one log in the control panel which is more equivalent to apache access log rather than the error log. The only thing to go on is the time for the page to be generated. I will put the module on my machine here and see if I get any errors.
hook init
Hi Lee,
thank you for your six comments!
I'm interested to hear that you don't see the error messages. these are not from admin. these are from cpanel (my host verified they are apache errors). Based on the answer below, I would think the errors would show up in any environment. I guess you have Apache error logs enabled and you've checked the Apache error logs, right?
--The quote below is an answer I got from a Drupal developer
--I realize now you are calling t before t is loaded.
--Perhaps this problem would simply go away if we call t after hook init
[begin quote]
In line with what KarenS wrote: lm_paypal does some things in hook_init it
shouldn't do (and can't do):
for example:
Drupal has multiple so called bootstrap phases; depending on the stage and
cache settings, not all functions are loaded.
[end quote]
more on hook_init
here are comments from KarenS
http://drupal.org/node/79867#comment-147180
When you submit the bug report, suggest the developer look at hook_init(). The functions are not loaded until after hook_init() runs and I have seen this error on other modules that tried to use various drupal functions in hook_init(). Also, hook_init() runs even for cached pages, and in those cases the functions are not loaded at all.
You pretty much have to assume that no functions are available in that hook, so hook_init() either needs to be rewritten not to use functions or the functions must be moved to some other place that runs later in the startup process.
not calling hook init
Hi Lee,
thank you very much for posting the new version so quickly.
i'll test it
would not calling hook init create problems like not being able to use locale module (which uses t)?
hook_init gone
None of my modules now use hook_init() so it is no longer an issue.
--
Lee McLoughlin
lmmrtech.com
errors might be gone
Lee and others,
I've installed today's 1.18.
UPDATE: I saw some errors (the same ones), but I realized they are on an old install 1.17 that I reenabled to check something. I haven't seen any errors on the new one yet.
now I was going to test the notification emails.
Lee, you write "be very careful about editing subscription details." is it possible to lay out a list of variables (no rush) that can be changed (which I presume the email variables are) and variables that cannot be changed? I believe the price and subid but I am not sure about some of the others. i can certainly imagine myself wanting to change some of the others, such as trial unit days.
by the way, today the user was correctly billed another cycle and correctly remains in the promoted role. way to go!
Editing Subscriptions
The notes about being careful editing subscriptions are out of date. I'll correct them. You can edit whatever fields you like as the details are only checked on subscription signup.
The problem with editing subscriptions is it will have no effect on any existing subscriptions as PayPal has recorded all those details. The changes will only effect new subscriptions. So you could end up with subscribers possibly paying different amounts over different periods. The code will cope with it but it might upset users.
--
Lee McLoughlin
lmmrtech.com
working great
working great.
1. another subscriber was just correctly processed. (promoted, shows up in my account, shows up in admin lm sub). did 2 users with multiple roles.
2. haven't had any error messages with 1.18. it's been an hour. I've done about 10 transactions, so it seems to be fixed. hurray.
3. notification email was sent out correctly. I'll play around with it to see if it can handle long messages. (yes, okay so far)
-. this is a minor thing. in the admin -- settings navigation menu, the lm modules runs past its column. in some themes this could possibly break, but the admin could simply revert back to a base theme when administering lm modules. it may not be fixable.
4. multiple roles implemented. everything working correctly.
5. cancellation email worked correctly. the one counter-intuitive things is that subscribers are viewed as live or dead. to find out when they cancelled, admin would have to wade through emails or paypal.com logs. paypal logs on paypal.com do not pull out cancellations, so it would be wading through all sub logs. paypal offers a "file"(archive) option but I didn't see where to download the file or whether it's viewable as a spreadsheet.
if others are familiar with the paypal.com interface, pointers about the above issue would be appreciated.
Lee,
it's such a wonderful experience to watch everything work as it should, after seeing the other modules have so many bugs.
three cheers for Lee!
translation
p.s. right now I'm planning an english only site, but just so I know what I'm getting into,
with hook_init removed, will this module work with the translation functions, locale module, etc.?
Translations should be fine
I've followed all the developers guidelines so every piece of English that I print is wrapped in a call to the translate function t(). So in theory it could all be translated.
Lee
--
Lee McLoughlin
lmmrtech.com
If you don't want to change your Paypal settings
Thanks for the module. I wrote my own but I think I will switch to yours. Anyway people may not know you can tell Paypal on every request what url to post ipns to. So if you want to do this you can add
to the modules in the form generation functions. I don't know about the other two modules but in the subscription module a good place to put it would be between lines 449 and 450.
Nathan
Yes I've tested it
Thought I'd add a note saying that yes I have tested this and I know that it works with this module.
Nathan
thanks
thank you Nathan!
notify_url and multiple PayPal modules
Hi Nathan,
I also received this idea in an email from Klaus Brune and have now implemented it.
Of course you still have to enable IPN in your PayPal business account but the notify url there doesn't have to point back to lm_paypal/ipn. So lm_paypal could co-exist with other PayPal based modules, such as ecommerce. I'll add some notes about this to the online help.
The only difference is that I dont have your str_replace line. I'm guessing you need this because your site is secure (using https). If that is the case I really should think about a way to allow for this (preferably auto-detecting https)!
Lee
--
Lee McLoughlin
lmmrtech.com
donation threw an error
donations gave this error about an hour or 2 after my last post (about having received no error message).
i don't know why . I am not testing donations and have not been on the test site.
the lm paypal donate module is enabled.
lm_paypal_donate
That function is only used to generate your own donation buttons. So you must have a page with some PHP in it calling this function.
It would only be undefined if the donations module wasn't loaded and enabled. Can you double check that you have donations module enabled.
--
Lee McLoughlin
lmmrtech.com
button
lee,
thank you. with your pointer I think i figured it out. an old test site had this page, but lm modules were disabled. because the page was poorly named, I forgot about it. I'm beginning to see that testing requires a systematic approach and can get pretty complicated! I now have 5 test sites running testing different modules so that I don't have to worry about interaction. sorry for my mistake
cancel error
today, this error was in my watchdog log
error LM_PayPal_Subs 2006-08-23 10:28 Attempt to end unknown subscription, ignored Anonymous view
I have done nothing, so the attempt to end subscription was auto-generated by paypal i think.
If I recall what I did correctly, yesterday I cancelled the subscription via Paypal and everything appeared correctly cancelled.
Going back through the logs, I am a bit confused about what I did yesterday since I'm only using 1 customer to test. What I'll do is add more customers so that I can test different processes for cancellation.
I'll leave this error message here in case you have any clues. i've changed identifying info.
id 16
timestamp Wed, 2006-08-23 10:28
processed 0
test_ipn 1
verify_sign AF7hOPN5A4VXGE5deS2I
payer_email fname@fname.com
first_name f
last_name n
payer_business_name fname
payer_id 6WDYY8X24X8BQ
payer_status 0
residence_country US
item_name make2
quantity 0
item_number 2
receiver_email a@aaa.com
custom 4
mc_currency USD
txn_type subscr_eot
recur_times 2
subscr_id S-57575350665144028
paypal subscr_eot
If you look at the txn_type it is subscr_eot this means that end-of-term was reached. I'm guessing that this is some old test subscription that just completed. While testing on PayPal Sandbox I had some surprises with very old subscriptions resurfacing from when I was testing out other subscription software earlier in the year!
Lee
--
Lee McLoughlin
lmmrtech.com
email notifications
ok. i've implemented a system for testing subscriptions. everything is working right. after a few days I can check for expiring, cancellations, etc.
lee, I just wanted to say that as I work with the email notification system I am impressed by how flexible it is. It has 4 different kinds of emails I can choose from. Usually when I test a module it's missing various features, but when I use this I find that you've put in more options than I've even thought of. thank you.
by the way lee, you may want to restart this thread as a new thread and add "classified ads" in addition to subscriptions and donations to the title to get others to help test the classified ads.
subscriptions module TODO
Lee
the lm_paypal_subscription.module TODO sounds to be exactly what I need - I had actually opened the script in an editor to start investigations-prior-to-hacking when I saw your comment. I am happy to carry on but I don't want to waste effort if you (or anyone else) is already doing it or will do it soon and probably better than me.
Which TODO?
Which of the TODO comments are you refering to?
Lee
--
Lee McLoughlin
lmmrtech.com
specifically this bit
Lee
// Admin option to add a user to a sub with an auto unsub at end of period
// probably best to do this with an option under edit user otherwise hard to
// find the user to add
a significant number of our members join by post and pay with used notes so these are the ones we need to enter by hand but still account for and unsubscribe at the end of a year. It might seem old fashioned (and unnecessary) but one of our 'selling points' is that we verify something about our members by getting them to print out and post a form and have a membership card sent back to them. I am far from convinced but apparently this reassures the hosts!
w.r.t the other TODOs: exporting from PayPal isn't urgen as the missing subscriptions will be due to non PayPal joiners rather then ipns going astray. However to use the paypal subscription system to keep track of and account for all subscriptions including the non paypal, manually entered ones I think records will have to be put into lm_paypal_ipns table. It might be possible to use one of the existing fields to differentiate these records (payment_type). I have put some extra columns into the lm_paypal_ipns() as per (different applications will certainly need different info and if manually entered records go in this table the fields to tell these apart will need to be on the report):
The cancelling subscriptions is also less urgent for us as we will almost certainly not use the standing order facility - most members only sign up for one year.
Non-PayPal subscribers
First my apologies for not replying to your earlier post.
Probably best not to store extra information in the ipns table. That is automatically cleared out by a cron job on a regular basis. An IPN is a big record and that table could get large quickly on a busy system.
I want to avoid trying to implement all of PayPal's subscription functionaly inside my module. I'll have a think about what is reasonable given my limited time. But if you want to be able to record basic address information and when any payments have arrived at least two more tables would be needed (manually added subscriber details + payment amounts+times) and, of course, extra code to allow these to be viewed and edited. This is a lot more work than the simple "user is added for X days" option I was planning! Perhaps in the short term you could use my option and track the other details elsewhere?
--
Lee McLoughlin
lmmrtech.com
At the moment I am using the
At the moment I am using the ec_address and cck modules to store member and host information. It all seems to work OK.
Point taken about the ipn table becoming large. I suppose the cron could delete only *real* PayPal records but the information for accounting needs to be kept for the same time for either type. i.e. probably just long enough for someone in the admin office to cut and paste the info into a monthly VAT analysis spreadsheet. (From this point of view it might be sensible to have an manual "clear ipn table" button.)
I think the simple option you were planning will do fine. I will think about whether it's best or not to put non PayPal generated records into the ipn table, I can think of pros and cons.
Paddy
admin cancel sub
thanks both lee and the other programmer for your input.
I'm realizing I need a way for admin to cancel a membership/subscription. If a person gets kicked out for bad behavior, I'll need to cancel their membership. I didn't see a way in lm paypal, but I haven't looked in detail at paypal.com.
also, do you know if 30 days means 30 times 24 hours? I know before with cron the time can become an issue.
admin cancel, paypal's idea of a day
Well I was working on this but it is unfinished. You will be able to edit a subscriber and set their status to blocked and they will loose access.
Based on comments on various forums/newsgroups PayPal has a slightly idiosyncratic idea of time. 30 days sort of means 30 times 24 hours - except that the subscribe takes place immediately but all subsequent messages are "batched up" to be most effecient for PayPal. This may result in messages being sent out later than 24 hours after the subscribe, sometimes several hours later. As far as I know users never loose because of this, they always gain subscription time.
Lee
--
Lee McLoughlin
lmmrtech.com
cancel
lee,
thank you. my concern is that the account won't be cancelled on paypal, which will keep doing the ipn and generate error messages and charge the user. if the user does not cancel in paypal, is there a way for us to make sure their paypal account does not keep charging them?
cancel a user
On PayPal you can login to your business account, find the particular subscription and cancel it.
I've not found a way to do this programatically from inside Drupal. I'm hoping there is someway that I've missed.
Lee
--
Lee McLoughlin
lmmrtech.com
check if module exists
I believe the donate button needs to check if the module is enabled
if (module_exist('name of module')) {
// print the button
}
I had a problem with the page disappearing leaving only a "we'd really like $10" line if module is disabled. (no theme elements appear)
this may be true for the subscription button
check first
Yes that a good idea. I'll ammend the examples.
--
Lee McLoughlin
lmmrtech.com
email notif for ad
Lee,
I realized one good way to address the confusion about whether the ad is published is via email notification. in addition to everything else, we can tell the buyer "as the author, you can view your ad before it's published. After your payment is processed and your ad is published and is viewable by other people, you will receive an email notification."
the drupal system is very confusing because i think a regular user cannot tell whether their post is viewable by others. if they do not have edit permission, they cannot view the edit tab.
does a post disappear if an author stops being a member
Months ago when various developers were trying to code this module,
the question arose of whether posts by an author whose membership has expired should be unpublished.
one developer was going to code them to be unpublished.
I said I'll have both kinds of needs.
in some cases, I want the posts to be unpublished (e.g. member profile.)
In other cases, I want the posts to remain published. (e.g. hotel reviews.)
Lee, I was wondering how you've set it up (stay published, I assume) and what kind of flexibility we can build in.
members vs posts
I must confess I hadn't thought about it.
Currently the ad will stop being viewable when the money runs out! If an ad is paid up for 30 days it will continue to be visible even if the author stop's being a member of a particular role.
Tying in node viewabilty to the state of its author is possible but could be expensive if it requires a check on every node access.
--
Lee McLoughlin
lmmrtech.com
hi Lee
I agree that in general for my system I've thought that the pay per posting will run the duration of the period paid for. (i think under contract it would have to.)
i was actually taking about the paid membership module when I made my comments.
one developer was going to have the posts removed (these were "pay per role" rather than "pay per post" posts) when the membership expired.
i agree that it'd be good to think through both scenarios.
i further agree that something very expensive performance wise would not be good.
off the top of my head I guess this is what I recommend if feasible:
1) pay per posting ads expire at the end of the period
2) pay (per membership) posts be configurable by node type.
if not configurable, they remain either all permanently
(a) published
(b) unpublished but not deleted
It's fine if that's hard-coded into the code if you just specify where we change it.
i'll think through the uses cases and post back after further reflection
Features of this module
Hi,
Can anyone please elaborate on the features of this module.
Also why is this module not available in the modules page of drupal?
Manuj
release
it's not listed on the modules list because it has not been released.
these modules do pretty much what you'd expect them to. there are bunches of spec floating around. it does it pretty much. (but does not work with ecommerce suite)
Does it do classified?
Marium
The reason I got interested in this module was becasue it had a mention of classifieds somewhere. I want to implement a classified system on my website, but I dont intend to charge my users for them. Basically they will be free to post ads etc on the site. can this module add that functionality to my website? If not can you recommend some other module which can do something similar
Manuj
Classified
Hi Manuj
This module is really for things paid for with PayPal (subscriptions, donations, adverts). You would be much better off with something like CCK that allows you to define your own kinds of nodes that users could then fill in to create the classified ad.
Lee
--
Lee McLoughlin
lmmrtech.com
Thanks for the suggestion
Thanks for your suggestion Lee,
I was already looking into CCK and had made some test nodes with it. I just thought maybe if this module had the classified feature, then it would save me the hassle of defining custom fields etc.
Manuj
expired correctly
after 2 days, 1 user was correctly expired.
it was 10 minutes shy of 48 hours. but that's probably just an email timing issue. I don't think any of my customers will have a problem with that. I'll probably set it for 31days and describe it as 30 days any way.
how is eot different from dead when I filter?
is there any page on drupal where I see how much money I've made? or only on paypal
thank you.
enjoy the rest of your vacation!
let anonymous buy membership
Lee,
how much modification would it take for anonymous to be able to buy a paid membership?
on my site, i'll let anonymous buy a membership to get access.
anonymous buying membership
Well thats an interesting one!
Presuming you have a "buy membership" form that you ask them for their basic details. You then have to do two things with it. Create a Drupal user and get the user to pay for their account at PayPal.
It would be easiest if the user saw this as two pages. First page to create a the login (with the user in a special role) and then present a Subscribe page. When the PayPal subscr_signup arrives move them out of the special role. Anyone still in that special role after a few days failed to complete and you could look into why.
This would need some code that does what the 'create a login' which could be based on the code in user.module and then some hooks into lm_paypal_subscribe and the subscr_signup handler.
Not sure how much work this would be until I have a chance to look into user.module (and the modules that extend it like LoginToboggan) but it is probably not too difficult.
Lee
--
Lee McLoughlin
lmmrtech.com
why make this facility
Is this worth it. Why not just make it clear that anonymous people have to register before subscribing? If anyone actually subscribed as anonymous then all other anonymous users would have access to their roles.
Easy Signup
I think the reason for it is that the easier it is for people to signup to a site the more likely they are to do it.
I've worked with large groups of the general public before and things I thought only added a trivial extra bit of work for them they still avoided even if it meant loosing out on a useful service.
Having a simple single register+subscribe page make it easier for people. So I will add it to my TODO list.
Lee
--
Lee McLoughlin
lmmrtech.com
minor change
Lee, I added in a thing on the subscribe page (on my install) where it says if the
$user->uid == 0in a couple places to show links to login instead of the subscribe or unsubscribe text. I think you'll have to add something like that in there bc that's a feature every one needs and it appears to be pretty simple. I can post the code snippet from that function if you want but it's pretty straight forward.anonymous
jaykali,
please do post the code
Lee,
thank you very much for being willing to do the anonymous thing. I talked to someone who said it should be pretty easy. Matt westgate, or jjeff or jeff eaton I think committed a patch to let ecommerce work with anonymous. I couldn't find it just now though.
Lee, I'm hoping my workflow will be this:
1) anonymous is directed to a page where they can buy a membership. it would be excellent if this page allowed the admin to ask some required questions (first name, last name, who are you) and some non-required questions.
buyer is then sent to paypal
buyer then sent back, and is promoted.
if it could work like that it would be great! thank you.
yours is much easier to make work with anonymous than ecommerce suite because it does not require address, etc.
to the person who thought this is not a good feature:
*. the person would not be anonymous after paying for membership, so i would not have to open the site to everyone.
on a separate issue, I think killes wrote a note on a thread about how he made pay per posting work. I couldn't find it just now either. but it may be useful.
minor change vs jetlag
Its only necessary if non-logged in users can see the subscribe page. I had my access control setup so that the subscribe menu item only appeared to authenticated users.
However I can see that not everyone will want to do that. So I'll patch things when I get over my jetlag!
Lee
--
Lee McLoughlin
lmmrtech.com
Ad viewable without payment
Hi,
I installed the module and configured it using the instructions, however, the ad shows published even without the user paying for the ad. Not sure if this is because I didn't set-up the business account at Paypal or not. I thought I could test the posting of ads without having to set-up the account, but I did configure the admin settings section in lm_paypal and paid adverts sections.
I also configured the lm_paid_adverts under content types in the admin section so that posts were not published, but still they are published and to the front page.
Any thoughts?
Thanks.
Heather
Ad Viewable
I've tried to duplicate this problem locally but cannot.
Can you confirm that you created the advert using:
create content>paypal paid adverts
and before paying for the advert the whole article was visible on your homepage even though the publish option is not set for that node type?
Could you also confirm which version of Drupal you are running and wether you have any additional modules installed.
Thanks
Lee
--
Lee McLoughlin
lmmrtech.com
Ad viewable without payment
Hi Lee,
I'm running 4.7.2 and have many other modules installed, which I thought may be an issue. Some of them I'm not using and can delete them if you think they're causing the problem.
Yes, I created the ad by using: create content>paypal paid adverts.
Yes, the whole ad was viewable on my homepage without paypal payment being made.
However, now that I'm reading more I see that maybe I need to check that recent posts are not enabled and promoted to the front page.
I'll post back any findings if it helps.
Thank you for your time on this module. I really like its potential!
Heather
sub is working LIVE
good news. lm paypal sub is working LIVE. everything is working. i set a 5 day subscription, so I can check again in 5 days.
Lee,
one thing.
on the paypal.com "Make your payment" page, it says
Subscription terms: $1.00 USD for each 5 days.
I think it should say for proper grammer "for every 5 days."
I don't know if that's paypal doing that.
Request-- can we make the paypal subscription button the pretty credit card button not the ugly paypal button?
I did confirm that webmaster can cancel subscription via paypal.com.
I'm sure jetlag is tiring! no rush. take some time to recover.
thank you very much.
sub is working LIVE
good news. lm paypal sub is working LIVE. everything is working. i set a 5 day subscription, so I can check again in 5 days.
Lee,
one thing.
on the paypal.com "Make your payment" page, it says
Subscription terms: $1.00 USD for each 5 days.
I think it should say for proper grammer "for every 5 days."
I don't know if that's paypal doing that.
Request-- can we make the paypal subscription button the pretty credit card button not the ugly paypal button?
I did confirm that webmaster can cancel subscription via paypal.com.
I'm sure jetlag is tiring! no rush. take some time to recover.
thank you very much.
Sub Working
Well thats good to hear.
The terms printed on paypal.com's subscription page are created by them so I cannot change the English. But their wording is acceptible.
Subscription button changed.
--
Lee McLoughlin
lmmrtech.com
ad module
I'm now testing the ad module.
I see Lee's made some wording changes to the current 1.18. thank you.
1) it says "This article will be only viewable by you" I changed the text to something custom. but I think it should say "viewable by only you." (move the "only")
that one is simple in that it's easy for us to change.
the menu is a problem.
under create content
"Paypal paid adverts" I didn't see where to change that.
also, url line says "lm paypal " blah blah (because of the module name perhaps) so that could be a problem for the suspicious user.
I changed the tab to some variety of "pay to publish"
[quote]
Not yet paid for. To make this article viewable by others you need to pay with PayPal. Please click the button below.
Paid advert $1 for 31 days [item_number1] .
[unquote]
The [item-number1] looks ugly. I'm afraid to change that in case paypal needs it. Is it okay to change? what's that about?
looking great overall. just minor word-smithing now.
ad module changes
I should warn you that I've mostly rewriten that module to allow any node to be restricted until paid for by a PayPal subscription. Its about 50% done. It would be further along but I went down a few blind alleys while trying out different ideas.
I've moved the "only".
I'm not sure about 'pay to publish' as Drupal uses the term publish elsewhere and I dont want to confuse users. Also I'd rather keep "PayPal" somewhere in the tab. Within those restrictions I am open to suggestions!
The [item-number1] has gone with the move to subscriptions. But it was there because on paypal.com it was printing out item-number1 and I wanted it to appear on my page so users wouldn't be surprised later.
Lee
--
Lee McLoughlin
lmmrtech.com
problem with ad module
it does seem there is a workflow problem with ad module.
i tested a paid for ad. looking good.
however, with the ad that was created and not paid for.
1) it shows up in recent posts for my other users.
2) when other users click on it from the "recent posts" page, they get an "access denied" error.
this is not good in that the other users will think they are lacking some permission, when that's not the issue. it's that it has not been paid for.
3) if admin looks at the not paid for ad, the ad is marked "published."
lm buy module
I'm going to sell some things/services that I will process by hand. I think the lm donate module pretty much does what I need. I'll mostly need to changing the word donate to buy everywhere.
on the my account page, it might take some configuring. because otherwise it'll just say thanks for your $x purchase, thanks for your $y purchase without saying what they got. I might try to disable that for the time being.
Lee,
what do you think about making a buy module that's like donate? you could possibly even make it something like the buddylist module which offers a few lines at the top for how to do global word substitutions in the file.
thank you.
Killes solution for pay per listing
Here is the Killes solution for pay per listing
http://drupal.org/node/77038#comment-145995
What I did for a similar case is to add a "buy me" link to a sample node. The link goes directly to the payment processor, but I think it could go to the shopping cart instead. Upon completion of payment, I add a special property to the user object and save. When the user goes to /node/add/foo where foo is the node type I check whether he has the special property and delete it after the node got created.
this sounds like a better workflow, if I understand it correctly. the person buys, and then creates the object. it may also be easier to integrate with cck. (Killes is the maintainer of Drupal 4.7.)
new ads workflow
Hi Lee,
thanks for changing the sub button
that's exciting, that you've been trying out different things with the ad module.
it's great that any node can be restricted. (and do you mean any node as opposed to any node type?)
but I assume you don't mean all nodes will be restricted until paid for.
i assume you don't mean a per node setting for 100% of nodes. that could be pretty time-consuming from the admin point of view. my thought had been to set it by node type (cck). some will be free. some will charge per node.
in terms of names, i think pay per listing would be okay. i don't know about what "pay to publish" means in drupal right now. maybe without the underscores just to make typing easier. payperlisting.module perhaps.
i'm not convinced you'd want paypal in the name, because it seems to me you may eventually want to integrate other solutions.
thank you! i'll be ready to test as soon as you put it up.
new paypal ads
Yes I did mean by node type. On the donations admin page you can specify which Node Subscriptions can be associated with with node types (including any node types created with CCK).
Lee
--
Lee McLoughlin
lmmrtech.com
ad
Lee
1) that's great about being able to coexist with ecommerce! I probably won't need it but I'm sure many people will be excited to hear about that. thank you for implementing it
2) good news about ad and node types. sounds great. thank you.
3) have you thought about a paymentlegal module? a terms and conditions that someone has to sign when they purchase something.
I've realized that I'd really like to have this.
I think it'd might be quick. the legal module has just about all of it. the only trick is to link it to the buy page instead of the registration page.
ideally there could be more than one terms and condition contract, depending on the product.
the legal module won't do it because it's only shown on the registration page. it has this nice feature of 1 contract plus 5 optional checkboxes.
thank you for all the work!
ad
Lee
1) that's great about being able to coexist with ecommerce! I probably won't need it but I'm sure many people will be excited to hear about that. thank you for implementing it
2) good news about ad and node types. sounds great. thank you.
3) have you thought about a paymentlegal module? a terms and conditions that someone has to sign when they purchase something.
I've realized that I'd really like to use this, instead of trying to stuff everything "if you ever buy something from this website you also promise...) into the legal module.
I think it'd might be quick. the legal module has just about all of it. the only trick is to link it to the buy page instead of the registration page.
ideally there could be more than one terms and condition contract, depending on the product.
the legal module won't do it because it's only shown on the registration page. it has this nice feature of 1 contract plus 5 optional checkboxes.
thank you for all the work!
ad
Lee
1) that's great about being able to coexist with ecommerce! I think I'll be relying on lm paypal for everything but I'm sure many people will be excited to hear about that. thank you for implementing it
2) good news about ad and node types. sounds great. thank you.
3) have you thought about a paymentlegal module? a terms and conditions that someone has to sign when they purchase something.
I've realized that I'd really like to use this, instead of trying to stuff everything "if you ever buy something from this website you also promise...) into the legal module.
I think it'd might be quick. the legal module has just about all of it. the only trick is to link it to the buy page instead of the registration page.
ideally there could be more than one terms and condition contract, depending on the product.
the legal module won't do it because it's only shown on the registration page. it has this nice feature of 1 contract plus 5 optional checkboxes.
thank you for all the work!
Paid Ad's using CCK and PayPal Subscriptions
I'd not thought a paymentlegal module but I'll have a think. But if you use a CCK node to create the node to buy something then you could use its help field to give achieve this.
The new version is now available at
http://lmmrtech.com/lm_paypal_module_for_drupal
I wont be able to spend as much time on this module from now on as I have a ton of other work to catch up on. Any maintenance and fixes definately but new code will be on the back burner.
Lee
--
Lee McLoughlin
lmmrtech.com
legal
Lee,
thank you very much for the new version. I'll try it.
using cck to make legal is an interesting option. I'll check it out.
I understand you are busy. thanks for doing all this!
1.19 still up
Hi Lee,
the link on your site is still to 1.19.
1.20 now up - do not use 1.19
Thanks for letting me know Mariun.
Sorry about that its now fixed.
To the one person who downloaded 1.19 before I zapped it - there is a bug in the paid adverts update that breaks donations (I typed the wrong module name while coding jetlagged). The problem only occurs if you enable paid adverts and then run update.php, if you didn't do that you are OK.
It is corrected in 1.20.
Lee
--
Lee McLoughlin
lmmrtech.com
that one person was me
Thanks, Lee. That one person was me. I've got 1.20 now.
Blue Cobalt
dianovo, inc.
http://www.dianovo.com
Blue Cobalt
http://livingparadise.org
Conscious living for a better world.
Phew!
Thanks for letting me know I can stop worrying now. Apologies for that glitch!
While I have your ear (eye?) - do you have any feedback for me on the module in general, please?
I'd really appreciate feedback from anyone else trying it out too. Just post your feedback here.
Lee
--
Lee McLoughlin
lmmrtech.com
Encouraging new users to register and subscribe
When I have time to work on new code for lm_paypal again I will be looking at a some sorted of merged "register on drupal" and "paypal subscribe" system.
But in the mean time you could encourage users to register and subscribe by careful use of the front_page module.
Create a node (a simple page will do but remember to enable PHP) on my site this is node/2:
In admin/settings/front_page set:
Front Page settings for Anonymous Users (visitors not logged in)
Select type:redirect
Redirect to: node/2
Front Page settings for Authenticated Users (visitors already logged in)
Select type:redirect
Redirect to: node/2
Override your HOME breadcrumb links:
Redirect your site HOME links: on
Redirect your site HOME links to:node
Activate your front_page settings
front_page
You will certainly want to make the encouragement more verbose!
This is but no means a complete solution but it should prove helpful.
Lee
--
Lee McLoughlin
lmmrtech.com
1.21 out
http://lmmrtech.com/lm_paypal_module_for_drupal
Lee go stand by the blackboard and write 100 times:
I must not release new versions while zonked out of my brain because of jetlag.
I must not release new versions while zonked out of my brain because of jetlag.
I must not release new versions while zonked out of my brain because of jetlag.
I must not release new versions while zonked out of my brain because of jetlag.
I must not release new versions while zonked out of my brain because of jetlag.
...
A couple of stupid problems and some stupid mistakes in the online help now fixed.
Sorry about that folks
--
Lee McLoughlin
lmmrtech.com
Is there a way to have
Is there a way to have adverts free but charge for upgrades like; promote to front page, newsletter ad, bold title, etc...?
Pay for Upgrade
No. But thats a very good idea. I'll put it on the TODO list for when I can work on new code again.
Lee
--
Lee McLoughlin
lmmrtech.com
another module work in progress
Hi all people on this thread,
i read some time ago about the good work of lm, but somehow missed to catch up on this new thread here..!
I just committed to a developer an e-commerce/cck based module that aims at having free adverts/listings, and different levels of charged upgrades to show more information (text fields) and visibility (using Views to show adverts in particular blocks on most visited pages of a site like homepage).
Very briefly here:
the module, called Taxonomy_actions, adds a taxonomy term (eg: silver, gold, platinum) to a selected advert/listing of the user, after the purchase and payment of a "Level" product are completed.
The taxonomy term can then be used by Views to build almost any desired sort of view (eg: show only platinum adverts, sort all paied adverts by level, show relative views on specific blocks....) and by phptemplate or hook_form_alter to show only particular fields per level (eg: less fields for silver, more for platinum)
Just in case someone could be interested, more details can be found at http://drupal.org/node/83079
I don't know how far the result will be compatible with the lm_paypal framework (no coder here!), but i'd be happy to share the module with anyone who might be interested, to help avoid reinventing the wheel.
cheers
-Marco
Paying more for a node to view more
Hi Marco!
I think the idea of paying more to add more to a node a really useful idea. I totally agree it will help encourage users to try free ads and, once comfortable, upgrade to add extra features to the ad (like pictures, more fonts, ...) If I had the time I'd probably write it myself! I cannot tell from your wording: have you hired a developer to implement this or are you still looking? If you have someone do you have any idea of timescales?
Lee
--
Lee McLoughlin
lmmrtech.com
Timescales
Lee, glad you apreciate the concept :)
actually a coder was contacted some weeks ago, and the module is currently in development in these days.
I should be able to test a revised version of it tomorrow evening. If you (and anyone else) is interested, i can then post the module for others for sneaking, testing or whatever else at http://drupal.org/node/83079 .
Please, leave any eventual comment or feedback (both apreciated!) there. Guess this post is not the right place and is already long enough ;)
v.1.21
Hi Lee,
I got this error.
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module on line 133
about 8 times for various lines.
complete error message
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module on line 133
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module on line 133
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module on line 253
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module on line 322
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of lm_paypal_paid_adverts_has_sub(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module on line 360
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of lm_paypal_paid_adverts_has_sub(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module on line 360
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of lm_paypal_paid_adverts_has_sub(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module on line 403
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of lm_paypal_paid_adverts_has_sub(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module on line 403
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of lm_paypal_paid_adverts_has_sub(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module on line 415
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of lm_paypal_paid_adverts_has_sub(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module on line 415
what happened next
when I installed cck next,
I got the above list of error messages, but without anything else. (in my previous post, I got the error messages followed by the admin page and could do normal things.
so i navigated to my home page.
i got this error
warning: Cannot modify header information - headers already sent by (output started at /var/www/modules/lm_paypal/lm_paypal_paid_adverts.module:415) in /var/www/includes/common.inc on line 266.
i didn't do anything to the advert file. after getting this message, I opened it to see if there was an extra blank space at the end but I don't think so.
plus my database is acting like it's wiped/ a new install. it's saying i can go ahead and create the first account.
however, it didn't let me make a new user 1.
deprecated error
I installed cck on a clean sandbox. I got the same deprecated error warnings. (but not the header warning)
I talked to my host. it appeared to be caused by the php debugger i've been trying to install. i uninstalled php and installed it again. the warnings went away.
bug; nice interface
the admin interface seems nice
there seems to be a bug
i'm on the make a subscription page.
it does not let me select a role (for node/paid adverts, which is not supposed to have one.)
but will not let me exit the page saying
Subscribers Role field is required.
thank you! this looks very promising
Bug - role required when not used
Fixed. I've posted a quickly updated version here, please test and let me know how you get on.
http://lmmrtech.com/lm_paypal_module_for_drupal
This bug only surfaced if you had no additional roles defined.
Thanks for the feedback
Lee
--
Lee McLoughlin
lmmrtech.com
Improved fix.
I've just posted an improved version of that fix to the same place:
http://lmmrtech.com/lm_paypal_module_for_drupal
--
Lee McLoughlin
lmmrtech.com
donating to Lee
Hi everyone,
I just wanted to let you know that Lee put a donation button on the front page of his website. I sent him some money. (It's in pounds, so just multiply by 2 to convert to US dollars.) And I'll be sending him more when the site goes live with real users.
I just wanted to encourage everyone to send him money to keep this development going. Lee has done such a great job.
Thank you Lee.
header
i think the header warning also went away after reinstalling php
PayPal Webpayment Pro ?
PayPal Webpayment Pro ?
PayPal Pro
Currently no. It is on my TODO list but I am pretty swamped with other work so will not even start on it for a few weeks.
Lee
--
Lee McLoughlin
lmmrtech.com
url
Lee,
one minor request
on your site, can you paste the download url below the link so I can copy and paste it into wget? right now i have to click on the link, write the url in my notebook, and type the url into shell. thank you.
url "copy and paste"able
The download link is now the full url.
If you have wget you might have lynx too. Its a text only web browser and it can do downloads.
Lee
--
Lee McLoughlin
lmmrtech.com
paid ads
testing the ad module.
what i see so far
1) the early-on warnings about paying to publish are gone.
2) very interesting. before payment, the ad title is viewable to the public, with the line "not yet published." thanks for polishing that. for me, that's not great, because the user could put the title as "new blank for sale, see url blah blah"
3) this is minor, but if the return page does not exist there is no warning. however, any testing should catch this.
4) the return page is the same as for buying paid memberships. so the page will be a little schizophrenic.
"if you bought a paid membership, thank you. here is additonal info.
..
if you bought an ad, thank you. here is how to view your ad...."
5) everything else worked great. thank you for adding the links to the navigation menu. thank you for the nice summary table in "my account"
thank you very much!
Lee -- did you think about the killes solution/workflow I posted earlier in this thread? the person pays before they write the node, if I understand it correctly.
http://drupal.org/node/78002#comment-149779
What I did for a similar case is to add a "buy me" link to a sample node. The link goes directly to the payment processor, but I think it could go to the shopping cart instead. Upon completion of payment, I add a special property to the user object and save. When the user goes to /node/add/foo where foo is the node type I check whether he has the special property and delete it after the node got created.
this sounds like a better workflow, if I understand it correctly. the person buys, and then creates the object. it may also be easier to integrate with cck. (Killes is the maintainer of Drupal 4.7.)
It would a different workflow from yours. I think I prefer that. What is your thinking about that workflow? feasibility of implementation in your framework, etc.
a question about multiple ipn url's. I have about 4 sites now testing lm paypal.
1) live site
2) sandbox site with lmpaypal and nothing else
3) sandbox site with lmpaypal and cck
4) sandbox site with lmpaypal and whatever
i'm really only testing one at a time because i set my paypal return ipn to the current one. is there another way?
Paid Adverts
Before an article is paid for only the first 20 characters of the title are available. That should not be enough for a meaningful advert!
Yes there should be two return pages. One for role sub's and one for node sub's.. I'll add that in when I can. Perhaps it would be best to allow each sub' to, optionally, specify a return page so it can be better targetted.
Glad to hear its all working for you.
I've ported lm_paypal to Drupal 5.0.0 dev. Not a very neat port as I'm short on time but the same code now runs on both Drupal 4.7.3 and Drupal 5.
That alternative workflow. I'm not at all sure how to implement that with the system I currently have. I suspect it would be a lot of work.
I'm also not sure I like it.
How does the user know they can now create a paid-node, if they create a non-paid node (or just post in a forum), will they still be able to create a paid-node?... Or if they logout, or get timed out, ... Even if these aren't problems users might think they are. If they decide not to publish the ad you would have to refund them (and loose any charges to paypal in the process).
I also prefer the workflow of creating an advert and then when ready paying for it to appear. It seem s better than having to pay in advance.
Testing and multiple sites::
If they are all using 1.20 or newer and all live subscriptions were created with lm_paypal 1.20 or newer then they can all co-exist as each site will set the notify_url with every request sent to PayPal.
For testing here I have the following sites:
live: using drupal 4.7.3, www.paypal.com and my premium account
test1: using drupal 4.7.3, www.sandbox.paypal.com and my sandbox business account
test2: using drupal 4.7.3, www.sandbox.paypal.com and same sandbox account as test1
test3: using drupal 5.0.0 dev, www.sandbox.paypal.com and same sandbox account as test1
All three sites run in parallel. I use FireFox, Internet Explorer and Opera with a different account in each to test out paid advert restrictions (an administration account + two test accounts).
Lee
--
Lee McLoughlin
lmmrtech.com
return IPN
Lee,
thank you very much for the comments, and for being willing to put in different return IPN's for different subs.
I did figure out, like you, the need for 3 browsers.
what I don't understand is that as far as I know, my paypal account only has 1 return ipn.
so if sandbox 1 is called www.leetest1.com, my return ipn is
http://www.leetest1.com/lm_paypal/ipn
and sandbox 2 would need a different return ipn
http://www.leetest2.com/lm_paypal/ipn
but my paypal account only holds 1.
alas, I don't understand how you are doing it.
thank you.
PayPal IPN No Longer Used
Since 1.20 the notify url set in on paypal.com (or sandbox) is no longer used. Whenever LM_PayPal sends a message to PayPal it tells it the URL to use for replies.
Note that subscriptions created before 1.20 will still use the notify url on paypal.
Lee
--
Lee McLoughlin
lmmrtech.com
security
thanks. i see.
that means for every kind of transaction I set a return ipn in admin -- lmpaypal, is that right? (and that's not implemented yet, is that right?)
does that make it easy for someone to use a proxy server and fake a transaction? or are security issues unchanged?
title visibility
20 chars would be enough to say
visit www.amazon.com, or www.spammer.com.
is this a setting that I can simply change myself in the code?
thank you.
title length
Currently its fixed in the code. I'll parameterise it. In the meantime look for 20 in lm_paypal_paid_adverts.module.
--
Lee McLoughlin
lmmrtech.com
hard-coded
is this query is made for every single node, or just once? if it's made every single time, i'd be actually happier to just change it in the code. (perhaps you can flag it with a comment). that way one fewer query, better for performance.
thank you.
title_len
Following your comments version 1.22 has it fixed at 10 chars.
If you'd like to change it look here:
lm_paypal_paid_adverts.module line 465:
I will parameterise it when I get a chance.
Lee
--
Lee McLoughlin
lmmrtech.com
anonymous can post
thank you for making it possible for anonymous to buy ad, per request.
where it says "please take out one of the subscriptions below" to publish the ad,
it doesn't show any subscriptions.
it says "please log in or create new account"
this wasn't quite the workflow I had in mind. but now i see why the discussion is so complicated in terms of integration ecommerce info with registration info.
an additional issue with this workflow is that i must give anonymous create node permission, which creates a security risk. my site has tightly controlled membership.
perhaps i need to think this through and dig up the threads about different options for the workflow when anonymous buys.
thank you very much for adding the feature.
donation
Hi Lee,
I just sent you another donation.
thank you for all the features!
Thanks for the Donation
Greatly appreciated!
--
Lee McLoughlin
lmmrtech.com
Looks useful; here's my $0.02 suggestion.
I haven't had the chance to test this module out yet but it looks pretty solid. I'll likely be using it solely for donations and after seeing your site's page for the module, I have a suggestion / feature request.
I noticed that you have 3 different donation buttons on your page to support multiple currencies. I think it would be pretty cool to hook in with an IP resolution database (I think there's a module for this) and allow the administrator to setup which countries he would like to have resolved to which currencies. It would be nice if it were automatic, but that's too much work and there could be situations where an admin doesn't want to go by the default currency for a country; a manual system would be the way to go.
The settings page could have a place to add and configure currency profiles, forcing one to be set as the default for unresolved IPs or in the event that the administrator has not specified any other resolutions. A "currency profile" would just be a currency type (USD, yen, Euro) referencing a list of countries using that currency and a suggested donation value; an enable/disable toggle per profile would be nice, too. You could include some standard, empty currency profiles that just defined the currency type but no countries; you would have to include at least one for the required default profile.
For example, if the user's IP resolved to England, the module would check to see if England was assigned to any currency profile; if not, it would use the default, if so it would use that profile. Assuming I had created the GBP profile (or it was included), the module would grab the suggested donation value of 5 pounds and display it. Assuming all the pieces were in place, a user from Japan would see a donation button suggesting a 1,000 yen donation.
Now, you would have to include a list of countries in the module, but that's not too bad since those don't usually change ;) When configuring a currency profile, the admin would select countries from a multi-select list and add them to that profile's list (a "list, add / remove buttons, list" UI). This action would remove the selected countries from the global list so that a country could not be assigned to multiple profiles.
Anyway, just a little idea that struck me when I saw your page. The above idea of "currency profiles" could integrate well into other parts of the module (I think), so the code would be pretty reusable throughout your project. Just one example of how it could be extended to subscriptions: create 2 profiles defining the same type of currency, let's say Euro, setup Italy in one profile and the rest of the EU countries in another, have a "Discount" field in the Italy profile set to 5%, and I can give my Italian visitors a discount. Not the best example, but it's a plausible use.
Good luck with the module, keep up the good work.
Nick
low priority typo
The watchdog error message generated by line 1850 of the subscriptions module looks wrong.
I only came across this because I have made a minor add on module to allow manual entry of a subscriber. When it actually works I will post it although I think Lee's version on his TODO list will be more general and probably much tidier.
Paddy
typo?
Looks OK ... what seems wrong?
--
Lee McLoughlin
lmmrtech.com
I had %ipn_currency and
I had
%ipn_currencyand changed it to$ipn_currency. I thought it was v1.21 but will check.Typo
Ah! Thanks for spotting that one. Fixed.
I'll be posting a new release with support for Drupal 5 shortly and it will appear in that.
Lee
--
Lee McLoughlin
lmmrtech.com
Donations parse error
This is a great module. Thanks for providing it.
When I use the following code found in the 'Creating Donation Buttons' paragraph on the 'admin/help/lm_paypal_donations' page...
... I get this error in the sidebar block:
Parse error: syntax error, unexpected '{' in /home/mysite/public_html/mydir/includes/common.inc(1175) : eval()'d code on line 2But when I use the following snippet provided in the readme.txt file, it works - that is, the button shows up without incident or error:
Also, could you tell me how I can change the button itself? Is that something I must do in Paypal? And how?
Thanks.
Update: I don't know php but it looks like the first snippet is missing ')' in the second line, just before '}'. (?)
Also wondering...
Can the snippet be altered to not force a donation amount?
I'm using the above snippet without the 'donation box' - in other words, just the button - but when the button is pressed and the donator is sent to Paypal, the amount of $10 cannot be changed. I would just like to send them their with the $10 amount but for it to be able to be changed on Paypal's site at their discretion. Is that possible?
Or maybe I can set up a page on my site where they can provide info and the amount that will be passed on to Paypal. If this was available in the module, that would be great. (The module creates a page like it does 'thanks' but for 'donations' with form fields to pass info and donation amount to Paypal for the final process.) It would look more professional as I see that's how organizational sites that can accept credit cards do it.
And one more thing (sorry if I'm being too verbose): Maybe the Paypal Business email can be encrypted is some way. I get a lot of junk mail -- as I'm sure does everyone -- and with it showing up in the source output robots can snag it for spam.
Thanks so much.
Carey
:(
I set the snippet up in its own 'donate' page but all that appears is the button. The input text block where the amount can be changed -- like on your site -- doesn't appear. :(
Can you tell me what I need to do or how I need to change the snippet to make it appear?
Flexible donations, hiding paypal email
If you switch to version 1.22 you'll have more flexible donations options.
--
Lee McLoughlin
lmmrtech.com
Hiding email
Good point about the email. I'll add in a little javascript to help obscure it.
Lee
--
Lee McLoughlin
lmmrtech.com
I figured it out
I went into the donations.module and changed the link from Paypal to a graphic in my images directory.
:)
variable donations
I also changed the donations module to allow variable amounts as per Lee's site (which I will stick some cash in now while I remember) so maybe this should be the standard form.
Can you share?
Can you share how you did this? This is what I'm trying to do.
donation hack
This is what I did on about line 278 of the donations module. It would be better without the line break which I seem to remember you can do with form { margin: 0; } or form { display: inline; }
Sweet!
That did the trick. Thank you so much, paddywwoof.
More Flexible Donations
Have a look at version 1.22 it has more flexible donations (users can type their own amount, pop-up list of amounts with default).
http://lmmrtech.com/files/lm_paypal-1.22.tar.gz
BTW: LM PayPal discussion has moved over to:
http://drupal.org/node/83644
--
Lee McLoughlin
lmmrtech.com
Missing ')' in snippet
Yes there is a missing ')' in the snippet. Thanks for pointing it out it is now corrected.
To have your own button image use a line like this instead of the print line from the snippet:
The PayPal donation button images are:
http://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif
http://www.paypal.com/en_US/i/btn/x-click-but21.gif
http://www.paypal.com/en_US/i/btn/x-click-but11.gif
http://www.paypal.com/en_US/i/btn/x-click-but04.gif
The default is the first one on the list. But any suitable image URL can be used.
--
Lee McLoughlin
lmmrtech.com
anonymous donations
by the way, I just checked, anonymous donations seem to work perfectly.
I'm still investigating workflow that allows anonymous to buy a membership in order to register. (they buy before they register, and they are not allowed to register before they buy.)
anonymous
I spoke with a developer.
he convinced me not to do anonymous purchase of accounts. he said there would be problems if the user's computer froze (requiring a reboot), as well as issues with security if the sessionid were kept in the url.
by the way, Lee, time for a new thread? how about opening a project?
anonymous
I spoke with a developer.
he convinced me not to do anonymous purchase of accounts. he said there would be problems if the user's computer froze (requiring a reboot), as well as issues with security if the sessionid were kept in the url.
by the way, Lee, time for a new thread? how about opening a project?
New Thread Soon
The developers advice sounds reasonable.
I've asked for a progress report on my request for a CVS account.
I'll start a new thread shortly when I release the next version with Drupal 5 support.
Lee
--
Lee McLoughlin
lmmrtech.com
New Release, New Thread
This thread, as you have surely noticed, has become pretty long!
So to co-incide with version 1.22 being released lets switch this to a new thread:
http://drupal.org/node/83644
--
Lee McLoughlin
lmmrtech.com
How do I show the paypal subscription on my registration page
Actually I need when a user wants to create his loging, he has to create a subscription alongwith his registration. so How do I show the paypal subscription on my registration page?
Node type subscription problem
Hi Lee
I am trying to create a Node type subscription using Lm_paypal module at my local system. But This is not working at my system I dont know what is the reason while It is successful when I am creating Role Type subscription at the localhost.
Like I created a New Subscription of Node type then went to Paypal subscribe in the navigation menu, and it is not there. Then I try to create a Role Type Subscriptn and went to Paypal Subscribe and this one is there and I can subscribe. But Node type subscription is not coming there. while both subscriptions are visible in LM Paypal Subscription in the Setting Page.
Actually I am creating a Custom Content Type and then every time i create a node of this type, I want that any one can subscribe for these node after only paying otherwise not. Is it possible using this module. Please help.
Thanks
Devender