News:

Support the VirtueMart project and become a member

Main Menu

Information passing to Paypal?

Started by norman kaui, April 21, 2010, 06:37:03 AM

Previous topic - Next topic

norman kaui

Hi can anyone tell me where to find the html code of the information being passed to paypal during checkout?

Paypal support tells us that we are sending the wrong country code.  Everything looks fine on our side but I can't seem to find where to verify the info.

Any help would be greatly appreciated.

TEST 123

in VM-store -> payment list->paypal->configuration.
Add below code.it will help you..
<?php
$url = "https://www.paypal.com/cgi-bin/webscr";
$order_id = $db->f("order_id");
$tax_total = $db->f("order_tax") + $db->f("order_shipping_tax");
$discount_total = $db->f("coupon_discount") + $db->f("order_discount");  

// Query for Order Items
$dboi = new ps_DB;
$q_oi = "SELECT * FROM #__vm_order_item ";
$q_oi .= "WHERE #__vm_order_item.order_id='$order_id'";
$dboi->query($q_oi);

$row_num = $dboi->num_rows();

//Getting Cart Items
$auth = $_SESSION['auth'];
$cart = $_SESSION['cart'];
$t_quantity = 0;
$disc_perItem = 0;
$i=1;

// Query to get User Info
$dbb = new ps_DB;
$q = "SELECT * FROM #__vm_user_info ";
$q .= "WHERE user_id ='".$my->id."' ";
$dbb->setQuery($q);
$dbb->query();

//logic for applying discounts to multiple items
$discount_totalCP = $db->f("coupon_discount") + $db->f("order_discount");

while($dboi->next_record()) {
 $t_quantity = $t_quantity + intval($dboi->f("product_quantity"));
}

$dboi = null;
$dboi = new ps_DB;
$dboi->query($q_oi);

if($t_quantity > 0)
{
 if($discount_totalCP > 0) {
   $disc_perItem = round($discount_totalCP / $t_quantity, 2);
 }
 else {
   $disc_perItem = 0;
 }
}
else {
 $disc_perItem = 0;
}
//query to optain product attributes
while($dboi->next_record()) {

 $prod_attrib = $dboi->f("product_attribute");
 $supp_var['item_name_' . $i] = strip_tags("Order #". $db->f("order_id").": ". $dboi->f("order_item_name"));

 if($prod_attrib > ''){
   $attributes_array = explode('<br/>',$prod_attrib);
   $v = 0;
   $z = 1;
   foreach ( $attributes_array as $attributes_value){
     $attrib_name = trim(substr($attributes_value, 0, strpos($attributes_value, ':')), " ");
     $supp_var['on' . $z . '_' . $i] = $attrib_name;
     $attrib_sel = trim(substr_replace(substr_replace($attributes_value, "", 0, strrpos($attributes_value, ':')), "", 0, 2));
     $supp_var['os' . $z . '_' . $i] = $attrib_sel;
     $v++;
     $z++;
     unset($attributes_value);
   }
 }

 $supp_vaProxy-Connection: keep-alive
Cache-Control: max-age=0

5B'item_number_' . $i] = $dboi->f("order_item_sku");
 $supp_var['quantity_' . $i] = $dboi->f("product_quantity");
 $supp_var['amount_' . $i] = round(($dboi->f("product_item_price") - $disc_perItem),2);
 $i++;
}


//Query used to find whether to use Bill Address or Ship to address
$dboui = new ps_DB;
$q_oui = "SELECT * FROM #__vm_order_user_info ";
$q_oui .= "WHERE #__vm_order_user_info.order_id='$order_id' ORDER BY #__vm_order_user_info.order_info_id DESC";
$dboui->query($q_oui);

/*$oui_id = $dboui->f("order_info_id");

if($oui_id == $order_id){
 $first_nameProxy-Connection: keep-alive
Cache-Control: max-age=0

$dbb->f("first_name");
 $last_name = $dbb->f("last_name");
 $address1 = $dbb->f("address_1");
 $address2 = $dbb->f("address_2");
 $city = $dbb->f("city");
 $state = $dbb->f("state");
 $address_country = $dbbt->f("country");
 $zip = $dbb->f("zip");
 $H_PhoneNumber = $dbb->f("phone_1");
}
else {*/
 $first_name = $dboui->f("first_name");
 $last_name = $dboui->f("last_name");
 $address1 = $dboui->f("address_1");
 $address2 = $dboui->f("address_2");
 $city = $dboui->f("city");
 $state = $dboui->f("state");
 $address_country = $dboui->f("country");
 $zip = $dboui->f("zip");
 $H_PhoneNumber = $dboui->f("phone_1");
//}

// Builds array for the form
$post_variables = Array(
"cmd" => "_cart",
"upload" => "1",
"page_style" => "paypal",
"business" => PAYPAL_EMAIL,
"currency_code" => $_SESSION['vendor_currency'],
"amount" => round( $db->f("order_subtotal")+$tax_total-$discount_total, 2),
"handling_cart" => sprintf("%.2f", $db->f("order_shipping")),
"tax" => $tax_total,
"tax_cart" => $tax_total,
"invoice" => $db->f("order_number"),
"image_url" => $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",
"no_shipping" => "1",
"no_note" => "1",
"email" => $dbb->f("user_email"),
"address_override" => "1",//change this to 0 if you have - Paypal does not allow your country of residence to ship to the country you wish to - errors
"first_name" => $first_name,
"last_name" => $last_name,
"address1" => $address1,
"address2" => $address2,
"city" => $city,
"state" => $state,
"country" => $address_country,
"zip" => $zip,
"night_phone_b" => $H_PhoneNumber
);
//add and send the new variables
if( $page == "checkout.thankyou" ) {
 $query_string = "?";

 foreach( $post_variables as $name => $value ) {
   $query_string .= $name. "=" . urlencode($value) ."&";
 }

 if(is_array($supp_var) && count($supp_var)) {
   foreach($supp_var as $name => $value) {
     $query_string .= $name. "=" . urlencode($value) ."&";
   }
 }

 vmRedirect( $url . $query_string );
}
else {
 echo '<form action="'.$url.'" method="post" target="_blank">';

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

 if(is_array($supp_var) && count($supp_var)) {
   foreach($supp_var as $name => $value) {
     echo '<input type="hidden" name="'.$name.'" value="'.$value.'" />';
   }
 }
 echo '<input type="image" name="submit" src="https://www.paypal.com/en_US/i/btn/x-click-but6.gif" border="0" alt="Make payments with PayPal, it is fast, free, and secure!">';
//Change the above image url for different languages and countries
 echo '</form>';
}
?>
 

norman kaui

Thank you.  I just tried it but received the following error during checkout:

QuoteParse error: syntax error, unexpected ':' in /home/mysite/public_html/components/com_virtuemart/themes/vm_green/templates/pages/checkout.thankyou.tpl.php(61) : eval()'d code on line 73

any suggestions? :)

TEST 123

try this :
<?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);
$dboi = new ps_DB;
$q_oi = "SELECT * FROM #__vm_order_item ";
$q_oi .= "WHERE #__vm_order_item.order_id='$order_id'";
$dboi->query($q_oi);
$row_num = $dboi->num_rows();
$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")."::  " . $dboi->f("product_quantity") ."  " .  $dboi->f("order_item_name").", " . $dboi->f("product_attribute"),
"order_id" => $db->f("order_id"),
"invoice" => $db->f("order_number") ,
"amount" => round( $db->f("order_subtotal")+$tax_total-$discount_total, 2),
"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" 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>';

}
?>


in previous code variable definations are different

norman kaui

The error is gone but now the shipping isn't passed to paypal.  Shipping is calculated in the card during checkout but once it arrives at the paypal payment page it only shows the amount for the product.

Also, when the paypal page pops up and you click on "CONTINUE" at the bottom left corner of the page it takes you to the credit card option.  At the top of that page is a "country" drop down menu that is suppose be set to whatever country was selected in virtuemart during checkout but that is still not happening.  So you have to select the country manually. 

Paypal claims that this is due to the fact that virtuemart is not passing the correct two digit country code.

I really appreciate you taking the time to help. :)  I have no way of testing what information is being passed to paypal.  All I can see is the customers address (my self in this case), Name, Street, Zip Code and State....Country is not selected and this is what's causing the issue for international orders with Paypal.

Thank you again for any advise you can provide!!! :)

Seiko

Do you have questions and need some help for your Virtuemart project?
I'm ready to help you. Hire Me on oDesk

stinga

I have posted my paypal extra info here somewhere, do a search, it works for me.
Stinga.
614869 products in 747 categories with 15749 products in 1 category.
                                             Document Complete   Fully Loaded
                Load Time First Byte Start Render   Time      Requests      Time      Requests
First View     2.470s     0.635s     1.276s          2.470s       31            2.470s      31
Repeat View  1.064s     0.561s     1.100s          1.064s       4             1.221s       4