Joomla.it Forum
Componenti per Joomla! => Gestione e-commerce => : matrix845 13 May 2008, 14:00:03
-
Ciao ragazzi , sto utilizzando Virtuemart 1.0.14 con il modulo paypal standard associato ad un conto Paypal premier (consente di ricevere pagamenti anche dai non registrati a paypal).
Bene , ttto funziona alla grande , l'unico problema è che quando l'utente clicca conferma ordine e passa dal mio sito a quello paypal , le uniche informazioni che passo a paypal sono il numero d'ordine e il totale in € , spedizione compresa.
Mi piacerebbe anche inviare informazioni non troppo importanti ma utili da non ripetere come nome cognome ed email.
Secondo voi è fattibile andandando a modificare la configurazione del pagamento paypal (che riporto sotto) oppure paypal non accetta proprio questi dati?
Grazie mille
Pierpaolo
<?php
$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" => "_xclick",
"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_total, 2),
"shipping" => sprintf("%.2f", $db->f("order_shipping")),
"currency_code" => $_SESSION['vendor_currency'],"first_name" => $dbbt->f('first_name'),
"last_name" => $dbbt->f('last_name'),
"address_street" => $dbbt->f('address_1'),
"address_zip" => $dbbt->f('zip'),
"address_city" => $dbbt->f('city'),
"address_state" => $dbbt->f('state'),
"address_country" => $dbbt->f('country'),
"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",
"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) ."&";
}
mosRedirect( $url . $query_string );
} else {
echo '<form action="'.$url.'" method="post" target="_blank">';
echo '<input type="image" name="submit" src="http://images.paypal.com/images/x-click-but6.gif" border="0" alt="Make payments with PayPal, it is fast, free, and secure!" />';
foreach( $post_variables as $name => $value ) {
echo '<input type="hidden" name="'.$name.'" value="'.$value.'" />';
}
echo '</form>';
}
?>
-
In teoria è fattibile, ma personalmente non sono ancora riuscito a testare questa cosa.
Effettivamente è molto scomodo per il cliente dover ripetere l'inserimento dei propri dati personali.
Fai qualche prova e poi facci sapere com'è andata. ;-)
-
Salve,
su indicazione del buon Soeren, già implementata peraltro sul mio sito ::), andrebbe modificato il processore del pagamento in questo modo:
<?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_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" 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>';
}
?>
Spero possa essere utile.
Saluti ;)
-
Salve,
su indicazione del buon Soeren, già implementata peraltro sul mio sito ::), andrebbe modificato il processore del pagamento in questo modo:
<?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_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" 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>';
}
?>
Spero possa essere utile.
Saluti ;)
Ciao Jospic , inanzitutto grazie , ho correttamente inserito il tuo codice , ma ti riporto l'errore che mi da quando premo conferma ordine edovrei arrivare sul sito di paypal:
Grazie per l´ordine.
Success Il tuo ordine è stato inviato con successo!
Un email di conferma è stata spedita a: airteknology@gmail.com
Fatal error: Call to undefined function: vmredirect() in /home/domains/bikorn.com/web/administrator/components/com_virtuemart/html/checkout.thankyou.php(83) : eval()'d code on line 50
Secondo te da cosa puo essere dipeso?
Ciao
Pierpaolo
-
Ciao, tieni conto che questa modifica l'ho provata su VirtueMart 1.1.
Non so se possa dipendere da questo...
-
Effettivamente sì, sembrerebbe che la funzione vmRedirect non sia definita in VirueMart 1.0.4.
Prova a sostituire vmRedirect con la chiamata a funzione mosRedirect nel processore di pagamento.
In altre parole modifica:
vmRedirect( $url . $query_string );
in
mosRedirect ( $url . $query_string );
fammi sapere se va...
Saluti
-
provo e ti faccio sapere , grazie ancora.
Pierpaolo
-
Effettivamente sì, sembrerebbe che la funzione vmRedirect non sia definita in VirueMart 1.0.4.
Prova a sostituire vmRedirect con la chiamata a funzione mosRedirect nel processore di pagamento.
In altre parole modifica:
vmRedirect( $url . $query_string );
in
mosRedirect ( $url . $query_string );
fammi sapere se va...
Saluti
grande funziona benissimo , solo che nn mostra il numero d'ordine al cliente!!!
Adesso provo a fare un pagamento e a vedere se funziona il cambio stato ordine da attesa a pagato!!!
Secondo te come possiamo passare il numero d'ordine al checkout paypal?
Ciao
Pierpoalo
-
Probabilmente dipende sempre dal fatto che lo script originale è per VM 1.1.
Prova a modificare la linea:
"item_name" => $VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_NUMBER').": ". $db->f("order_id"),
con quella dello script per VM 1.0.x:
"item_name" => $VM_LANG->_PHPSHOP_ORDER_PRINT_PO_NUMBER.": ". $db->f("order_id"),
Saluti
-
Salve!
mi trovo lo stesso problema, ho virtuemart 1.0 e non riesco a passare i dati dell'indirizzo a Paypal per confermare l'ordine ed avere poi su quell'ordine la copertura di paypal in caso di problemi con la spedizione o il pagamento.
Volevo chiedere se lo script proposto è valido oppure se ci sono problemi da considerare, al momento avevo utilizzato quello proposto da vmitala.net ma come vi dicevo passa solo il totale e il numero d'ordine...
Cheers
Franco
-
anche io ho lostesso problemo è come se virtemart non indirizzasse a paypal.... qual è il file da modificare? non c'è scritto... mi date una mano?
grazie
-
dovete modificare/controllare l'html nel codice del pagamento codificato e passare i campi correttamente, e SOPRATTUTTO non riesumare threads vecchi di 3 anni di persone che neanche frequentano più il forum.
ciao
jk