Back to top

Autore Topic: Passare info utente al checkout di paypal  (Letto 7628 volte)

Offline matrix845

  • Appassionato
  • ***
  • Post: 483
    • Mostra profilo
Passare info utente al checkout di paypal
« il: 13 Mag 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


Codice: [Seleziona]
<?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_total2),
"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>';

}
?>

Offline GiorgioBlu

  • Abituale
  • ****
  • Post: 861
  • Sesso: Maschio
  • Utente dal: 23/06/2004 Susegana - TV - Italy
    • Mostra profilo
Re: Passare info utente al checkout di paypal
« Risposta #1 il: 13 Mag 2008, 14:09:27 »
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. ;-)


Offline jospic

  • Appassionato
  • ***
  • Post: 353
  • Sesso: Maschio
    • Mostra profilo
Re: Passare info utente al checkout di paypal
« Risposta #2 il: 20 Mag 2008, 19:05:29 »
Salve,
su indicazione del buon Soeren, già implementata peraltro sul mio sito ::), andrebbe modificato il processore del pagamento in questo modo:

Codice: [Seleziona]
<?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>';

}
?>


Spero possa essere utile.
Saluti  ;)
"In a world without walls and fences, who needs windows and gates?"
http://www.iperspace.it/download/linux/linuxwetrust.gif

Offline matrix845

  • Appassionato
  • ***
  • Post: 483
    • Mostra profilo
Re: Passare info utente al checkout di paypal
« Risposta #3 il: 22 Mag 2008, 03:04:42 »
Salve,
su indicazione del buon Soeren, già implementata peraltro sul mio sito ::), andrebbe modificato il processore del pagamento in questo modo:

Codice: [Seleziona]
<?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>';

}
?>


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

Offline jospic

  • Appassionato
  • ***
  • Post: 353
  • Sesso: Maschio
    • Mostra profilo
Re: Passare info utente al checkout di paypal
« Risposta #4 il: 22 Mag 2008, 14:29:04 »
Ciao, tieni conto che questa modifica l'ho provata su VirtueMart 1.1.

Non so se possa dipendere da questo...

"In a world without walls and fences, who needs windows and gates?"
http://www.iperspace.it/download/linux/linuxwetrust.gif

Offline jospic

  • Appassionato
  • ***
  • Post: 353
  • Sesso: Maschio
    • Mostra profilo
Re: Passare info utente al checkout di paypal
« Risposta #5 il: 22 Mag 2008, 14:36:51 »
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:

Codice: [Seleziona]
vmRedirect( $url . $query_string );
in 

Codice: [Seleziona]
mosRedirect ( $url . $query_string );
fammi sapere se va...
Saluti
« Ultima modifica: 22 Mag 2008, 14:58:11 da jospic »
"In a world without walls and fences, who needs windows and gates?"
http://www.iperspace.it/download/linux/linuxwetrust.gif

Offline matrix845

  • Appassionato
  • ***
  • Post: 483
    • Mostra profilo
Re: Passare info utente al checkout di paypal
« Risposta #6 il: 22 Mag 2008, 17:28:38 »
provo e ti faccio sapere , grazie ancora.

Pierpaolo

Offline matrix845

  • Appassionato
  • ***
  • Post: 483
    • Mostra profilo
Re: Passare info utente al checkout di paypal
« Risposta #7 il: 24 Mag 2008, 21:22:45 »
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:

Codice: [Seleziona]
vmRedirect( $url . $query_string );
in 

Codice: [Seleziona]
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

Offline jospic

  • Appassionato
  • ***
  • Post: 353
  • Sesso: Maschio
    • Mostra profilo
Re: Passare info utente al checkout di paypal
« Risposta #8 il: 25 Mag 2008, 14:30:18 »
Probabilmente dipende sempre dal fatto che lo script originale è per VM 1.1.

Prova a modificare la linea:

Codice: [Seleziona]
"item_name" => $VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_NUMBER').": ". $db->f("order_id"),

con quella dello script per VM 1.0.x:

Codice: [Seleziona]
"item_name" => $VM_LANG->_PHPSHOP_ORDER_PRINT_PO_NUMBER.": ". $db->f("order_id"),
Saluti


"In a world without walls and fences, who needs windows and gates?"
http://www.iperspace.it/download/linux/linuxwetrust.gif

Offline Dr.Dran

  • Nuovo arrivato
  • *
  • Post: 3
  • Sesso: Maschio
  • OpenSource IT FreeLancer
    • Mostra profilo
Re:Passare info utente al checkout di paypal
« Risposta #9 il: 03 Dic 2011, 10:58:52 »
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

Offline tiziana

  • Appassionato
  • ***
  • Post: 250
  • Sesso: Femmina
    • Mostra profilo
Re:Passare info utente al checkout di paypal
« Risposta #10 il: 17 Dic 2011, 11:56:18 »
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

Offline jk4nik

  • Instancabile
  • ******
  • Post: 6517
  • Sesso: Maschio
    • Mostra profilo
Re:Passare info utente al checkout di paypal
« Risposta #11 il: 17 Dic 2011, 17:29:08 »
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
Sta per essere approvata la nuova nomenclatura per le taglie dei reggiseni: essi saranno d'ora in poi descritti con le lettere dell'alfabeto ABCDEF: A - Apprezzabile B - Buona C - Cannonata D - Discreta E - Esagerata F - Falsa

 



Web Design Bolzano Kreatif