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! 
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.






Joined: 10/08/2007