2015-04-03 25 views
11

Po wysłaniu żądania TransactionSearch otrzymuję listę transakcji z polem TRANSACTIONID dla transakcji, odpowiadającą płatnościom cyklicznym, w formie np. "I-BRPN2RUD8W0G" (prąd jest fałszywy).PayPal - Uzyskaj szczegóły transakcji dla powtarzającego się profilu

Dla pozostałych transakcji - otrzymuję zwykły 17 jednobajtowy ciąg alfanumeryczny. Oznacza to, że w przypadku powtarzających się płatności PayPal zwraca Identyfikator profilu, ale nie TransactionID.

W związku z tym, gdy prosię GetTransactionDetails o ten identyfikator transakcji przekazany do PayPal, otrzymuję prawidłowe dane dla zwykłych płatności i ERROR z komunikatem "Identyfikator transakcji jest nieprawidłowy" dla przypadku płatności cyklicznych.

+0

Witam, mam do czynienia z tym samym problemem. – hemsbhardiya

Odpowiedz

1

Musisz ustawić IPN na koncie sprzedawcy Paypal (specjalnie dla powtarzających się płatności), które wysyła z powrotem Szczegóły transakcji, gdy powtarzające płatność nastąpi, stamtąd można dostać $_POST['txn_id'] który jest twój, jeśli TRANSACTIONID$_POST['txn_type'] jest recurring_payment. Zapisz dane w bazie danych, a następnie zadzwoń pod numer GetTransactionDetails, gdy potrzebujesz szczegółów transakcji. More

6

Będziesz musiał ustawić IPN zgodnie z sugestią Sanjiva. Możesz uzyskać pola zgodnie z IPN Variables. W przypadku zwrotu, będzie trzeba także używać parent_txn_id

Jeśli jesteś nowy w tym i znalezienie trudne, można użyć IPN listener class a następnie zintegrować poniżej kod

$listener = new IpnListener(); 

try { 
    $verified = $listener->processIpn(); 
} catch (Exception $e) { 
    return Log::error($e->getMessage()); 
} 

if ($verified) { 

$data = $_POST; 
$user_id = json_decode($data['custom'])->user_id; 

$subscription = ($data['mc_gross_1'] == '10') ? 2 : 1; 

$txn = array(
    'txn_id'  => $data['txn_id'], 
    'user_id'  => $user_id, 
    'paypal_id' => $data['subscr_id'], 
    'subscription' => $subscription, 
    'expires'  => date('Y-m-d H:i:s', strtotime('+1 Month')), 
); 

Payment::create($txn); 

} else { 
    Log::error('Transaction not verified'); 
} 

Zapisz ten kod pliku w pliku powiedzmy, ipn.php i teraz przypisz ścieżkę do tego pliku na swoim koncie PayPal.

PS: upewnij się, że Twój plik IPN znajduje się pod publicznie dostępnym adresem URL. Nie używaj serwera lokalnego ani zastrzeżonego.