activemerchant / offsite_payments

A simple and unified API to handle dozens of different offsite payment pages.
MIT License
169 stars 200 forks source link

[Proposal] Update IPNs URL #347

Open akiko-pusu opened 3 years ago

akiko-pusu commented 3 years ago

Thanks for all! This pull request is not a bug fix, but a proposal.

Reason

Now Paypal recommends the use of new endpoints based on 'ipnpb.paypal.com'.

Ref:

What happens in this situation?

We can still use the URL https://www.sandbox.paypal.com/cgi-bin/webscr and https://www.paypal.com/cgi-bin/webscr without any difference in terms of API features.

But following the document that I wrote above, www.paypal.com returns the response under the dynamic IP address. If some requirements exist such as restriction for the source/destination IP address, ''ipnpb.paypal.com'' based URL is better.

Of course, we can change the URL by ourselves by overwriting the variable like this:

# production_url is customizable because of "mattr_accessor" statement.
OffsitePayments::Integrations::Paypal.production_url = 'https://ipnpb.paypal.com/cgi-bin/webscr'

Other proposals

If this PR is not acceptable, I think updating README to introduce how to customize the URL like above.

NOTE:

Before submitting this pull request, I posted the one to fix the CI failure. I wish either one would be of help.

JasonBarnabe commented 3 years ago

Not sure if it's a temporary issue, but starting today calls to OffsitePayments::Integrations::Paypal::Notification#acknowledge in sandbox mode (using https://www.sandbox.paypal.com/cgi-bin/webscr) are failing as that's doing a 301 to https://www.sandbox.paypal.com/us/cgi-bin/wapapp?cmd=_wapapp-homepage.

Updating the URL to https://ipnpb.sandbox.paypal.com/cgi-bin/webscr as this PR does fixes the issue.