Techie
Techie

Reputation: 45124

Setting PayPal return URL to localhost

I'm trying to integrate Paypal and I'm using sandbox in the process. I follow the step of the accepted answer in the below question. Setting PayPal return URL and making it auto return?

But when I try to enter the URL, Paypal return the below error.

We were unable to validate the URL you have entered. Please check your entry and try again.

URL I'm trying to set is http://localhost:8888/paypal/success.php.

Also I tried sending the return url with the form as below.

<input type="hidden" name="return" value="http://localhost:8888/paypal/success.php">

Both methods does not work for me.

Full Form

<form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr">
<!-- Identify your business so that you can collect the payments. -->
<input type="hidden" value="[email protected]" name="business">
<!-- Specify a Buy Now button. -->
<input type="hidden" value="_xclick" name="cmd">
<!-- Specify details about the item that buyers will purchase. -->
<input type="hidden" value="AM Test Item" name="item_name">
<input type="hidden" value="22.16" name="amount">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" value="item_number" name="item_number">
<input type="hidden" name="return" value="http://localhost:8888/paypal/success.php">
<!-- Display the payment button. -->
<input type="image" name="submit" border="0" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif" alt="PayPal - The safer, easier way to pay online">
<img alt="" border="0" width="1" height="1" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" >
</form> 

How can I test this on my development pc ?

Upvotes: 10

Views: 17963

Answers (4)

Thomas Carlisle
Thomas Carlisle

Reputation: 191

It is worth noting, that when working with the Facebook authorization API's (and probably others if not all) you can put https://localhost:xxxx/my-redirect in as a redirect URL and it will work.

Thus, the answers here that basically say "duh..... paypal can't reach localhost on your PC" are a little harsh and off base.

A remote API doesn't need to know how localhost resolves on their end, but in the context of a client side redirect they do not care and presume that the client resolves localhost to where the developer intends.

That said, I will be honest.... the first time I worked with Facebook API's I was a little puzzled as to how localhost can work. But it was in the process of that that I developed a fuller understanding of how these types of redirects happen and that they are client side.

And that makes a lot of sense because in the far majority of cases, an API that provides authentication, or in this case payment, is going to redirect the client to a url with some type of token that proves their indentity/payment.

Yes, paypal also has webhooks, but that is a different beast. Webhooks are when the 3rd party service you are working with will have its back end send a POST to your back end, giving you the official result of some transaction.

When I develop things of this nature, I put more weight on these server-to-server communications because I can be sure that if paypal's backend is telling me something happened, then it really did in fact happen and isn't possibly a client side hack.

No one working with webhooks is going to try to put 'localhost'in as a webhook URL, because clearly that makes no sense and couldn't work for server-to-server communication.

But when a service redirects a web browser client following a transaction, some developers will assume that localhost can work since it should be a client side redirect and isn't a webhook.

When a developer that is new to any given API is using 'localhost' in what seems to be a client side redirect to land the user back on the merchant's site, it isn't a "stupid" question at all.

Upvotes: 1

Andrew Adamich
Andrew Adamich

Reputation: 707

What if you try to specify your IP address instead of localhost?

Local host cannot be resolved on distant machines. It's only your local DNS which knows localhost statement and is 127.0.0.1.

http://your-IP-address:8888/paypal/success.php

Upvotes: 19

munsellj
munsellj

Reputation: 1597

You can create some URL alias for your website and add it to your hosts file (http://en.wikipedia.org/wiki/Hosts_(file)). Then pass that URL as your return URL to paypal. They just trigger a re-direct within the browser to that location at which point your host file will resolve it to your local development server.

For Example: Add a line to your hosts file like 127.0.0.1 local.mywebdomain.com

Then in your PayPal button, pass that same URL for the return parameter (e.g. <input type="hidden" name="return" value="http://local.mywebdomain.com/success.php">)

Upvotes: 6

fire
fire

Reputation: 21531

You can't use localhost it's not a valid URL, PayPal can't access your local enviornment.

Best way is to upload the form and return script to the web, there's a number of free PHP web hosts out there if you don't have one.

Upvotes: 0

Related Questions