Pagina 1 di 2

Inserire una funzione nel modulo pay pal

Inviato: 25/06/2009, 19:59
da Orsi
Salve a tutti

nel modulo che invia le informazioni a PayPal dovrei aggiungere una funzione per avere il formato corretto dei decimali ; ad esempio una funzione “numer_format” oppure “round”.

qualcuno sa dirmi come devo fare?

Grazie

Saluti

Re: Inserire una funzione nel modulo pay pal

Inviato: 25/06/2009, 23:58
da hsg26
sei nella sezione sbagliata. ti sposto.

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 8:49
da xnetus
Precisamente di quali informazioni stai parlando?

Dei paramentri che passi o altro?

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 9:06
da Orsi
Praticamente per la tiologia di prodotti che vendo io ho bisogno di lasciare 3 decimali dopo la virgola nei prezzi esposti in vetrina

il problema nasce quando il cliente che paga con pay pal che invia il totale con 3 decimali dopo la virgola ed esce un messaggio di errore da parte di paypal che dice che il formato prezzo non è compatibile

mi hanno detto che si potrebbe creare una funzione nel modulo pay pal che quando vengono inviati i dati a paypal riduca i decimali a 2

mi hanno detto che si può fare in 2 modi: funzione “numer_format” oppure “round”.

sai dirmi come va scritta questa funzione?

Grazie.

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 9:40
da xnetus
La funzione è questa:

Codice: Seleziona tutto

$var = round(1.95583, 2);
Restituisce 1.96

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 9:46
da Orsi
Grazie per la risposta

scusa la mia ignoranza in materia ma devo inserirla in un punto ben preciso del file paypal.php ?

se si sai dirmi anche dove?

Grazie ancora

Luca

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 10:04
da xnetus
Ok, mi chiedevi la funzione....

Cmq, premesso che nn conosco il tuo file paypal.php, se è quello standard, devi modificare la funzione process_button

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 10:29
da Orsi
ecco cosa c'è nel file paypal.php a riguardo la sezione process_button

sai dirmi dove devo inserire la funzione?

Grazie.

-----------------------------------------------------------------------------------------------------------------------------------------

function process_button() {
global $order, $currencies, $currency;

if (MODULE_PAYMENT_PAYPAL_CURRENCY == 'Selected Currency') {
$my_currency = $currency;
} else {
$my_currency = substr(MODULE_PAYMENT_PAYPAL_CURRENCY, 5);
}
if (!in_array($my_currency, array('CAD', 'EUR', 'GBP', 'JPY', 'USD'))) {
$my_currency = 'USD';
}
$process_button_string = tep_draw_hidden_field('cmd', '_xclick') .
tep_draw_hidden_field('business', MODULE_PAYMENT_PAYPAL_ID) .
tep_draw_hidden_field('item_name', STORE_NAME) .
tep_draw_hidden_field('amount', number_format(($order->info['total'] - $order->info['shipping_cost']) * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) .
tep_draw_hidden_field('shipping', number_format($order->info['shipping_cost'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) .
tep_draw_hidden_field('currency_code', $my_currency) .
tep_draw_hidden_field('return', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) .
tep_draw_hidden_field('cancel_return', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));

return $process_button_string;
}

function before_process() {
return false;
}

function after_process() {
return false;
}

function output_error() {
return false;
}

function check() {
if (!isset($this->_check)) {
$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYPAL_STATUS'");
$this->_check = tep_db_num_rows($check_query);
}
return $this->_check;
}

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 10:38
da xnetus
Dove c'è la definizione di amount

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 15:14
da Orsi
Ciao ho risolto solo in parte

mi arrotonda i 2 decimali sempre a .00 per eccesso o per difetto

sai dirmi come posso risolvere?

Grazie

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 16:09
da xnetus
Scusami non ho capito,
vuoi un numero a due cifre ma nn vuoi arrotondarlo?

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 16:26
da Orsi
Si esatto...

praticamente il terzo decimale del totale dell'ordine è quasi sempre 0 es 10.820 , 12.750 , 15.380, 16.500

la funzione mi dovrebbe solo togliere solo l'ultimo decimale che è quasi sempre 0

ora se io ho un totale di 7.500 mi riporta 8.00 e se ho un totale di 7.400 mi riporta 7.00

pensi che si possa risolvere?

Grazie per la risposta.

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 18:47
da xnetus
Cosa hai utilizzato round o number_format?

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 18:52
da Orsi
Li ho provati tutti e 2 e mi danno lo stesso risultato

Re: Inserire una funzione nel modulo pay pal

Inviato: 26/06/2009, 23:28
da xnetus
Prima di $process_button_string, inserisci:

Codice: Seleziona tutto

$amount_price = ($order->info['total'] - $order->info['shipping_cost']) * $currencies->get_value($my_currency);
Sostituisci:

Codice: Seleziona tutto

tep_draw_hidden_field('amount', number_format(($order->info['total'] - $order->info['shipping_cost']) * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) .
con:

Codice: Seleziona tutto

tep_draw_hidden_field('amount', substr($amount_price, strpos($amount_price, "."), 3) .