paypal ipn, address_override and shipping

Posts: 167
Joined: 10/08/2007
Bug FinderGetting busy with the Ubercode.PayPal Hero

Ok, I've been doing a lot of paypal ipn testing with ubercart alpha 8. One area that is still a bit murky is how paypal and ubercart handles addresses. To be very clear, I'm ONLY talking about website payments standard with ipn notification. Payments pro and express checkout are very different animals from both the paypal and ubercart end. All methods have their quirks, beware! Smiling

The issue is related to passing addresses to paypal. By default, uc passes the billing address and sets two key variables:

address_override=1 (optional)
This means tell paypal to use this address instead of any address that the customer may have stored in their paypal account. This doesn't always work though, especially if there are missing fields. This setting can be changed in the uc admin interface. This also tells paypal to display the address passed-in from uc to prevent the user from having to enter their address again. Note, only the billing address is passed by uc ... more on that later.

no_shipping=1 (hard-coded)
(from the paypal doc) If set to "1," your customer will not be asked for a shipping address. This is optional; if omitted or set to "0," your customer will be prompted to include a shipping address. The default is hard-coded to 1 in uc. No way to change this but to edit the code.

The net effect is that shipping information is NOT passed from uc to paypal website payments standard. From the various forum posts I've read, I'm not sure everyone using the module is aware of this, and it could be important to understand. Some might be assuming it's working because their ship and billing addresses are the same. This is probably true for a majority of customers. But, what if it's not?

Ubercart is passing the billing address to paypal. With the above both set to 1, then the shipping address in paypal becomes the same as the billing. This could cause issues reconciling data between uc and paypal regarding shipping addresses. It also causes paypal to say, at a certain point in the sale process, that the shipping address is really what the user typed in uc as the billing address. This goes unnoticed until you actually specify a different shipping address in uc. Then you can get confusion.

To add another wrinkle, paypal tries to do address verification on addresses that are passed in. Some have complained that international addresses cause an error and that turning off address_override provides a solution. Well, not really since the problem is that paypal can't verify the address in the first place. When the user goes to enter the address in paypal, it will fail again since it's the same address. There is a setting in paypal to turn off address verification, maybe this is a better approach here? Comments? Are my assumptions correct? I'd love to hear from international merchants on this one.

--

Christopher Schaub
LuteGrass, LLC
http://www.lutegrass.com

Posts: 1293
Joined: 08/14/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.

Actually this is pretty helpful. We hadn't run into any issues with this until just yesterday (or the day before) when a customer kept getting denied their PayPal transaction because of the override settings. I disabled this, and the customer wrote back saying he was able to get through. This also didn't seem to negatively affect our usual PayPal orders. I haven't had time to test so I'm not sure how the user experience has changed, if at all.

--

"Pain don't hurt." - Dalton

Mike Nelson's RiffTrax! www.rifftrax.com

Posts: 167
Joined: 10/08/2007
Bug FinderGetting busy with the Ubercode.PayPal Hero

I think you'll notice, if you turn off address_override in uc, that no address info is passed over to paypal for customers. This might cause them to squak at having to enter it twice. Let me know what you find. There's supposed to be a setting to turn off the confirmed address checking in paypal, haven't found it yet. This might be a better approach though it might increase your fraudulent orders a bit?

--

Christopher Schaub
LuteGrass, LLC
http://www.lutegrass.com

Posts: 1
Joined: 03/04/2008

We had a weird issue going on on our site. I have to say that we use the e-commerce module, not ubercart, but it looks like the problem was the same. We had address_override set to 1 and all customers worked fine, except for the UK. ANY user with an existing paypal account registered in the UK got an address mismatch error.

We do not ship any goods, so we don't care about the address so much and from a financial point of view what matters is the address they defined on our site.

I commented the line about address_override and now magically all UK accounts work again. Other countries did not seem to be affected, we tested a bunch of EU countries, US, Canada, Australia.

Thanks for the tip and... Still looking for a setting in the administrative interface of paypal.

PS: is it just me or the sandbox is the slowest site since 1991?

Posts: 5269
Joined: 08/07/2007
AdministratorHead Code Monkey - I eat bugs.

lol Yes, the Sandbox runs slower than molasses. Glad we could offer some cross-project help here. Smiling