Pagina 1 di 3

PayPal IPN v2.3.4

Inviato: 05/06/2008, 11:36
da michela
ciao,
ho installato questo modulo: PayPal IPN v2.3.4
lo sto testando con sandbox, procedo con il pagamento, ma mi restituisce sempre questa frase:

"Questa fattura commerciale è già stata pagata. Per maggiori informazioni, contatta il commerciante."

E il pulsante per tornare al sito, ovviamente senza completare l'ordine.

Vi è già successo?

grazie,
Michela

ciao michela !

Inviato: 05/06/2008, 23:26
da vitforlinux
ciao michela !
sei la stessa che ha collaborato con oswai ? io sono' l'altro' di oswai..

quello che usi è oswai o altro ? su oswai c'è un problema con pay pal sembra ci sia una soluzione di 'lavoriamopervoi' nel topic oscommerce validato ma non posso testarla ...

saluti Vit

Inviato: 06/06/2008, 8:21
da michela
ciao,
"collaboro" è un parolone, ho solo trovato e segnalato a Maurizio qualche bug.
Guardo subito nel topic che mi hai segnalato, grazie mille.
Michela

Inviato: 06/06/2008, 8:59
da michela
non sono riuscita a trovare nulla...

Probabilmente sbaglio in qualche passaggio, ma credo che riguardi più paypal che oscom.

Allora:
la contribution è questa: http://www.oscommerce.com/community/contributions,2679

l'ho attivata in testing, e mi sono fatta un account di test in paypal (e attivare conto e carta è già incasinato...)

quando confermo l'ordine, mi manda alla pagina di sandbox e, se è la prima volta che entro, appare il messaggio:
To access the PayPal Sandbox, please log in to PayPal Developer Central.
ok, effettuo il login, scelgo l'account di test, che oltretutto deve avere il paese di provenienza uguale a quello di consegna dell'ordine (e questo mi sembra già assurdo, ma che razza di limitazione è? o la richiede solo in test?).

a questo punto inserisco user e psw, e vengo indirizzata alla pagina di riepilogo dell'ordine di paypal, dove confermo il pagamento.

a questo punto appare la scritta
Questa fattura commerciale è già stata pagata. Per maggiori informazioni, contatta il commerciante.
e il pulsante "torna al commerciante", che mi rispedisce al checkout_payment.php

è evidente che sbaglio qualcosa, forse nella configurazione dell'account, ma non capisco cosa...

qualche idea?

grazie,
Michela

Inviato: 06/06/2008, 19:45
da vitforlinux
questo il payment.php modificato da lavoriamopervoi / Antonello lui dice che funziona, io non l'ho potuto provare, per cortesia prova e commenta, sarebbe una soluzione. pag48 parola Ho risolto!!! (successive spiegazioni)

Codice: Seleziona tutto

<?php

/*

  $Id: payment.php,v 1.37 2003/06/09 22:26:32 hpdl Exp $



  osCommerce, Open Source E-Commerce Solutions

  http://www.oscommerce.com



  Copyright (c) 2003 osCommerce



  Released under the GNU General Public License

*/



  class payment {

    var $modules, $selected_module;



// class constructor

    function payment($module = '') {

      global $payment, $language, $PHP_SELF;



      if (defined('MODULE_PAYMENT_INSTALLED') && tep_not_null(MODULE_PAYMENT_INSTALLED)) {

        $this->modules = explode(';', MODULE_PAYMENT_INSTALLED);



        $include_modules = array();



        if ( (tep_not_null($module)) && (in_array($module . '.' . substr($PHP_SELF, (strrpos($PHP_SELF, '.')+1)), $this->modules)) ) {

          $this->selected_module = $module;



          $include_modules[] = array('class' => $module, 'file' => $module . '.php');

        } else {

          reset($this->modules);

          while (list(, $value) = each($this->modules)) {

            $class = substr($value, 0, strrpos($value, '.'));

            $include_modules[] = array('class' => $class, 'file' => $value);

          }

        }



        for ($i=0, $n=sizeof($include_modules); $i<$n; $i++) {

          include(DIR_WS_LANGUAGES . $language . '/modules/payment/' . $include_modules[$i]['file']);

          include(DIR_WS_MODULES . 'payment/' . $include_modules[$i]['file']);



          $GLOBALS[$include_modules[$i]['class']] = new $include_modules[$i]['class'];

        }



// if there is only one payment method, select it as default because in

// checkout_confirmation.php the $payment variable is being assigned the

// $HTTP_POST_VARS['payment'] value which will be empty (no radio button selection possible)

        if ( (tep_count_payment_modules() == 1) && (!isset($GLOBALS[$payment]) || (isset($GLOBALS[$payment]) && !is_object($GLOBALS[$payment]))) ) {

          $payment = $include_modules[0]['class'];

        }



        if ( (tep_not_null($module)) && (in_array($module, $this->modules)) && (isset($GLOBALS[$module]->form_action_url)) ) {

          $this->form_action_url = $GLOBALS[$module]->form_action_url;

        }

      }

    }



// class methods

/* The following method is needed in the checkout_confirmation.php page

   due to a chicken and egg problem with the payment class and order class.

   The payment modules needs the order destination data for the dynamic status

   feature, and the order class needs the payment module title.

   The following method is a work-around to implementing the method in all

   payment modules available which would break the modules in the contributions

   section. This should be looked into again post 2.2.

*/   

    function update_status() {

      if (is_array($this->modules)) {

        if (is_object($GLOBALS[$this->selected_module])) {

          if (function_exists('method_exists')) {

            if (method_exists($GLOBALS[$this->selected_module], 'update_status')) {

              $GLOBALS[$this->selected_module]->update_status();

            }

          } else { // PHP3 compatibility

            @call_user_method('update_status', $GLOBALS[$this->selected_module]);

          }

        }

      }

    }



// #################### Begin Added CGV JONYO ######################

//    function javascript_validation() {

  function javascript_validation($coversAll) {

	//added the $coversAll to be able to pass whether or not the voucher will cover the whole

	//price or not.  If it does, then let checkout proceed when just it is passed.

      $js = '';

      if (is_array($this->modules)) {

 if ($coversAll) {

   $addThis='if (document.checkout_payment.cot_gv.checked) {

      payment_value=cot_gv;  alert (\'hey yo\');

   } else ';

   } else {

    $addThis='';

   }

        $js = '<script language="javascript"><!-- ' . "\n" .

              'function check_form() {' . "\n" .

              '  var error = 0;' . "\n" .

              '  var error_message = "' . JS_ERROR . '";' . "\n" .

              '  var payment_value = null;' . "\n" .$addThis . //added by jonyo, yo

              '  if (document.checkout_payment.payment.length) {' . "\n" .

              '    for (var i=0; i<document.checkout_payment.payment.length; i++) {' . "\n" .

              '      if (document.checkout_payment.payment[i].checked) {' . "\n" .

              '        payment_value = document.checkout_payment.payment[i].value;' . "\n" .

              '      }' . "\n" .

              '    }' . "\n" .

              '  } else if (document.checkout_payment.payment.checked) {' . "\n" .

              '    payment_value = document.checkout_payment.payment.value;' . "\n" .

              '  } else if (document.checkout_payment.payment.value) {' . "\n" .

              '    payment_value = document.checkout_payment.payment.value;' . "\n" .

              '  }' . "\n\n";



        reset($this->modules);

        while (list(, $value) = each($this->modules)) {

          $class = substr($value, 0, strrpos($value, '.'));

          if ($GLOBALS[$class]->enabled) {

            $js .= $GLOBALS[$class]->javascript_validation();

          }

        }



// ############ Added CCGV Contribution ##########

//        $js .= "\n" . '  if (payment_value == null) {' . "\n" .

        $js .= "\n" . '  if (payment_value == null && submitter != 1) {' . "\n" . // CCGV Contribution

// ############ End Added CCGV Contribution ##########

               '    error_message = error_message + "' . JS_ERROR_NO_PAYMENT_MODULE_SELECTED . '";' . "\n" .

               '    error = 1;' . "\n" .

               '  }' . "\n\n" .

// ############ Added CCGV Contribution ##########

//  ICW CREDIT CLASS Gift Voucher System Line below amended

//               '  if (error == 1) {' . "\n" .

               '  if (error == 1 && submitter != 1) {' . "\n" .

// ############ End Added CCGV Contribution ##########

               '    alert(error_message);' . "\n" .

               '    return false;' . "\n" .

               '  } else {' . "\n" .

               '    return true;' . "\n" .

               '  }' . "\n" .

               '}' . "\n" .

               '//--></script>' . "\n";

      }



      return $js;

    }

// #################### End Added CGV JONYO ######################

	

	function checkout_initialization_method() {

      $initialize_array = array();



      if (is_array($this->modules)) {

        reset($this->modules);

        while (list(, $value) = each($this->modules)) {

          $class = substr($value, 0, strrpos($value, '.'));

          if ($GLOBALS[$class]->enabled && method_exists($GLOBALS[$class], 'checkout_initialization_method')) {

            $initialize_array[] = $GLOBALS[$class]->checkout_initialization_method();

          }

        }

      }



      return $initialize_array;

    }



    function selection() {

      $selection_array = array();



      if (is_array($this->modules)) {

        reset($this->modules);

        while (list(, $value) = each($this->modules)) {

          $class = substr($value, 0, strrpos($value, '.'));

          if ($GLOBALS[$class]->enabled) {

            $selection = $GLOBALS[$class]->selection();

            if (is_array($selection)) $selection_array[] = $selection;

          }

        }

      }



      return $selection_array;

    }

// ############ Added CCGV Contribution ##########

 // check credit covers was setup to test whether credit covers is set in other parts of the code

function check_credit_covers() {

	global $credit_covers;



	return $credit_covers;

}

// ############ End Added CCGV Contribution ##########

    function pre_confirmation_check() {

// ############ Added CCGV Contribution ##########

      global $credit_covers, $payment_modules; 

// ############ End Added CCGV Contribution ##########

      if (is_array($this->modules)) {

        if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {

// ############ Added CCGV Contribution ##########

          if ($credit_covers) { //  ICW CREDIT CLASS Gift Voucher System

            $GLOBALS[$this->selected_module]->enabled = false; //ICW CREDIT CLASS Gift Voucher System

            $GLOBALS[$this->selected_module] = NULL; //ICW CREDIT CLASS Gift Voucher System

            $payment_modules = ''; //ICW CREDIT CLASS Gift Voucher System

          } else { //ICW CREDIT CLASS Gift Voucher System

// ############ End Added CCGV Contribution ##########

          $GLOBALS[$this->selected_module]->pre_confirmation_check();

// ############ Added CCGV Contribution ##########

          }

// ############ End Added CCGV Contribution ##########

        }

      }

    }



    function confirmation() {

      if (is_array($this->modules)) {

        if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {

          return $GLOBALS[$this->selected_module]->confirmation();

        }

      }

    }



    function process_button() {

      if (is_array($this->modules)) {

        if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {

          return $GLOBALS[$this->selected_module]->process_button();

        }

      }

    }



    function before_process() {

      if (is_array($this->modules)) {

        if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {

          return $GLOBALS[$this->selected_module]->before_process();

        }

      }

    }



    function after_process() {

      if (is_array($this->modules)) {

        if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {

          return $GLOBALS[$this->selected_module]->after_process();

        }

      }

    }



    function get_error() {

      if (is_array($this->modules)) {

        if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {

          return $GLOBALS[$this->selected_module]->get_error();

        }

      }

    }

  }

?>
php6 mysql6 che fare ?

ciao Vit

Inviato: 06/06/2008, 21:13
da lavoriamopervoi
hai provato passando a "live"?

Inviato: 09/06/2008, 8:37
da michela
lavoriamopervoi ha scritto:hai provato passando a "live"?
se passo a live, non mi fa usare il mio account di test...

Michela

Inviato: 09/06/2008, 9:02
da michela
l'unica differenza fra il payment.php che avevo io e quello che hai riportato è nella funzione checkout_initialization_method()

Codice: Seleziona tutto

function checkout_initialization_method() {

      $initialize_array = array();



      if (is_array($this->modules)) {

        reset($this->modules);

        while (list(, $value) = each($this->modules)) {

          $class = substr($value, 0, strrpos($value, '.'));

          if ($GLOBALS[$class]->enabled && method_exists($GLOBALS[$class], 'checkout_initialization_method')) {

            $initialize_array[] = $GLOBALS[$class]->checkout_initialization_method();

          }

        }

      }



      return $initialize_array;

    }
che oltretutto non viene mai richiamata.

Ho già utilizzato molte altre forme di pagamento online, ma questa mi sembra veramente "strana"...
Sarà che sono abituata a farmi i moduli da me, e non ho capito molto in quello che ho scaricato ed installato.

Il cliente mi ha dato solo il suo account di paypal, nessun altro dato o documentazione...
Ma non esistono documentazioni, ambienti di test, con numeri di carte di credito di test da utilizzare, come in qualsiasi altro gateway bancario?

Ma soprattutto cosa significa
Questa fattura commerciale è già stata pagata. Per maggiori informazioni, contatta il commerciante.
????

è forse ripetuto il numero d'ordine?
dove?


Michela

Inviato: 11/06/2008, 9:36
da michela
allora:
- ho impostato in il mio conto-> profilo -> Preferenze per i pagamenti su sito web :
Ritorno automatico: attivato
URL di rinvio: http://[miosito]/checkout_process.php

devo impostare anche : Preferenze per Notifica immediata del pagamento ?

se sì, cosa devo mettere?
http://[miosito]/checkout_process.php
oppure
http://[miosito]/ext/modules/payment/paypal_ipn/ipn.php?language=italian ?

adesso, se faccio un ordine, con un account vero, in testing, l'ordine va a buon fine, mi mette come stato in Sospeso (perché non mette saldato?) e svuota il carrello.
Però non invia la mail di notifica ordine di oscommerce, mentre quella di pagamento di paypal arriva.

suggerimenti?
grazie
Michela

un problema noto di oswai

Inviato: 11/06/2008, 21:11
da vitforlinux
un problema noto di oswai è la tendenza a perdersi(non passandole) le variabili e a 'sloggare' perdendo la sessione.
prova abilitando i cookies dovrebbe andare in maniera diversa (ci sarà qualche os-derivato con molti moduli che funziona? io ne ho un magazzino ma non ho il sever e l'account paypal-- quanto costa? --).

oggi è mercoledì vit.net potrebbe esserci tra una settimana.

il problema passaggio variabili è causato da & invece di & (per vaildità) ma se usi url friendly o seo potrebbe essere diverso.

c'è poi qualcosa che impedirebbe di usare un payment.php preso di sana pianta da un vecchio oswai dove il tuo modulo va?

il mio debug è fatto cercando una versione che funziona fino all'ultima da paragonare con la prima che non funziona (ma senza server e senza account paypal ... questa volta come faccio?).

alcuni problemi si manifestano fra la 600 e la 613 potrebbe essere del gruppo...

la faccenda di paypal con la nazionalità della consegna del pacco (penso sia) per le tasse diverse a seconda del paese se mi dichiaro francese e spedisco in italia ho risparmiato 1% di iva (penso) ma cosi poi come ssi fa a fare le gabole(trucchi) ?

un giorno faro dei pensieri in ordine e teli mando tutti assieme (scusa).

ciao vit :-(((

Inviato: 11/06/2008, 21:52
da hsg26
michela ha scritto:allora:
- ho impostato in il mio conto-> profilo -> Preferenze per i pagamenti su sito web :
Ritorno automatico: attivato
URL di rinvio: http://[miosito]/checkout_process.php

devo impostare anche : Preferenze per Notifica immediata del pagamento ?

se sì, cosa devo mettere?
http://[miosito]/checkout_process.php
oppure
http://[miosito]/ext/modules/payment/paypal_ipn/ipn.php?language=italian ?

adesso, se faccio un ordine, con un account vero, in testing, l'ordine va a buon fine, mi mette come stato in Sospeso (perché non mette saldato?) e svuota il carrello.
Però non invia la mail di notifica ordine di oscommerce, mentre quella di pagamento di paypal arriva.

suggerimenti?
grazie
Michela
l'url di ritorno è checkout success. se no non ti completerà mai l'ordine.

Inviato: 18/06/2008, 9:55
da michela
ok, ho settato checkout_success.php
però non arrivano le email di conferma ordine, anche se il carrello è svuotato e l'ordine è correttamente registrato...

altre correzioni?

Michela

Inviato: 18/06/2008, 10:04
da michela
...Oltretutto è checkout_process.php che fa tutto il lavoro (registrazione ordine, svuota il carrello, invia le email), non capisco perché in questo caso bisogna mettere il checkout_success.php come pagina di ritorno...
Michela

Inviato: 18/06/2008, 11:23
da hsg26
michela ha scritto:...Oltretutto è checkout_process.php che fa tutto il lavoro (registrazione ordine, svuota il carrello, invia le email), non capisco perché in questo caso bisogna mettere il checkout_success.php come pagina di ritorno...
Michela
checkout_process agisce già quando schiacci su conferma ordine e vieni dirottata a paypal. Se il cliente arriva su checkout_success, osc capisce che il pagamento è andato a buon fine.

Per l'invio delle mail hai impostato il tuo indirizzo nel pannello admin?

Inviato: 18/06/2008, 11:44
da michela
Sì, le email arrivano correttamente con tutti gli altri tipi di pagamento attivati su quel sito (bonifico, contrassegno, vaglia, payrider), tranne che con paypal.

Ma effettivamente non possono partire le email visto che partono in checkout_process.php ...

Ma a voi funziona così bene questo paypal??
A me ha dato solo problemi, molti più degli altri gateway bancari...


Michela