PayPal - получение информации о транзакциях для повторяющегося профиля

При выполнении запроса TransactionSearch я получаю список транзакций в поле TRANSACTIONID для транзакций, соответствующих повторяющимся платежам, в форме, например "I-BRPN2RUD8W0G" (текущий является фальшивым).

Для остальных транзакций я получаю обычную 17 однобайтовую буквенно-цифровую строку. Это означает, что для повторяющихся платежей PayPal возвращает ProfileID, но не TransactionID.

В результате, когда я запрашиваю GetTransactionDetails с этим идентификатором транзакции, переданным в PayPal, я получаю действительные данные для обычных платежей и ОШИБКИ с сообщением "Идентификатор транзакции недействителен" для случая повторяющихся платежей.

Ответы

Ответ 1

Вам нужно будет установить IPN, как было предложено Sanjiv. Вы можете получить поля в соответствии с переменными IPN. В случае возврата вам также потребуется использовать parent_txn_id

Если вы новичок в этом и находите жестким, вы можете использовать класс прослушивателя IPN, а затем интегрировать ниже код

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

Сохраните этот файл в файле let say, ipn.php и теперь назначьте веб-путь для этого файла в своей учетной записи PayPal.

PS: убедитесь, что ваш IPN файл находится на общедоступном URL-адресе. Не используйте локальный или ограниченный сервер.

Ответ 2

Вы должны установить IPN в своей учетной записи продавца Paypal (специально для повторяющихся платежей), которая отправляет вам данные о транзакциях при повторном платеже, оттуда вы можете получить $_POST['txn_id'] который является вашим TRANSACTIONID $_POST['txn_id'] если $_POST['txn_type'] является recurring_payment. Сохраните данные в своей базе данных, а затем вы можете вызвать метод GetTransactionDetails когда вам нужны данные транзакции. Больше