Configurazione PayPal Express Checkout con API credentials

Postate qui discussioni di carattere generale riguardo a problemi di installazione e configurazione di osCommerce

Moderatore: mod Generali

Rispondi
bonight
membro Junior
membro Junior
Messaggi: 14
Iscritto il: 30/01/2012, 12:21

Configurazione PayPal Express Checkout con API credentials

Messaggio da bonight »

Salve a tutti,
sono nuovo del forum, eppure devo già ringraziarvi, poichè mi avete già risolto alcuni problemi con OScommerce, con delle discussioni trovate con l'ausilio del "cerca".

Adesso però ho un problema che non sono riuscito a trovare, pur inserendo diverse chiavi di ricerca.

Quando vado a configurare PayPal Express Checkout inserendo le API fornite da paypal, mi compare la schermata che dice:
"Warning: exec() has been disabled for security reasons in ...\includes\modules\payment\paypal_express.php on line 300"

La riga 300 è la seguente:

exec(escapeshellarg(MODULE_PAYMENT_PAYPAL_EXPRESS_CURL) . ' -d ' . escapeshellarg($parameters) . ' "' . $server['scheme'] . '://' . $server['host'] . $server['path'] . (isset($server['query']) ? '?' . $server['query'] : '') . '" -P ' . $server['port'] . ' -k', $result);

poi mi da anche quest'altro avviso:

"Warning: implode() [function.implode]: Invalid arguments passed in ...\includes\modules\payment\paypal_express.php on line 301"

La riga 301 è la seguente:

$result = implode("\n", $result);

Sapreste dirmi se può essere un errore di codice, oppure potrebbe dipendere dall'Hosting?

Il DB e l'Hosting sono Aruba, in particolare
DB: MySQL 5.0.92-enterprise-gpl-log
Server OS: WINNT
la versione di Oscommerce è "Merchant v2.3.1"

Grazie a tutti,
Bonight
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da maury2ma »

vuol dire che aruba ha DISABILITATO la funziona sopra inciminata.
a meno che tu non usi un Server Dedicato non credo ti abilitino la suddetta.
pertanto ti conviene cambiare modulo, io mi sono trovato bene con paypal IPN, l'express non l'ho mai usato.
tentare non costa nulla.
oppure chiedi ad aruba come fare per avere abilitato l' "exec()"
bonight
membro Junior
membro Junior
Messaggi: 14
Iscritto il: 30/01/2012, 12:21

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da bonight »

Ciao Maury,
grazie della risposta.

Ho seguito il tuo consiglio e ho chiamato Aruba. Mi hanno detto che per avere l'abilitazione sull'exec() dovrei trasferire il sito da un host. Win ad uno Linux.

Ora, siccome ciò ha un costo (anche se irrisorio), vorrei chiedere se qualcun altro si sia mai imbattuto nello stesso problema, risolvendolo con il passaggio ad Host Linux.

Grazie ancora,
Bonight
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da maury2ma »

trasferisci il prima possibile il sito su hosting linux.
è uno dei requisiti di oscommerce, su linux è piu' sicuro che su win
ovviamente a te non cambia nulla, tanto fai tutto via ftp quindi non ti accorgi del cambiamento.
ma per la gestione dei permessi (chmod 555 0755), del funzionamento generale, delle funzioni che sono native di php/apache2 e non su win... il passaggio a linux è altamente consigliato.
bonight
membro Junior
membro Junior
Messaggi: 14
Iscritto il: 30/01/2012, 12:21

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da bonight »

il problema continua, ma al momento ha avuto una mutazione...mi sembra di parlare di un virus.

Dopo aver trasferito il sito da Host Win a Linus/Apache sempre di Aruba ed aver cambiato i permessi in 555 (cioè solo lettura ed esecuzione per tutti: proprietario, gruppo e pubblici) il sito si vede perfettamente, ma non mi fa accedere all'area admin.

Il messaggio di errore che mi da è il seguente:

Warning: require(D:/Inetpub/webs/patriziocappelliit/catalog/includes/classes/action_recorder.php): failed to open stream: No such file or directory in /web/htdocs/www.patriziocappelli.it/home/catalog/ad ... corder.php on line 13
Warning: require(D:/Inetpub/webs/patriziocappelliit/catalog/includes/classes/action_recorder.php): failed to open stream: No such file or directory in /web/htdocs/www.patriziocappelli.it/home/catalog/ad ... corder.php on line 13
Fatal error: require(): Failed opening required 'D:/Inetpub/webs/patriziocappelliit/catalog/includes/classes/action_recorder.php' (include_path='.:/php5.3/lib/php/') in /web/htdocs/www.patriziocappelli.it/home/catalog/ad ... corder.php on line 13


Ovviamente nel passaggio da Win a Linux non ho modificato alcun file e quando il sito era su Win lavoravo perfettamente nell'area admin.

Vi chiedo la gentilezza di aiutarmi a sciogliere questo nuovo nodo, fermo restando che dopo dovrò installare un modulo di pagamento paypal, se il precedente errore con il paypal express dovesse persistere.
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da maury2ma »

alla riga 13 del file :
catalog/admin/includes/classes/action_recorder.php on line 13
trovi un comando REQUIRE(qualcosa);
controlla, ma probabilmente cerca un file che non esiste.
magari è "smarrito" nel trasferimento, magari non è mai esistito
se metti una chiocciola davanti al "require" cosi': "@require(ecc)"
nascondi l'errore... ovvio non risolvi il problema, lo nascondi solamente
p.s. la cartella /catalog/images deve avere chmod 777 e pure tutte le sotto-cartelle della medesima
la cartella admin/backup/ deve avere 777
la cartella catalog/pub/ 777
la cartella catalog/tmp o temp 777
le altre basta 555
bonight
membro Junior
membro Junior
Messaggi: 14
Iscritto il: 30/01/2012, 12:21

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da bonight »

per prima cosa ho impostato i permessi come mi avevi indicato.

ho modificato, poi, il file
catalog/admin/includes/classes/action_recorder.php on line 13
mettendo @ davanti la parola require, così: "@require(...)"
purtroppo in questo modo mi compare una pagina bianca e null'altro.

Posto quindi di seguito la riga 13 del file incriminato:
"require(DIR_FS_CATALOG . 'includes/classes/action_recorder.php');"

Leggendo meglio il percorso in cui mi viene indicato l'errore, però ho notato un'anomalia. Riscrivo il messaggio di errore ed evidenzio solo l'anomalia:

Warning: require(D:/Inetpub/webs/patriziocappelliit/catalog/includes/classes/action_recorder.php): failed to open stream: No such file or directory in /web/htdocs/www.patriziocappelli.it/[b]home/[/b]catalog/admin/includes/classes/action_recorder.php on line 13
Warning: require(D:/Inetpub/webs/patriziocappelliit/catalog/includes/classes/action_recorder.php): failed to open stream: No such file or directory in /web/htdocs/www.patriziocappelli.it/[b]home/[/b]catalog/admin/includes/classes/action_recorder.php on line 13
Fatal error: require(): Failed opening required 'D:/Inetpub/webs/patriziocappelliit/catalog/includes/classes/action_recorder.php' (include_path='.:/php5.3/lib/php/') in /web/htdocs/www.patriziocappelli.it/[b]home/[/b]catalog/admin/includes/classes/action_recorder.php on line 13

La cartella home/ non esiste e non è mai esistita e soprattutto non capisco come sia comparsa. Ho controllato il file configure.php contenuto in catalog/admin/includes e non c'è nessun riferimento a questo percorso. Per sicurezza lo condivido qui di seguito:
define('HTTP_SERVER', 'http://www.patriziocappelli.it');
define('HTTP_CATALOG_SERVER', 'http://www.patriziocappelli.it');
define('HTTPS_CATALOG_SERVER', 'http://www.patriziocappelli.it');
define('ENABLE_SSL_CATALOG', 'false');
define('DIR_FS_DOCUMENT_ROOT', 'D:/Inetpub/webs/patriziocappelliit/catalog/');
define('DIR_WS_ADMIN', '/catalog/admin/');
define('DIR_FS_ADMIN', 'D:/Inetpub/webs/patriziocappelliit/catalog/admin/');
define('DIR_WS_CATALOG', '/catalog/');
define('DIR_FS_CATALOG', 'D:/Inetpub/webs/patriziocappelliit/catalog/');
define('DIR_WS_IMAGES', 'images/');
define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/');
define('DIR_WS_CATALOG_IMAGES', DIR_WS_CATALOG . 'images/');
define('DIR_WS_INCLUDES', 'includes/');
define('DIR_WS_BOXES', DIR_WS_INCLUDES . 'boxes/');
define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/');
define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/');
define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/');
define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/');
define('DIR_WS_CATALOG_LANGUAGES', DIR_WS_CATALOG . 'includes/languages/');
define('DIR_FS_CATALOG_LANGUAGES', DIR_FS_CATALOG . 'includes/languages/');
define('DIR_FS_CATALOG_IMAGES', DIR_FS_CATALOG . 'images/');
define('DIR_FS_CATALOG_MODULES', DIR_FS_CATALOG . 'includes/modules/');
define('DIR_FS_BACKUP', DIR_FS_ADMIN . 'backups/');
define('DIR_FS_DOWNLOAD', DIR_FS_CATALOG . 'download/');
define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/');


Riporto di seguito anche il file configure.php contenuto in catalog/includes
define('HTTP_SERVER', 'http://www.patriziocappelli.it');
define('HTTPS_SERVER', 'http://www.patriziocappelli.it');
define('ENABLE_SSL', false);
define('HTTP_COOKIE_DOMAIN', '');
define('HTTPS_COOKIE_DOMAIN', '');
define('HTTP_COOKIE_PATH', '/catalog/');
define('HTTPS_COOKIE_PATH', '/catalog/');
define('DIR_WS_HTTP_CATALOG', '/catalog/');
define('DIR_WS_HTTPS_CATALOG', '/catalog/');
define('DIR_WS_IMAGES', 'images/');
define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/');
define('DIR_WS_INCLUDES', 'includes/');
define('DIR_WS_BOXES', DIR_WS_INCLUDES . 'boxes/');
define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/');
define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/');
define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/');
define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/');

define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/');
define('DIR_FS_CATALOG', 'D:/Inetpub/webs/patriziocappelliit/catalog/');
define('DIR_FS_DOWNLOAD', DIR_FS_CATALOG . 'download/');
define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/');


Adesso io mi chiedo: ma come fa a comparire il percorso /web/htdocs/www.patriziocappelli.it/[b]home/[/b]catalog/admin/includes/classes/action_recorder.php ???

E' ovvio che non trovi il file action_recorder.php visto che quel percorso non esiste.

Resto in attesa di aiuto
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da maury2ma »

non è che il file includes/classes/action_recorder.php
è scritto con una maiuscola ?
tipo Action_recorder.php
o action_recorder.PHP
per la HOME potrebbe essere normale oppure potrebbe essere un errore, dipende da come è configurato il server. (per saperlo fai un installazione vergine della versione 2.3.1 e confronta i file configure.php)

comunque puoi modificare il codice in modo da creare un percorso assoluto che escluda le define del configure.

da

Codice: Seleziona tutto

  require(DIR_FS_CATALOG . 'includes/classes/action_recorder.php');
a

Codice: Seleziona tutto

  require('D:/Inetpub/webs/patriziocappelliit/catalog/includes/classes/action_recorder.php');
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da maury2ma »

se poi non trova il file puoi sempre includere il codice del fiel direttamente.
catalog/admin/includes/classes/action_recorder.php
da

Codice: Seleziona tutto

  require(DIR_FS_CATALOG . 'includes/classes/action_recorder.php');
a

Codice: Seleziona tutto

 // require(DIR_FS_CATALOG . 'includes/classes/action_recorder.php');
  class actionRecorder {
    var $_module;
    var $_user_id;
    var $_user_name;

    function actionRecorder($module, $user_id = null, $user_name = null) {
      global $language, $PHP_SELF;

      $module = tep_sanitize_string(str_replace(' ', '', $module));

      if (defined('MODULE_ACTION_RECORDER_INSTALLED') && tep_not_null(MODULE_ACTION_RECORDER_INSTALLED)) {
        if (tep_not_null($module) && in_array($module . '.' . substr($PHP_SELF, (strrpos($PHP_SELF, '.')+1)), explode(';', MODULE_ACTION_RECORDER_INSTALLED))) {
          if (!class_exists($module)) {
            if (file_exists(DIR_WS_MODULES . 'action_recorder/' . $module . '.' . substr($PHP_SELF, (strrpos($PHP_SELF, '.')+1)))) {
              include(DIR_WS_LANGUAGES . $language . '/modules/action_recorder/' . $module . '.' . substr($PHP_SELF, (strrpos($PHP_SELF, '.')+1)));
              include(DIR_WS_MODULES . 'action_recorder/' . $module . '.' . substr($PHP_SELF, (strrpos($PHP_SELF, '.')+1)));
            } else {
              return false;
            }
          }
        } else {
          return false;
        }
      } else {
        return false;
      }

      $this->_module = $module;

      if (!empty($user_id) && is_numeric($user_id)) {
        $this->_user_id = $user_id;
      }

      if (!empty($user_name)) {
        $this->_user_name = $user_name;
      }

      $GLOBALS[$this->_module] = new $module();
      $GLOBALS[$this->_module]->setIdentifier();
    }

    function canPerform() {
      if (tep_not_null($this->_module)) {
        return $GLOBALS[$this->_module]->canPerform($this->_user_id, $this->_user_name);
      }

      return false;
    }

    function getTitle() {
      if (tep_not_null($this->_module)) {
        return $GLOBALS[$this->_module]->title;
      }
    }

    function getIdentifier() {
      if (tep_not_null($this->_module)) {
        return $GLOBALS[$this->_module]->identifier;
      }
    }

    function record($success = true) {
      if (tep_not_null($this->_module)) {
        tep_db_query("insert into " . TABLE_ACTION_RECORDER . " (module, user_id, user_name, identifier, success, date_added) values ('" . tep_db_input($this->_module) . "', '" . (int)$this->_user_id . "', '" . tep_db_input($this->_user_name) . "', '" . tep_db_input($this->getIdentifier()) . "', '" . ($success == true ? 1 : 0) . "', now())");
      }
    }

    function expireEntries() {
      if (tep_not_null($this->_module)) {
        return $GLOBALS[$this->_module]->expireEntries();
      }
    }
  }
bonight
membro Junior
membro Junior
Messaggi: 14
Iscritto il: 30/01/2012, 12:21

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da bonight »

sto impazzendo sul serio...

Ho controllato i file e sono scritti tutti sempre in minuscolo, estensioni incluse. Di solito lo faccio sempre per evitare proprio errori simili, però può capitare di dimenticare il CAPS attivato.

Per quanto riguarda il percorso, ho utilizzato anche quello assoluto e...niente, sempre lo stesso problema.

Non riesco a venirne a capo...
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da maury2ma »

senza vedere il codice è un po' difficile capire cosa non vada

hai provato una seconda intallazione parallela e poi confrontato i configure ?
da win a debian possono cambiare i percorsi assoluti.
riflettendoci non dovresti avere la root "D:"
ma qualcosa del genere:
"/web/htdocs/patriziocappelli.it/home/" (si, con home)

fai una seconda installazione "vergine" in una sotto-cartella.
di DB ne hai 5 usane uno "vergine"
poi confronti i percorsi dei 2 configure.php e apporti le dovute modifiche (ovvio fatti una bella copia sia del sito che del DB, che serve sempre ;) )
secondo me il problema è nel percorsi del configure e se non va l'admin vuol dire che da qualche parte pure il catalogo ti darà problemi.
esempio se usi mooneybook come metodo di pagamento, se hai un sitemap, od altri moduli installati.

facci sapere, potrebbe servire ad altri.
bonight
membro Junior
membro Junior
Messaggi: 14
Iscritto il: 30/01/2012, 12:21

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da bonight »

il problema è stato risolto, grazie ai consigli di maury2ma, con una installazione vergine.

Ovviamente per non rischiare di perdere nulla, avevo duplicato il DB e l'intero sito.

Adesso sembra funzionare bene.

Ora ho una nuova perplessità: riguarda la modalità di pagamento.

Nel template installato c'è già il modulo Paypal express che ho testato. Funziona in questo modo:
l'utente che vuole acquistare aggiunge i prodotti al carrello, anche se non è registrato o momentaneamente non loggato, premendo il tasto Paypal express può pagare, poichè viene riportato direttamente su Paypal.
Dopo aver effettuato il pagamento tramite conto paypal o carta di credito, il sistema registra l'utente.
Ciò per me è perfetto, perchè così l'utente che ha aggiunto al carrello e vuole acquistare non è frenato da un modulo di registrazione al sito, ma può pagare e registrarsi contemporaneamente.

A questo punto però sorge un problema: devo implementare 3 differenti costi di spedizione a seconda della destinazione: Italia, Europa e Altri paesi. Non so però quale sia il modulo delle spese di spedizioni più adatto a gestire ciò e soprattutto come fare a comunicare a Paypal Express il costo della spedizione, se al momento del click lui atterra sulla pagina di paypal facendo un riassunto dei costi, senza che l'utente abbia specificato il luogo di destinazione.

Un ultima cosa (almeno finchè non mi verranno altri dubbi...) : come faccio ad eliminare del tutto il cash on delivery? E' molto importante che il pagamento venga eseguito solo tramite carte di credito o paypal!

In attesa di consigli, vi ringrazio tutti per la collaborazione, in particolar modo maury2ma per la precisione e celerità delle risposte.

P.S. ho provato ad installare altri moduli di pagamento, poichè sul form ho letto che molti consigliano Paypal IPN, ma o non li trovo oppure quelli che installo non funzionano o più precisamente, dopo averli installati e attivati (Enable True) non mi compare alcun tasto.
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da maury2ma »

se non erro per modificare le spede di spedizione dovresti poterlo fare da pannello paypal.
ma potrei dire una castroneria.
in linea di massima potresti dire al modulo di aggiungere delle spese (motivandole come spese di trasporto) in base alla localizzazione del cliente...
ma non saprei da dova farti iniziare ed è "un sacco di codice da fare" (citazione copiata spudoratamente ;) )
bonight
membro Junior
membro Junior
Messaggi: 14
Iscritto il: 30/01/2012, 12:21

Re: Configurazione PayPal Express Checkout con API credentia

Messaggio da bonight »

Grazie maury2ma,
ho risolto la questioni delle spese di spedizione diverse a seconda della destinazione.

Affinchè ciò possa essere utile anche ad altri, la spiego.

Nella sezione Locations/Taxes ho creato in Tax classes due classi: Italy in cui ho inserito solo l'Italia ed Europe in cui ho inserito tutte le altre nazioni europee.

Nella sezione Modules -> Shipping ho installato i seguenti modulo così settati:
Table Rate

Enable Table Method
True

Shipping Table
5:30.00,100:0.00

Table Method
weight

Handling Fee
0

Tax Class
--none--

Shipping Zone
Europe

Sort Order
0

___________________________________________________
Zone Based Rates

Enable Zones Method
True

Tax Class
--none--

Sort Order
0

Zone 1 Countries
IT, ITA

Zone 1 Shipping Table
5:10.00,100:0.0

Zone 1 Handling Fee
0

___________________________________________________
Flat Rate

Enable Flat Shipping
True

Shipping Cost
50.00

Tax Class
--none--

Shipping Zone
--none--

Sort Order
0


Table mode assegna un costo di 30 euro agli utenti delle nazioni europee, Zone rates 10 euro per Italia e Flat rate 50 euro per tutte le altre nazioni.

Fatto ciò, ho disinstallato il modulo di pagamento Paypal express, perchè affinchè funzionino le spese di spedizione è obbligatorio il checkout che paypal express salta. Ho installato Paypal Website Payments Standard e tutto SEMBRA funzionare.

Grazie ancora, spero di essere stato anche un po' d'aiuto
Rispondi