2013-07-12 11 views
14

Oto konfiguracja:Lista transakcji PayPal

Mam konfigurację strony dla klienta. Klient:

  1. odwiedza stronę
  2. Wprowadza w podstawowe informacje o naszych danych
  3. przechodzi do PayPal za pośrednictwem „Kup Teraz”
  4. dokonuje płatności poprzez PayPal
  5. Zwraca się do serwisu

Co chcę wiedzieć, w jaki sposób mogę uzyskać listę wszystkich transakcji? Mam login PayPal, jak również nazwę użytkownika, hasło i podpis API, ale dla mojego życia nie mogę znaleźć ani jednego miejsca w Internecie, które daje przykład, jak wyciągnąć listę transakcji z PayPal przez PHP lub jQuery/Javascript/Ajax.

Czy ktoś ma jakieś pomysły? przykłady?

Z góry dziękuję.

UPDATE:

udało mi się opracować rozwiązanie tej kwestii. Zobacz moją odpowiedź poniżej z kodem i komentarzami.

Odpowiedz

17

Ok, więc w końcu udało mi się stworzyć coś, co działa. Kod jest zamieszczona poniżej wraz z linkiem do opcji TransactionSearch API z 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])); 
} 
?> 

Również wymyśliłem tego fajną, prosty skrypt, aby uzyskać więcej informacji na temat danej transakcji:

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

Witam, wypróbowałem pierwsze kodowanie, aby wyświetlić transakcję, ale otrzymałem komunikat 'SCREAM: Ignorowanie błędów dla' 'Błąd analizy składni: błąd składni, nieoczekiwane '=', oczekiwanie ')' w C: \ wamp \ www \ all_transactions.php na linii 40' error –

+0

Wydaje się, że jest to błąd PHP, jak gdybyś miał postać nie na miejscu lub coś takiego. Ponownie sprawdź kod, ponieważ nie widząc Twojego kodu, nie wiedziałbym nawet, od czego zacząć. –

+0

I kodowane pierwsze rozwiązanie kodowania dałeś w tej odpowiedzi zaczynając '

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> 

To jest element html, który łączy się z Paypal API, aby dokonać transakcji po kliknięciu przycisku. Nie zmieniaj właściwości data-button, src ani . Po zakończeniu testu należy całkowicie usunąć węzeł data-env (węzeł data-env uniemożliwia wykonanie rzeczywistego obciążenia podczas testowania). Zmień wszystkie pozostałe właściwości zgodnie z ich nazwami (np. Zmieniłbyś data-name na nazwę produktu, który sprzedajesz). Wstaw element tak, jak każdy inny element html (np. <p>).

Powiązane problemy