Я всегда предполагал, что txn_id
отправлено с сообщением IPN уникально. Рекомендации PayPal, похоже, поддерживают эту идею - https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_admin_IPNIntro
Избегайте дублирования сообщений IPN. Убедитесь, что вы еще не обработали транзакцию, идентифицированную идентификатором транзакции, возвращенным в сообщении IPN. Возможно, вам придется хранить идентификаторы транзакций, возвращаемые сообщениями IPN в файле или базе данных, чтобы вы могли проверять наличие дубликатов. Если идентификатор транзакции, отправленный PayPal, является дубликатом, вы не должны обрабатывать его снова.
Однако я обнаружил, что PayPal eCheck payment IPN отправляется дважды с тем же идентификатором транзакции. Однажды во время первоначального платежа с payment_status
как "Ожидание" и снова через пару дней, когда eCheck фактически обрабатывает с помощью payment_status
как "Завершено".
Я хочу хранить обе транзакции, но все равно хочу избежать дублирования. В IPN есть другое поле, называемое ipn_track_id
, и оно отличается для обеих транзакций, но я не могу найти документацию для него, кроме этого неопределенного описания:
Внутренний; только для использования МТС и DTS
Кто-нибудь использует ipn_track_id
для уникальной идентификации сообщений IPN?