Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Xiaomi Pad 8 Pro adotta il potente Snapdragon 8 Elite all'interno di un corpo con spessore di soli 5,75 mm e pannello LCD a 144Hz flicker-free, per un tablet che può essere utilizzato con accessori dedicati di altissima qualità. Fra le caratteristiche esclusive, soprattutto per chi intende usarlo con la tastiera ufficiale, c'è la modalità Workstation di HyperOS 3, che trasforma Android in un sistema operativo con interfaccia a finestre
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-12-2008, 13: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, 16: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, 15: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, 11: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, 00: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, 00: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, 09: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, 09: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, 09: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, 10: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, 10: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, 11: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 11:11.
Ginos è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 11: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, 11: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, 12: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, 12: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, 17: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, 17: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


Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Ecovacs presenta la gamma 2026: paviment...
Efficienza energetica fino a 2.000 volte...
Lenovo 360: il programma di canale dell'...
Appena 10.000 qubit per rompere la critt...
Analisi dei transistor durante il funzio...
Attacco informatico a Booking.com: espos...
A quattro mesi dal divieto dei social ne...
NVIDIA GeForce RTX 5060 e 5060 Ti: in ar...
Rebellions, Arm e SK Telecom, nuova alle...
Modernizzazione delle app: Red Hat OpenS...
Nel mirino di Google c'è il back ...
PRAGMATA in bundle con GeForce RTX 5000:...
Le novità MOVA per il 2026: robot e impi...
Windows, stop all'attivazione telefonica...
ASUS porta la serie TUF nel formato Mini...
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: 03:44.


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