在发出TransactionSearch请求时,我收到交易的TRANSACTIONID字段的交易清单,对应于定期付款,格式为例如“I-BRPN2RUD8W0G”(目前是假的)。
对于其余的事务 - 我通常会得到17个单字节字母数字字符串。这意味着,对于定期付款,PayPal会返回ProfileID,但不会返回TransactionID。
因此,当我请求传递给PayPal的此交易ID的GetTransactionDetails时,我会收到有关普通付款的有效详细信息,并且会收到有关定期付款情况的消息“交易ID无效”。
答案 0 :(得分:6)
您需要按照Sanjiv的建议设置IPN。您可以按IPN Variables获取字段。如果退款,您还需要使用parent_txn_id
如果您对此感到陌生并且发现困难,可以使用IPN listener class然后集成以下代码
$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');
}
将此文件代码保存在文件中,例如ipn.php,现在在paypal帐户中为此文件指定Web路径。
PS:确保您的IPN文件位于可公开访问的网址上。不要使用本地或受限制的服务器。
答案 1 :(得分:1)