Fra le cose che si poteva fare poco tempo fa (comunque, non sufficiente), era scoprire se un account Paypal era verificato o meno.
Si usava questo link, inserendo l'email dell'account dell'utente che avrebbe dovuto pagarvi:
https://www.paypal.com/us/verified/[email protected]
Ora questa cosa non si può più fare.
Un altro metodo potrebbe essere questo:
https://www.reddit.com/r/Starcitizen_trades/comments/3xok4s/psa_paypal_recomendations_without_verified_link
E' RICHIESTO che abbiate un account Paypal di tipo Premier o Business per abilitare le API
(se non lo avete e non avete modo di averlo, potete fare a meno di proseguire a leggere)
Ma comunque, andando ad informarmi, ho scoperto quest'API di Paypal.
https://developer.paypal.com/docs/classic/api/adaptive-accounts/GetVerifiedStatus_API_Operation/
Con questa API si possono chiedere informazioni sugli account, e scoprire se:
- L'account è verificato
- Se l'email di cui ha il controllo l'utente è la stessa di paypal
- Verificare subito se il nome e cognome dell'utente corrispondono fra l'account ed eventuali documenti che richiedete
- Se il numero di telefono che vi ha fornito è lo stesso impostato, e verificato, su Paypal.
Indicherò qui le operazioni per poter scoprire queste cose:
1) Scaricate XAMPP: https://www.apachefriends.org/download.html - Estraetelo in C:
2) Andare su https://www.paypal-apps.com e crearsi un app. Disattivate tutte le funzionalità al di fuori di Get Verified Status
Compilate gli spazi obbligatori, solo quelli, con il minimo indispensabile, senza scrivere cavolate.
Chiedendo l'approvazione dell'app vi verrà data automaticamente.
3) Andate su https://www.paypal.com/it/cgi-bin/webscr?cmd=_profile-api-signature e segnatevi i vostri dati personali per accedere alle API.
4) Scrivete questo codice qui sotto (proveniente da qui) dentro un file di testo, e rinominatelo in qualcosa.php (tipo anche ppcheck.php), e salvatelo nella cartella C:\xampp\htdocs (come vi ho detto al primo punto, dovreste avere xampp in c:)
//$url = trim("https://svcs.sandbox.paypal.com/AdaptiveAccounts/GetVerifiedStatus"); //set PayPal Endpoint to sandbox
$url = trim("https://svcs.paypal.com/AdaptiveAccounts/GetVerifiedStatus"); //set PayPal Endpoint to Live
$API_UserName = "xxxxxxxxxxxxxxxxxxxx"; //PayPal Test API Credentials, Replace it with live if in live mode
$API_Password = "xxxxxxxxxxxxxxxxxxxxxxx";
$API_Signature = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$API_AppID = "xxxxxxxxxxxxxxxxxxxxxx"; //Default App ID for Sandbox, replace it with live id if in live mode
$API_RequestFormat = "NV";
$API_ResponseFormat = "NV";
//Create request payload
$bodyparams = array ( "requestEnvelope.errorLanguage" => "en_US",
//scegliere quale dei due
//"emailAddress" =>"[email protected]",
//"accountIdentifier.mobilePhoneNumber" => "123452677", // Numero di telefono
"firstName" =>"Mario",
"lastName" =>"Rossi",
"matchCriteria" => "NAME"
);
// convert payload array into url encoded query string
$body_data = http_build_query($bodyparams, "", chr(38));
try
{
//create request and add headers
$params = array("http" => array(
"method" => "POST",
"content" => $body_data,
"header" => "X-PAYPAL-SECURITY-USERID: " . $API_UserName . "\r\n" .
"X-PAYPAL-SECURITY-SIGNATURE: " . $API_Signature . "\r\n" .
"X-PAYPAL-SECURITY-PASSWORD: " . $API_Password . "\r\n" .
"X-PAYPAL-APPLICATION-ID: " . $API_AppID . "\r\n" .
"X-PAYPAL-REQUEST-DATA-FORMAT: " . $API_RequestFormat . "\r\n" .
"X-PAYPAL-RESPONSE-DATA-FORMAT:" . $API_ResponseFormat . "\r\n"
));
$ctx = stream_context_create($params); //create stream context
$fp = @fopen($url, "r", false, $ctx); //open the stream and send request
$response = stream_get_contents($fp); //get response
//check to see if stream is open
if ($response === false)
{
throw new Exception("php error message = " . "$php_errormsg");
}
fclose($fp); //close the stream
//parse the ap key from the response
$keyArray = explode("&", $response);
foreach ($keyArray as $rVal)
{
list($qKey, $qVal) = explode ("=", $rVal);
$kArray[$qKey] = $qVal;
}
//print the request to screen for testing purposes
echo "Header info:" . "
";
print_r($params['http']['header']);
echo "
" . "Request Info:" . "
";
print_r(urldecode($params['http']['content']));
echo "
" . "Response:" . "
";
//print the response to screen for testing purposes
If ( $kArray["responseEnvelope.ack"] == "Success")
{
foreach ($kArray as $key =>$value)
{
echo $key . ": " .$value . "
";
}
}
else
{
foreach ($kArray as $key =>$value)
{
echo $key . ": " .$value . "
";
}
}
}
catch(Exception $e)
{
echo "Message: ||" .$e->getMessage()."||";
}
echo "
";
?>
Ci sono alcuni dati da compilare sul file, questi:
$API_Password = "xxxxxxxxxxxxxxxxxxxxxxx";
$API_Signature = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
Invece per:
Il nome e cognome dell'utente, sono obbligatori da inserire, e devono corrispondere a quelli indicati sul suo account:
"lastName" =>"Rossi",
Ora il punto finale, e cioè se si vuole verificare per email o per telefono (se l'utente l'ha impostato)
//"accountIdentifier.mobilePhoneNumber" => "123452677",
Le barre di fianco // indicano che il codice come commento, e che quindi non viene eseguito.
Dovete scegliere quali delle due linee utilizzare, cioè se verificare l'account per email o per numero di telefono.
Quindi commentare una riga, o l'altra.
Nulla vieta di fare poi la stessa verifica invertita, cioè verificare prima uno e poi, cambiare codice, e verificare l'altro.
5) Per eseguire il codice dovrete aprire il xampp-control.exe e cliccare sul pulsante Start a fianco di Apache
6) Aprite poi sul browser la pagina 127.0.0.1/qualcosa.php (o il nome del file che avete scelto di dargli al punto 4)
Fate le prove magari con il vostro account all'inizio, visto che conoscete i dati.
Verifiche in fase di vendita:
Con un utente che vuole comprare da voi, gli chiedete di inviare un email dalla stessa che usa sull'account Paypal.
Se la risposta è negativa. Fine trattativa.
Se è in grado di inviarvi un email, fatevi dire il suo Nome e Cognome, magari facendovi inviare i documenti (magari con un fogliettino in mano con qualcosa come "acquisto Bitcoin da vostro_nick")
Usate lo script php per verificare che il suo account sia verificato con il nome e cognome a voi forniti.
Se corrisponde bene.
Volete una maggiore verifica?
Fate inviare un sms, con un numero/frase/codice da voi scelto, ad uno dei tanti servizi "receive sms online" presenti su Google (fate qualche prova per trovarne uno ben funzionante)
Usando quei servizi eviterete di dare il vostro numero in giro.
Se arriverà il codice da voi scelto ad uno di quei numero, vedrete anche il numero usato dall'utente. E' importante che diciate all'utente di impostare il numero sul suo account di Paypal.
Potrete quindi ora verificare con lo script che l'utente abbia veramente registrato lo stesso numero sul conto Paypal.
Paypal dice chiaramente di non condividere i vostri dati per accedere alle API con nessuno. (punto 3)
Se volete fregarvene di questo ordine/consiglio, invece di usare xampp potete anche semplicemente copiare il vostro script qua ed eseguirlo (CodeSpace -> Run - F9): http://phpfiddle.org
Sicuramente c'è un metodo più semplice, usando ad esempio Curl o qualcos'altro, ma per ora (o per sempre) accontentatevi di questo.
Se c'è qualcosa che non capite/non funziona segnalate pure, vedo di migliorare un po' la guida.