Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti
Il Lenovo LOQ 15i Gen 10 (15IRX10) offre prestazioni convincenti grazie al Core i7-13650HX e alla RTX 5060 Laptop a 100W, mantenendo un prezzo competitivo tra 1100 e 1300 euro. Costruzione solida, buon display e ampia espandibilità lo rendono una scelta equilibrata per chi cerca un notebook gaming accessibile ma moderno.
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Abbiamo giocato a lungo a Battlefield 6, abbiamo provato tutte le modalità multiplayer, Redsec, e le numerose personalizzazioni. In sintesi, ci siamo concentrati su ogni aspetto del titolo per comprendere al meglio uno degli FPS più ambiziosi della storia dei videogiochi e, dopo quasi due mesi, abbiamo tirato le somme. In questo articolo, condividiamo con voi tutto ciò che è Battlefield 6, un gioco che, a nostro avviso, rappresenta esattamente ciò che questo genere attendeva da tempo
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-12-2008, 14:01   #1
Ginos
Member
 
L'Avatar di Ginos
 
Iscritto dal: Jun 2006
Messaggi: 188
[PHP] Form per PAYPAL

Save a tutti, sto sviluppando un sistema di iscrizione online. Dopo la registrazione reindirizzo l'utente in una pagina con un form dal quale estraggo i dati utili che verranno salvati sia nel database che in sessione(nome, cognome, tip.lavoro, etc..). Ovviamete il form avrà come action l'indirizzo per i pagamenti di paypal:

<form action="https://secure.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="[email protected]">
<input type="hidden" name="txn_id" value="variabile di sessione">
<input type="hidden" name="item_name" value="variabile di sessione">
<input type="hidden" name="amount" value="variabile di sessione">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="return" value="https://mia_pagina_verifica_completato_process.php">
<input type="hidden" name="cancel_return" value="https://mia_pagina_verifica_annullato_process.php">
<input type="submit" value="Paga subito">
</form>
Vorrei sapere se con gli input "return" e "cancel_return" posso passare una variabile del tipo:
"https://mia_pagina_verifica_completato_process.php?pagamentoeffettuato=ok" oppure "https://mia_pagina_verifica_completato_process.php?pagamentoeffettuato=no", in modo da aggiornare automaticamente una voce nel DB corrispondente a l'utente che ha effettuato il pagamento.
Altra e ultima cosa
Lo script che ci fornisce paypal per utilizzare appunto le "ipn" (sotto->):

// leggi il post del sistema PayPal e aggiungi cmd
$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}

// reinvia al sistema PayPal per la convalida
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

// assegna variabili inviate a variabili locali
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];

if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// controlla che payment_status sia Completed
// controlla che txn_id non sia stato già elaborato
// controlla che receiver_email sia il tuo indirizzo email PayPal principale
// controlla che payment_amount/payment_currency siano corretti
// elabora pagamento
}
else if (strcmp ($res, "INVALID") == 0) {
// registra indagine manuale
}
}
fclose ($fp);
}
?>

va inserito nella pagina successiva al form?

Grazie mille!
aspetto vostri aiuti!
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2008, 17:08   #2
Ginos
Member
 
L'Avatar di Ginos
 
Iscritto dal: Jun 2006
Messaggi: 188
allora...da quello che ho letto in rete ho capito che il codice che ci viene fornito da paypal deve essere inserito nella pagina di redirect che configuriamo nel pannello del nostro account. I valori di risposta che riceviamo dal sistema paypal sono: Completed, Failed, Pending. Su questi valori devo formulare le condizioni if del mio file in modo da procedere nell'aggiornamento del DB?
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 01-01-2009, 16:35   #3
Ginos
Member
 
L'Avatar di Ginos
 
Iscritto dal: Jun 2006
Messaggi: 188
up
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2009, 12:04   #4
CozzaAmara
Senior Member
 
L'Avatar di CozzaAmara
 
Iscritto dal: Nov 2008
Messaggi: 411
Se non sbaglio è già il Server di PayPal che ti "ritorna" (all'indirizzo specificato) una serie di variabili (in POST o GET) da cui poter ricavare l'esito della transazione e i suoi dettagli.

Spulcia bene tra la documentazione delle API.
CozzaAmara è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 01:23   #5
Ginos
Member
 
L'Avatar di Ginos
 
Iscritto dal: Jun 2006
Messaggi: 188
grazie per il vostro interesse!
Fortunatamente studiando il manuale per l'integrazione di paypal con il mio script (IPN) sono riuscito a capire un pò di cose. Ho modificato il loro codice in modo da poter testare il sandbox e le ipn e verificare se realmente riesco ad aggiornare il mio database...ma sto avendo problemi con la seguente riga:
$fp = fsockopen ('https://www.paypal.com', 80, $errno, $errstr, 30);
Non riesce a mettersi in ascolto con l'url paypal.com! In locale sembra che ci riesca e non mi da nessun messaggio di errore (solo http e https-porta 80, con ssl mi segnala un errore di connessione), mentre in locale:
Warning: fsockopen() [function.fsockopen]: unable to connect to http://www.paypal.com:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?)
Bisogna modificare il php.ini del server? (cosa possibile perkè è il server di un mio amico) E' la prima cosa che ho pensato dato che in locale non mi segnala nessun errore.

Vi ringrazio in anticipo!
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 01:32   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
fsockopen per funzionare deve essere abilitata da php.ini:

allow_url_fopen = On

Nella maggior parte dei servizi di hosting questa opzione è disattivata e non è attivabile per questioni di sicurezza e di traffico.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 10:01   #7
Ginos
Member
 
L'Avatar di Ginos
 
Iscritto dal: Jun 2006
Messaggi: 188
grazie mille cionci...faccio due test e ti farò sapere.
Per quanto riguarda invece lo script che ti fornisce paypal che è configurato per una connessione in ssl? Il discorso è diverso?
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 10:24   #8
Ginos
Member
 
L'Avatar di Ginos
 
Iscritto dal: Jun 2006
Messaggi: 188
allora...questa la configurazione del php.ini del server in questione:

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On

; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
allow_url_include = Off

allow_url_fopen già era impostato su On.

Il php installato è il 5.2.5
Bisogna impostare anche allow_url_include su ON?
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 10:34   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Mmmhhh...controlla se php è in safe mode: http://it.php.net/manual/it/features.safe-mode.php
Controlla che sia attiva l'estensione php_sockets (sinceramente non so se c'è sempre, sono rimasto un po' indietro)
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 11:12   #10
Ginos
Member
 
L'Avatar di Ginos
 
Iscritto dal: Jun 2006
Messaggi: 188
php_socket.dll è presente nel php.ini...questa la riga:
;extension=php_sockets.dll (ho un dubbio sul ; prima dell'estensione...credo sia commentato)

questo invece il safe_mode:
;
; Safe Mode
;
safe_mode = Off

safe_mode_gid = Off

safe_mode_include_dir =

safe_mode_exec_dir =

safe_mode_allowed_env_vars = PHP_

safe_mode_protected_env_vars = LD_LIBRARY_PATH

;open_basedir =

disable_functions =

disable_classes =

Credo sia disattivato

p.s. una volta apportate le modifiche devo riavviare iis? Probabilmente il php gira sul software di MS invece che su apache
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 11:18   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
;extension=php_sockets.dll

Togli il punto e virgola, era commentata la linea.
Ci sta che giri su IIS, comunque sì, riavvia il servizio.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 12:05   #12
Ginos
Member
 
L'Avatar di Ginos
 
Iscritto dal: Jun 2006
Messaggi: 188
commento rimosso da ;extension=php_sockets.dll (la dll è presente nella cartella ext di php) Riavviato iis...nulla di nuovo.

Ho provato a impostare anche allow_url_include = Off su On riavviato nuovamente iis e nulla ancora

Non capisco dove possa essere il problema!
safe_mode = Off
allow_url_fopen = On
allow_url_include = On
extension=php_sockets.dll (decommentata)
Riavviato iis ma mi compare sempre il messaggio di errore:
Warning: fsockopen() [function.fsockopen]: unable to connect to http://www.paypal.com:80

Per sicurezza ho creato un file con echo phpinfo(); in modo da verificare l'esatta directory nella quale risiede il file di configurazione... (come da default in C:\windows)
Mi consigli di attivare anche l'estensione: ;extension=php_openssl.dll in modo da tentare di far girare lo script originale con fsockopen impostato in questo modo: $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

grazie e scusa se ti sto disturbando ma è un problema che dovrei risolvere entro oggi.

Ultima modifica di Ginos : 08-01-2009 alle 12:11.
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 12:28   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Sei sicuro vero che non ci sia Apache installato ? La pagina php è sulla porta 80 del server http ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 12:53   #14
Ginos
Member
 
L'Avatar di Ginos
 
Iscritto dal: Jun 2006
Messaggi: 188
Forse hai ragione tu nella cartella di php5 ho trovato php5apache2.dll, php5apache2_2.dll, php5apache2_2_filter.dll, php5apache2_filter.dll ma non ho trovato un file apache.exe.
In + ho trovato anche la directory extras\openssl\ (può servire per un eventuale connessione in ssl?)
Non ho controllato accuratamente perkè di solito utilizza iis per questo genere di cose
Potresti dirmi come posso riavviare apache? da riga di comando?
E' un bel pò che non lo riavvio manualmente dato che utilizzo software che installato il tutto con un click.

grazie mille
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 13:03   #15
Ginos
Member
 
L'Avatar di Ginos
 
Iscritto dal: Jun 2006
Messaggi: 188
dietro front...ho contattato il mio amico (che non riuscivo a contattare da un bel pezzo) e mi ha detto che php gira sotto iis in più mi ha detto che la porta che https utilizza è la 443.
Ora non so...nelle specifiche paypal mi veniva segnalata la porta 80 per questo tipo di connessione.
Cmq per concludere bisogna configurarala direttamente su iis

Che ne pensi cionci?
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 13:26   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non ti funziona così:
http://www.paypal.com:80
e non ti funziona così:
ssl://www.paypal.com:443
Non c'entra la configurazione su IIS di SSL. Non ti serve che paypal si connetta tramite SSL al tuo server. Qui il problema è: o php non percepisce le variazioni nella configurazione o non hai riavviato il servizio giusto o la fsockopen non riesce a raggiungere l'host di paypal.

Apache è un servizio come IIS. Lo devi trovare fra i servizi.

Se puoi, riavvia la macchina.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 18:10   #17
Ginos
Member
 
L'Avatar di Ginos
 
Iscritto dal: Jun 2006
Messaggi: 188
...dopo aver sbattuto la testa tutto il pomeriggio sono riuscito a farlo funzionare con questa configurazione però:
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);

Ho sostituto la prima impostazione della funzione fsockopen:
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

Avevo preso e adattato il codice fornito da paypal per le mie esigenze ma non avevo notato che l'indirizzo da puntare era www.sandbox.paypal.com
Fatto vari test e le righe del database mi vengono aggiornate senza problemi.
Ho provato di volta in volta, per scrupolo, ad anteporre http://(su porta 80), https://(su porta 443) e ssl://(su porta 443) alla nuova impostazione e come per magia mi compare il famoso errore warning: etc..etc... senza nulla invece non da problemi!
Ora mi domando...e quando dovrò pubblicare la versione definitiva e far puntare la funzione fsockopen a www.paypal.com?
IIS l'ho riavviato correttamente e fortunatamente la funzione punta correttamente all'url.
Credo quindi sia solo un problema di configurazione del server...
Grazie mille cionci per la tua disponibilità!
Appena interfaccerò definitivamente il mio sistema a paypal ti farò sapere come è andata...speriamo bene altrimenti avrò bisogno di un'altra mano

p.s. cmq se hai altri consigli da darmi resto in ascolto sulla porta 80 (per tutti )
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 18:51   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Azz, non mi ricordavo bene come funzionava fsockopen.
Comunque metti www.paypal.com e porta 80 o 443 a seconda che tu voglia usare SSL o la connessione normale.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il n...
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
La NASA prova i droni marziani nella Dea...
IBM acquisisce Confluent, leader nella g...
La Commissione Europea indaga AWS e Azur...
Sonda spaziale ESA JUICE: rilasciata una...
PS5 PRO a 698€? L'offerta che nessuno si...
L'equipaggio di Shenzhou-21 ha completat...
Dal milione di download alla rimozione f...
Legno, pelle naturale e socket AM5: la G...
Attenti a X-GPU: la piattaforma sospetta...
La Lotus Eletre Plug-in esiste davvero, ...
Garanzia estesa su Pixel 9 Pro e 9 Pro X...
Addio intelligenza artificiale su Window...
FRAME 4000D LCD RS ARGB, il nuovo case d...
Netflix: AV1 ora gestisce il 30% dello s...
Tesla Optimus inciampa in pubblico e div...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v