2013-07-12 14 views
14

Ecco la configurazione:Elenco transazioni PayPal

Ho una configurazione del sito per un client. Il cliente:

  1. visita il sito
  2. entra in informazioni di base per i nostri record
  3. Il ricavato a PayPal tramite un "Acquista ora" pulsante
  4. effettua il pagamento tramite PayPal
  5. ritorni al sito

Quello che voglio sapere è come ottenere un elenco di tutte le transazioni? Ho il login PayPal oltre al nome utente, password e firma dell'API, ma per la vita di me non riesco a trovare un singolo posto su Internet che dia un esempio di come estrarre un elenco di transazioni da PayPal tramite PHP o jQuery/Javascript/Ajax.

Qualcuno ha qualche idea? esempi?

Grazie in anticipo.

UPDATE:

sono stato in grado di sviluppare una soluzione a questo problema. Vedi la mia risposta qui sotto con codice e commenti.

risposta

17

Ok, quindi finalmente sono riuscito a sviluppare qualcosa che funzioni. Il codice è pubblicato sotto con un link alle opzioni TransactionSearch API da PayPal

https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/TransactionSearch_API_Operation_NVP/

<?php 
$info = 'USER=[API_USERNAME]' 
     .'&PWD=[API_PASSWORD]' 
     .'&SIGNATURE=[API_SIGNATURE]' 
     .'&METHOD=TransactionSearch' 
     .'&TRANSACTIONCLASS=RECEIVED' 
     .'&STARTDATE=2013-01-08T05:38:48Z' 
     .'&ENDDATE=2013-07-14T05:38:48Z' 
     .'&VERSION=94'; 

$curl = curl_init('https://api-3t.paypal.com/nvp'); 
curl_setopt($curl, CURLOPT_FAILONERROR, true); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 

curl_setopt($curl, CURLOPT_POSTFIELDS, $info); 
curl_setopt($curl, CURLOPT_HEADER, 0); 
curl_setopt($curl, CURLOPT_POST, 1); 

$result = curl_exec($curl); 

# Bust the string up into an array by the ampersand (&) 
# You could also use parse_str(), but it would most likely limit out 
$result = explode("&", $result); 

# Loop through the new array and further bust up each element by the equal sign (=) 
# and then create a new array with the left side of the equal sign as the key and the right side of the equal sign as the value 
foreach($result as $value){ 
    $value = explode("=", $value); 
    $temp[$value[0]] = $value[1]; 
} 

# At the time of writing this code, there were 11 different types of responses that were returned for each record 
# There may only be 10 records returned, but there will be 110 keys in our array which contain all the different pieces of information for each record 
# Now create a 2 dimensional array with all the information for each record together 
for($i=0; $i<count($temp)/11; $i++){ 
    $returned_array[$i] = array(
     "timestamp"   => urldecode($temp["L_TIMESTAMP".$i]), 
     "timezone"   => urldecode($temp["L_TIMEZONE".$i]), 
     "type"    => urldecode($temp["L_TYPE".$i]), 
     "email"    => urldecode($temp["L_EMAIL".$i]), 
     "name"    => urldecode($temp["L_NAME".$i]), 
     "transaction_id" => urldecode($temp["L_TRANSACTIONID".$i]), 
     "status"   => urldecode($temp["L_STATUS".$i]), 
     "amt"    => urldecode($temp["L_AMT".$i]), 
     "currency_code"  => urldecode($temp["L_CURRENCYCODE".$i]), 
     "fee_amount"  => urldecode($temp["L_FEEAMT".$i]), 
     "net_amount"  => urldecode($temp["L_NETAMT".$i])); 
} 
?> 

Inoltre, sono arrivato fino a questo nifty piccolo, semplice script per avere maggiori dettagli su una determinata operazione:

https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/GetTransactionDetails_API_Operation_NVP/

<?php 
$info = 'USER=[API_USERNAME]' 
     .'&PWD=[API_PASSWORD]' 
     .'&SIGNATURE=[API_SIGNATURE]' 
     .'&VERSION=94' 
     .'&METHOD=GetTransactionDetails' 
     .'&TRANSACTIONID=[TRANSACTION_ID]' 
     .'&STARTDATE=2013-07-08T05:38:48Z' 
     .'&ENDDATE=2013-07-12T05:38:48Z'; 

$curl = curl_init('https://api-3t.paypal.com/nvp'); 
curl_setopt($curl, CURLOPT_FAILONERROR, true); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 

curl_setopt($curl, CURLOPT_POSTFIELDS, $info); 
curl_setopt($curl, CURLOPT_HEADER, 0); 
curl_setopt($curl, CURLOPT_POST, 1); 

$result = curl_exec($curl); 

parse_str($result, $result); 

foreach($result as $key => $value){ 
    echo $key.' => '.$value."<BR>"; 
} 
?> 
+0

Ciao, ho provato la prima codifica per visualizzare la transazione ma ho ottenuto 'SCREAM: Errore soppressione ignorata per' 'Errore di analisi: errore di sintassi, imprevisto '=', attesa ')' in C: \ wamp \ www \ all_transactions.php on line 40' error –

+0

Questo sembra essere un errore PHP come se si avesse un personaggio fuori luogo o qualcosa del genere. Ricontrolla il tuo codice perché senza vedere il tuo codice non saprei nemmeno da dove cominciare. –

+0

ho codificato la prima soluzione di codifica che hai dato in questa risposta che iniziano con '

0

Hanno un API TransactionSearch:

https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/TransactionSearch_API_Operation_NVP/

Io uso il mio tirare per numero di fattura per recuperare gli ID di transazione per il rimborso.

+0

Apprezzo l'aiuto e il codice, ma senza la classe PHP che stai usando, tutto ciò che hai postato era solo un mucchio di variabili. Hai il codice o un link al codice della classe che stai utilizzando? –

+0

È possibile utilizzare la classe Angell EYE. –

0
<script 
    data-env="sandbox" 
    data-tax="0.00" 
    data-shipping="0.00" 
    data-currency="USD" 
    data-amount="0.00" 
    data-quantity="0" 
    data-name="No Item Selected" 
    data-button="buynow" src="https://www.paypalobjects.com/js/external/[email protected]" async="async"></script> 

Questo è un elemento html che si collega all'API paypal per effettuare una transazione quando si fa clic sul pulsante. Non modificare le proprietà data-button, src o async. Rimuovere completamente il nodo data-env dopo aver completato il test (il nodo data-env impedisce l'addebito di un addebito effettivo durante il test). Modifica tutte le altre proprietà in base al loro nome (ad esempio, cambieresti data-name con il nome del prodotto che stai vendendo). Inserisci l'elemento come faresti con qualsiasi altro elemento html (ad esempio <p>).