News:

Support the VirtueMart project and become a member

Main Menu

VM Paypal Website Payment Standard Integration?

Started by azherbs, September 04, 2010, 09:05:31 AM

Previous topic - Next topic

azherbs

Hi Guys, Can you help me out how to do the process. I want to add credit card payment option on my site, using paypal payment standard as a processor. Any url of tutorial and guide will do, thanks and i highly appreciate it...thanks :)

AH

Regards
A

Joomla 3.10.11
php 8.0


AH

Azherbs
This should work for you and save you and others time and effort! :-

Admin/store/payment methods/add new payment method

Payment method form panel
1. Active checked
2. Payment method name = PayPal (can use anything)
3. Code I use pp  you can use what you like
4. class= ps_paypal
5. Payment method type = HTML_formbased 

Hit apply (this will refresh the configuration panel to show the following details that you need to input)

Go to the configuration panel

Configuration panel
1. Test mode = no THIS IS NOT A PAYPAL SANDBOX SETTING!!!
2. Payment e-mail = YOUR paypal email address live or sandbox as required (select the apporpriate URL as needed)
3. Order Status for successful transactions - confirmed
4. Order status for pending - pending payment confirmation
5. Accept verified buyers = No
6. Failed transactions - Up to you, but I use pending

7. Copy the code below into the Payment extra information box:-

Edit out one of the URLs from below to coneect to either the PayPal live or PayPal sandbox as needed.

Live vs Sandbox

Sandox testing URL
$url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
Live URL
$url = "https://www.paypal.com/cgi-bin/webscr";

You need to change you PayPal e-mail address as well to flip between sandbox and live.
PayPal payment email:
For Live Your business email, which is your login at paypal or
For sandbox Your seller e-mail address if you use paypal sandbox (e.g. seller_12592_biz@xxxx.com). Not your Sandbox login.



<?php
//Choose either live or sandbox from below but not both!
$url "https://www.sandbox.paypal.com/cgi-bin/webscr";
$url "https://www.paypal.com/cgi-bin/webscr";
//end of choice

$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");
$shipping_inc_tax $db->f("order_shipping") + $db->f("order_shipping_tax");
 
// 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();
 

//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_value0strpos($attributes_value':')), " ");
      
$supp_var['on' $z '_' $i] = $attrib_name;
      
$attrib_sel trim(substr_replace(substr_replace($attributes_value""0strrpos($attributes_value':')), ""02));
      
$supp_var['os' $z '_' $i] = $attrib_sel;
      
$v++;
      
$z++;
      unset(
$attributes_value);
    }
  }
 
  
$supp_var['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);
$supp_var['amount_' $i] = round($dboi->f("product_final_price"),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_name $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_total"),2),
"handling_cart" => $shipping_inc_tax,
//"tax_cart" => $tax_total,
"discount_amount_cart" => $discount_total,
"invoice" => $db->f("order_number"),
"return" => SECUREURL ."index.php?option=com_virtuemart&page=checkout.result&order_id=".$db->f("order_id"),
"notify_url" => SECUREURL ."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,
"address_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_GB/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>';
}
?>




I secure my administrator directory so IPN might fail.

To enable IPN notifications to update the status of the order. I copy the
administrator/components/com_virtuemart/notify.php to the ROOT directory of the site

The line in the code above that realates to this is:-

"notify_url" => SECUREURL ."notify.php",
If you do not wish to do this, then change the line to this:-
"notify_url" => SECUREURL ."administrator/components/com_virtuemart/notify.php",


Let me know if this helps.

Please feel free to donate below.

Regards
A

Joomla 3.10.11
php 8.0


AH

Regards
A

Joomla 3.10.11
php 8.0

solmab

Hi Hutson

Wanted to check does the above code send order confirmation email to customer before they make payment or after paypal updates the order status?

Can the above code be merged with http://www.b-planet.com/VirtueMart/paypal-patch.html

Which send the order confirmation email after the paypal payment.
The paypal-pal patch does not send line item details to paypal that is the issue.

Any help would be appreciated.  Thanks

Patricck

Hi, i would like to ask the same question as Solmab.

I have a working pay with paypal payment on my site (business standard account) - people can choose to pay with paypal. But i have a credit card payment also.
Users choose to pay with credit card, enter information.
I have used this how to to configure credit card payment:
http://forum.virtuemart.net/index.php?topic=39584.0
but i get a confirmation email before the payment was done.

How can i solve this issue?

thanks very much
Best regards
Patrik

den_piero

Hi I'm on VM 1.1.8, i have applied your payment extra info, somehow after successful transaction the order form in virtuemart status still pending, i use sandbox account to test. Please help me.

and one more thing why in order list backend, there are double transaction after checkout? anyone possibly know? i'm sorry i know this is not related to the thread.

Regards