Vendere Bitcoin accettando Paypal è molto rischioso.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/pal=user@email.comOra 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_linkE' 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 StatusCompilate 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:)
<?php
//$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" =>"emailtizio@server.com",
//"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:" . "<br>";
print_r($params['http']['header']);
echo "<br><br>" . "Request Info:" . "<br>";
print_r(urldecode($params['http']['content']));
echo "<br><br>" . "Response:" . "<br>";
//print the response to screen for testing purposes
If ( $kArray["responseEnvelope.ack"] == "Success")
{
foreach ($kArray as $key =>$value)
{
echo $key . ": " .$value . "<br/>";
}
}
else
{
foreach ($kArray as $key =>$value)
{
echo $key . ": " .$value . "<br/>";
}
}
}
catch(Exception $e)
{
echo "Message: ||" .$e->getMessage()."||";
}
echo "<br>";
?>
Ci sono alcuni dati da compilare sul file, questi:
$API_UserName = "xxxxxxxxxxxxxxxxxxxx";
$API_Password = "xxxxxxxxxxxxxxxxxxxxxxx";
$API_Signature = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
Dovete metterci quelli del punto
3.
Invece per:
$API_AppID = "xxxxxxxxxxxxxxxxxxxxxx";
Trovate il codice da inserire al punto
2.
Il nome e cognome dell'utente, sono obbligatori da inserire, e devono corrispondere a quelli indicati sul suo account:
"firstName" =>"Mario",
"lastName" =>"Rossi",
Ora il punto finale, e cioè se si vuole verificare per email o per telefono (
se l'utente l'ha impostato)
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
Apache6) 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.orgSicuramente 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.