2015-04-03 13 views
11

Dopo aver effettuato la richiesta TransactionSearch, ricevo l'elenco delle transazioni con il campo TRANSACTIONID per le transazioni, corrispondenti ai pagamenti ricorrenti, nel modulo ad es. "I-BRPN2RUD8W0G" (la corrente è falsa).PayPal - Recupera i dettagli della transazione per il profilo ricorrente

Per le transazioni di resto, ricevo normalmente 17 caratteri alfanumerici a byte singolo. Ciò significa che per i pagamenti ricorrenti, PayPal restituisce ProfileID, ma non TransactionID.

Di conseguenza quando richiedo GetTransactionDetails con questo ID transazione passato a PayPal, ricevo i dettagli validi per i pagamenti ordinari e ERRORE con il messaggio "L'ID transazione non è valido" per il caso di pagamenti ricorrenti.

+0

ciao, sto affrontando lo stesso problema. – hemsbhardiya

risposta

1

è necessario impostare IPN nel tuo account commerciante di Paypal (specialmente per i pagamenti ricorrenti), che rimanda una transazione indica quando un pagamento ricorrente accade, da lì si può ottenere $_POST['txn_id'] che è il vostro TRANSACTIONID se $_POST['txn_type'] è recurring_payment. Salvare i dettagli nel database e quindi è possibile chiamare il metodo GetTransactionDetails quando sono necessari i dettagli della transazione. More

6

È necessario impostare l'IPN come suggerito da Sanjiv. È possibile ottenere i campi come da IPN Variables. In caso di rimborso sarà anche necessario utilizzare parent_txn_id

Se siete nuovi a questo e trovare duro, è possibile utilizzare IPN listener class e poi integrare sottostante Codice

$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'); 
} 

Salva questo codice del file nel file di diciamo, ipn.php e ora assegna il percorso web per questo file nel tuo account paypal.

PS: assicurati che il tuo file IPN sia in un URL accessibile pubblicamente. Non utilizzare un server locale o limitato.

Problemi correlati