UPDATE:  Found a work-around fix.  Instead of replacing line 291, I added $Shipping->name at 292 . . .

// Shipping
if (” != ($Shipping->address.$Shipping->city.$Shipping->state.$Shipping->postcode.$Shipping->country)) {
$_[‘SHIPTONAME’]             = $Order->Customer->firstname.’ ‘.$Order->Customer->lastname;
$_[‘SHIPTONAME’]             = $Shipping->name; //Added to send shipping name to PayPal
$_[‘SHIPTOPHONENUM’]        = $Order->Customer->phone;
$_[‘SHIPTOSTREET’]            = $Shipping->address;
$_[‘SHIPTOSTREET2’]            = $Shipping->xaddress;
$_[‘SHIPTOCITY’]            = $Shipping->city;
$_[‘SHIPTOSTATE’]            = $Shipping->state;
$_[‘SHIPTOZIP’]                = $Shipping->postcode;
$_[‘SHIPTOCOUNTRYCODE’]        = $Shipping->country;

if (‘UK’ == $Shipping->country) // PayPal uses ISO 3361-1
$_[‘SHIPTOCOUNTRYCODE’] = ‘GB’;
}

And it works!

PayPalPro_fixed_shipto_name

 

ORIGINAL POST BELOW:

PayPalPro gateway sends billing name as shipping name to PayPal.

PalPalPro.php line # 291 is:

$_['SHIPTONAME'] = $Order->Customer->firstname.' '.$Order->Customer->lastname;

which just puts the billing name as the ship-to name, and it should be something like:

$_['SHIPTONAME'] = $Shipping->name;

(Which didn’t work when I tried it.  Got an ‘Invalid Address’ error.)

What the order receipt in Shopp looks like (correct billing name/address and shipping name/address):

PayPalPro_right_shipto_name

 

In PayPal.com, the shipping address is correct, but the name is the billing name, not the shipping name entered by the customer.

What the ship-to address name is in PayPal (billing name instead of shipping name).

PayPalPro_wrong_shipto_name