News:

Looking for documentation? Take a look on our wiki

Main Menu

Shipping address in paypal displaying bill to address

Started by actionsprite, December 07, 2008, 22:08:15 PM

Previous topic - Next topic

actionsprite

Hi, I'm using Joomla 1.5.7 and virtuemart 1.1.2.

For some reason when the customer completes their transaction at paypal, under the heading "Ship To" it lists the user's Billing address rather than the shipping address they've entered/selected...

I'm using the default paypal module supplied with virtuemart, and ideas how to fix this?

p.s. I've set up virtuemart not to require registration (via the options drop down).

the code:
<?php
$db1 
= new ps_DB();
$q "SELECT country_2_code FROM #__vm_country WHERE country_3_code='".$user->country."' ORDER BY country_2_code ASC";
$db1->query($q);

$url "https://www.paypal.com/cgi-bin/webscr";
$tax_total $db->f("order_tax") + $db->f("order_shipping_tax");
$discount_total $db->f("coupon_discount") + $db->f("order_discount");
$post_variables = Array(
"cmd" => "_ext-enter",
"redirect_cmd" => "_xclick",
"upload" => "1",
"business" => PAYPAL_EMAIL,
"receiver_email" => PAYPAL_EMAIL,
"item_name" => $VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_NUMBER').": "$db->f("order_id"),
"order_id" => $db->f("order_id"),
"invoice" => $db->f("order_number"),
"amount" => round$db->f("order_subtotal")+$tax_total-$discount_total2),
"shipping" => sprintf("%.2f"$db->f("order_shipping")),
"currency_code" => $_SESSION['vendor_currency'],

"address_override" => "1",
"first_name" => $dbbt->f('first_name'),
"last_name" => $dbbt->f('last_name'),
"address1" => $dbbt->f('address_1'),
"address2" => $dbbt->f('address_2'),
"zip" => $dbbt->f('zip'),
"city" => $dbbt->f('city'),
"state" => $dbbt->f('state'),
"country" => $db1->f('country_2_code'),
"email" => $dbbt->f('user_email'),
"night_phone_b" => $dbbt->f('phone_1'),
"cpp_header_image" => $vendor_image_url,

"return" => SECUREURL ."index.php?option=com_virtuemart&page=checkout.result&order_id=".$db->f("order_id"),
"notify_url" => SECUREURL ."administrator/components/com_virtuemart/notify.php",
"cancel_return" => SECUREURL ."index.php",
"undefined_quantity" => "0",

"test_ipn" => PAYPAL_DEBUG,
"pal" => "NRUBJXESJTY24",
"no_shipping" => "1",
"no_note" => "1"
);
if( 
$page == "checkout.thankyou" ) {
$query_string "?";
foreach( 
$post_variables as $name => $value ) {
$query_string .= $name"=" urlencode($value) ."&";
}
vmRedirect$url $query_string );
} else {
echo 
'<form action="'.$url.'" method="post" target="_blank">';
echo 
'<input type="image" name="submit" src="https://www.paypal.com/en_US/i/btn/x-click-but6.gif" border="0" alt="Click to pay with PayPal - it is fast, free and secure!" />';

foreach( 
$post_variables as $name => $value ) {
echo 
'<input type="hidden" name="'.$name.'" value="'.htmlspecialchars($value).'" />';
}
echo 
'</form>';

}
?>

GCDR0812


cinos

Could someone post the solution to this?

I'm having the same troubles. :(


ajredding

Just to give ya'll an update on this issue I've posted a majorly modified code related to this. 

Take a look here http://forum.virtuemart.net/index.php?topic=49535.msg169004#msg169004  This will give you a run down of all of the changes that has gone on with this code and the results.  Most of them are well worth the change in code.
RAW Media Group - Website design - http://www.rawmediagroup.com
Cubed Hosting - Website Hosting - http://www.cubedhosting.com

actionsprite

Thanks for posting AJ,
I was excited ot use your new script, and it seemed to work until I realised that the first screen on the paypal page is asking for your billing information and not your shipping information.

i.e. Your script is managing to post the shipping address fine, but it's actually being inserted into paypal's billing information, which is just as bad, only in the reverse of what's now happening (shipping address on next screen is actually filled out with billing address details.)

Seems like a catch 22, unless there is room in the paypal api for seperate billing and shipping addresses?

ajredding

There isn't a way around this the variables passed to paypal doesn't support for a different bill to / ship to.  It supports a "Ship to"  although there is an option in the variables to show a "ship to" address field in Paypal.  But now I get to thinking about this and now it's a mess in how this would work out in the end (I'll have to experiment some more at a later time)  But I did run a transaction through the sandbox with changing out the billing information and it still maintained the ship to address once the transaction was complete.  This might take a real world test to figure out if it really works properly. 
RAW Media Group - Website design - http://www.rawmediagroup.com
Cubed Hosting - Website Hosting - http://www.cubedhosting.com

actionsprite

Ahh, that's crazy. I'm suprised by that on Paypal's behalf as it's a very common situation.

pashis

ajredding thank you so much for the code..
everything works great except of the shipping or billing info.. None of that information is passed on to paypal.. i dont mind whether its shipping or billing..is there a reason for that?

pashis

Ok the shipping info gets through just fine.. is there a way however to include the phone number?
Anyone?

baggiesmad

I'm experiencing this issue with the latest version of Virtuemart. Does anyone have a fix for this?