ciao è molto probabile che non perfezioni il pagamento se lo stato è unverified

per gli account di test su developer.paypal io ti consiglio di non utilizzare quelli preconfigurati (che hanno settaggi per l'estero, valuta, ricezione pagamenti) ma di crearteli manualmente.

se il tuo account di prova risulta non verificato vai su test accounts, lo selezioni e ci entri: fatto il login puoi cambiare tutti i settaggi come un normale account, e svolgi fittiziamente le operazioni che normalmente avresti fatto per verificare l'account, quindi devi cliccare su status unverified e fare quello che ti dice

per queste operazioni puoi esserti utile anche la funzione test email senmpre su sandbox.paypal.com per cliccare su eventuali messaggi di verifica, soprattutto se gli account email degli utenti di prova sono fittizi

comunque, se non dipendesse da unverified, per quanto riguarda lo script, hai provato a non utilizzare curl??



Codice PHP:
<?php
$req 
'cmd=_notify-validate';
foreach (
$_POST as $key => $value) {
    
$value urlencode(stripslashes($value));
    
$req .= "&$key=$value";
}

$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";

$sandbox = isset($_POST['test_ipn']) ? true false;

if (
$sandbox) {
    
$fp fsockopen ('ssl://www.sandbox.paypal.com'443$errno$errstr30);
} else {
    
$fp fsockopen ('ssl://www.paypal.com'443$errno$errstr30);
}


// recupero variabili da paypal
// - per inviare messaggio mail
// - per aggiornare database
$item_name            $_POST['item_name'];
$payment_amount        $_POST['mc_gross'];
$txn_id             $_POST['txn_id'];
$receiver_email        $_POST['receiver_email'];
$payer_email         $_POST['payer_email'];
$custom             $_POST['custom'];
$payment_status        $_POST['payment_status'];


if (!
$fp) {
    
// HTTP ERROR

else {
    
fputs ($fp$header $req);
    while (!
feof($fp)) {
        
$res fgets ($fp1024);
        
        if (
strcmp ($res"VERIFIED") == 0) {
            
            if ((
$payment_status == "Completed")) {
            
            
// potresti controllare anche
            // $txn_id !=0
            // $receiver_email = tuo_account_paypal
            
            // mando email
            // aggiorno database
            // etc

            
}
        } 

    }
    
    
fclose($fp);
}
?>