Is it possible to dynamically set notify_url for recurring payments in PayPal? - paypal

I've run into a slight predicament in regards to the PayPal IPN system. My client already has an IPN URL designated for their store, however I am building a custom application which presents the ability to subscribe to a service. I need to be able to receive IPN notifications, however I've seen varying answers in regards to whether or not you can dynamically set the notification URL for recurring payments through the notify_url parameter.
Has anyone recently dealt with this situation? I'm aware that it's possible to setup a handler that will pass requests to various IPN handlers however the store system that my client requires the request to be sent directly from PayPal, third-party vendors' requests are ignored.

You can set notify_url as a parameter of the form that is submitted when the button is clicked, and that will override whatever notification URL is set on the account.
However AFAIK you can't change it again subsequently.

Related

Instant Payment Notification (IPN)

I have more than one website that I want to use IPN with. However, there is only one notification URL to edit in this feature? So how it is possible to support mult-website?
You can pass in the notification url on the initial post to PayPal (assuming the NVP integration) using the parameter: notify_url
You many have the ability to pass in the notification url in other implementations.
The setting in PayPal, is the default one I think.

Notify_url in Paypal text link is not working

I read at one of the Stackoverflow that the following URL can be use to make payment via paypal.
https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=youremail#goeshere.tld&amount=1.00&currency_code=GBP&item_name=tripdatagoeshere
I look at the documentation that it accept notify_url which paypal will send a POST to after payment is successful. I tried but couldn't. Does paypal support this?
https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=youremail#goeshere.tld&amount=1.00&currency_code=GBP&item_name=tripdatagoeshere&notify_url=http://www.s.com/d/notify.php
This is a rather old-school way to integrate with PayPal; I think the company generally steers people to the Website Payments Standards button factory/posts with hidden fields to access this functionality rather than putting parameters right in the URL. That said, any parameter you can send in a button post can also be sent in a plain GET URL, so yes you should be able to pass in a notify_url directly in the GET parameters as you show above.
However, the notify_url is intended only to override the selling account's normal notification URL. You need to set up a notification URL in your profile in order to turn the feature on; I believe a transaction-specific override URL will be ignored if the feature is not enabled. Once you turn on the IPN feature you should be able to override it this way... but you also might not need to, unless you want the postback URL to vary for each payment.
See also the WPS integration guide: https://cms.paypal.com/cms_content/GB/en_GB/files/developer/PP_WebsitePaymentsStandard_IntegrationGuide.pdf
and the IPN guide: https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNIntro/

PayPal Payments Pro - Skip IPN

Is it possible to tell PayPal through the NVP to not send a response to the IPN handler? For instance I use the IPN for payments I receive through a store I have running FoxyCart. However the store Im setting up now doesnt use a 3rd party cart, Im just using the API response to handle handle everything. Because of this I dont want PayPal to send a response to the IPN.
Ive scoped out the notify_url param, but that appears to only change where the IPN response is sent to.
I would prefer for this store that no IPN response gets sent at all, while allowing the other store to continue using the IPN it has always been.
Thanks in advance.
It depends on your account settings.
There are two types of IPN's, one is set at account level, and it's triggered whenever money comes into your account, regardless of the source. If you disable this, you will not get ny IPN's from either store.
The other type of IPN, is based on the API call being made.
You need to check your magento payment module config to see if it's generating the second type, and disable it there. If it's already disabled, it means that you are only getting the first type of IPN. If this is the case, you would actually need to modify your OTHER shopping cart.
(A simpler option might be to open a child paypal account, rather than mess with all the carts)

Will `Notify_URL` override previous set IPN data

I am building an IPN extension for a website, but the service provider for the cart used at the moment has the option Notify_URL set (in the paypal submission form) for its own internal handling (which is somewhat flawed). If an IPN URL is set on the PayPal sellers profile, will both be used, or only one?
There appears to be some confusion on this subject. Some are claiming that both will work. They claim it should notify both in this situation. Though it appears that with subscription based payments, PayPal will only use the IPN URL set in your PayPal profile.
However, on the official PayPal documentation:
You can specify an IPN listener for a specific payment; this is the
only way to receive IPNs associated with Adaptive Payments. In this
case, PayPal sends the IPN message to the listener specified in the
notification URL for a specific button or API operation instead of the
listener specified in your Profile.
Which seems to suggest that the notify_url will override the profile settings. I would assume that it would be better to follow the PayPal documentation then something that may be working even though it isn't intended to.
Source: PayPal Documentation
It's also worth noting that if you disable IPNs in your PayPal account, neither will work.
I think the documentation may have changed since this was last answered. I was also curious what was given precedence: notify_url or your profile's IPN url. From the docs:
Optionally, you can override the URL to specify another listener for specific payments.
Here the wording is slightly confusing, but it seems that even if you have IPN turned off in your profile, if you pass a notify_url value in with the payment, it will still be sent. Bold added by me:
The IPN message will always be sent to your notification URL unless receiving IPN messages has been disabled. Even though you have not enabled receiving IPN messages in your Profile or you have reset your preference by turning off IPN messages, PayPal still sends IPN messages to the notification URL you specify for a specific payment.
I have seen this work first hand, which is why I investigated it more to make sure it was working correctly. My IPN History told me "your IPN notifications are turned off," prompting me with a link to turn it on. However, below that was a history. The reason was because I was passing in my desired notify_url with the transaction.
So #johnmadrak's statement, "It's also worth noting that if you disable IPNs in your PayPal account, neither will work," is actually not true. Even if you've turned the setting off in your profile, passing in a notify_url still works.

PayPal IPN notify and success URL params

I'm implementing a simple Buy Now button and I'm using IPN (not PDT) to verify the transaction.
A thing that bugs me is that I don't understand how come only after I set the notify_url field to the button I also get the transaction variables to the success URL, as GET params. It would seem normal to be the other way around.
Since the user could or could not choose to "return to the merchant's website" there's not way I should rely on that data. It does however seem to be identical to the one sent to the notify URL.
Some clarification would help. Thanks!
I know what you mean, after the user has finished paying and chooses to return to the sellers website (button in paypal page) they are redirected to your thankyou page.
I don't think it used to do this back in 2009 but now paypal will issue the redirect with all sorts of parameters in the url query string.
I'm just ignoring this information and relying on the backend IPN post which is verifiable by paypal
In my previous experience with IPN, I defined the location of the notify URL in the control panel. Once the payment is processed, PayPal sends a POST notification to this URL independent of any user behavior.
In any case, even if you define the notify_url parameter in the button, I believe PayPal will still send the payment notification seperate from the user behavior - they spawn a new process to send the data. As to why they are using a GET rather than a POST, that is odd behavior. However, in your IPN script you should still have logic that verifies the call with PayPal before you continue processing.