Получение информации о транзакции от authorize.net - PullRequest
6 голосов
/ 21 мая 2011

У меня возникли проблемы с пониманием API данных транзакции authorize.net ( документация здесь ). Я постараюсь быть кратким.

Единственный практический способ получения обновлений статуса транзакции из авторизации (без использования функции «тихая публикация», которая выглядит как большая сумка кошмаров *) - это получить пакетный список выполненных транзакций (скажем, на день ), а затем извлекайте списки транзакций для каждой установленной партии. Например:

public function getTransactionsForDay($month = false, $day = false, $year = false)
{
    $transactions = array();
    $month = ($month ? $month : date('m'));
    $day = ($day ? $day : date('d'));
    $year = ($year ? $year : date('Y'));
    $firstSettlementDate = substr(date('c',mktime(0, 0, 0, (int)$month, (int)$day, (int)$year)),0,-6);
    $lastSettlementDate  = substr(date('c',mktime(0, 0, 0, (int)$month, (int)$day, (int)$year)),0,-6);
    $response = $this->getSettledBatchList(true, $firstSettlementDate, $lastSettlementDate);
    $batches = $response->xpath("batchList/batch");
    foreach ($batches as $batch) {
        $batch_id = (string)$batch->batchId;
        $request = new AuthorizeNetTD;
        $tran_list = $request->getTransactionList($batch_id);
        $transactions = array_merge($transactions, $tran_list->xpath("transactions/transaction"));
    }
    return $transactions;
}

   $request = new AuthorizeNetTD;
    $transactions = $request->getTransactionsForDay(12, 8, 2010);
    $this->assertTrue(is_array($transactions));

Тем не менее, существует множество возможных статусов транзакций.

Они кажутся «окончательными» и неизменяемыми:

  • communicationError
  • refundSettledSuccessfully
  • 1017 * снизился *
  • couldNotVoid
  • 1021 * истек *
  • generalError
  • failedReview
  • settledSuccessfully
  • settlementError
  • аннулирована

Следующие статусы являются «ожидающими»:

  • authorizedPendingCapture
  • capturedPendingSettlement
  • refundPendingSettlement
  • pendingFinalSettlement
  • pendingSettlement
  • underReview
  • updatingSettlement
  • FDSPendingReview
  • FDSAuthorizedPendingReview
  • authorizedPendingRelease

Эти, я не уверен насчет:

  • возвращенный товар (?)
  • возвратный платеж (?)
  • chargebackReversal (?)
  • утвержденоОтзыв (?)

getUnsettledTransactionList просто сбрасывает последние 1000 «неурегулированных» транзакций на вашем круге, включая отклоненные, ошибочные и т. Д., Что делает его довольно ненадежным, не говоря уже о том, что вам нужно проанализировать этот мусор.

Итак, мои вопросы:

  • Что случилось с последними четырьмя статусами выше? Стоит ли ожидать, что они изменятся или нет?

  • Какие из них входят в «установленную» партию? (settlementError И settledSuccessfully? ПРОСТО settledSuccessfully?)

  • Отображаются ли повторяющиеся платежные операции ( документация здесь ) даже в установленных партиях?

  • Неужели нет способа извлечь из авторизации только «ожидающие» транзакции, игнорируя все несущественные error, declined и т. Д.? Кажется необходимым для повторного выставления счетов - потому что в противном случае приложение (вместо идентификатора транзакции) не может знать, есть ли проблема с транзакцией подписки, пока не пройдет достаточно времени, чтобы можно было с уверенностью предположить, что оно должно было появиться в отлаженная партия.

* из-за двухсекундного тайм-аута, политики отказа и никогда не разговаривать с вами, а также необходимости полагаться на пользователей для правильной настройки их параметров

1 Ответ

7 голосов
/ 21 августа 2011

Я получил ответ от Authorize.net Вот оно:


Отчасти путаница со статусами транзакций заключается в том, что объект статуса транзакции построен из аналогичного объекта, который мы используем внутри, и включает в себя все возможные статусы транзакций в нашей системе. Некоторые из этих статусов фактически никогда не будут восприняты вами как сторонний разработчик. Я проверил нашу общедоступную базу знаний и подтвердил, что в настоящее время у нас нет хорошего списка всех статусов транзакций, поэтому я работаю над его созданием. Я работаю с нашими внутренними разработчиками, чтобы подтвердить некоторые детали статусов, и я отвечу этим списком, как только смогу. Я могу ответить на остальные ваши вопросы прямо сейчас.

Какие из них входят в «установленную» партию? (settlementError И settledSuccessfully? ПРОСТО settledSuccessfully? ) * +1010 *

В Authorize.Net все транзакции перемещаются в пакет, когда состояние транзакции является конечным. Это существенное различие в определении пакета Authorize.Net и определении, используемом большинством поставщиков торговых услуг. Поскольку вся наша отчетность организована в пакеты, важно, чтобы все ваши транзакции в конечном итоге заканчивались партиями.

Есть ли периодические платежные операции ([документация здесь] [2]), даже показать в устоявшихся партиях?

Да, транзакции, инициированные системой Automated Recurring Billing (ARB), не обрабатываются ничем не отличаются от любых других транзакций после их создания.

Неужели нет способа извлечь только «ожидающие» транзакции из авторизовать, игнорируя все несущественные error, declined и т. д.? Кажется необходимым для повторного выставления счетов - потому что в противном случае приложение (вместо идентификатора транзакции) не может знать, есть ли проблема с транзакцией подписки, пока не пройдет достаточно времени Вы можете смело предположить, что он должен был появиться в установленной партии.

В настоящее время нет способа получить список только успешных неурегулированных транзакций или получить только те транзакции, которые связаны с определенной подпиской ARB. Нам известно об этом ограничении, и у нас есть несколько идей о том, как его устранить, но, к сожалению, единственный 100% надежный способ проверки транзакций ARB программным способом - получение всей партии после расчета.

Я работаю над тем, чтобы сделать больше официального документа для определения этих полей, но я подумал, что опубликую то, что у меня есть:

Базовые статусы транзакций
Я не думаю, что эти статусы нуждаются в дальнейшем объяснении, но дайте мне знать, если я ошибаюсь.
- authorizedPendingCapture
- capturedPendingSettlement
- refundPendingSettlement
- решено Успешно
- ВозвратУстановленоУдобно
- аннулировано
- истек
- отклонено

Отдельные ответы по программе обнаружения мошенничества (FDS или AFDS)
Оба эти статуса указывают на то, что транзакция ожидает рассмотрения продавцом вручную.
- FDSPendingReview
- FDSAuthorizedPendingReview

Ответы eCheck
- underReview - при ручном рассмотрении будет одобрен или отклонен.
- failedReview - Окончательный статус транзакции, которая не прошла проверку.
- returnItem - Это не будет отображаться в исходной транзакции, но возвраты eCheck генерируют свои собственные транзакции с этим статусом.

Другие ошибки
- communicationError - Процессор отклонил отдельную транзакцию. Это окончательный статус транзакции.
- paymentError - Процессор отклонил пакет за день. Этот статус не является окончательным. Продавец должен попытаться вернуть партию.
- Общая ошибка - это универсальное состояние для любого состояния транзакции, которое не определено иначе.

Переходные статусы транзакций
Эти статусы транзакций появляются только во время транзакции.Они не должны возвращаться API-интерфейсом данных транзакции.
- canNotVoid
- одобренный просмотр

устаревшие статусы
Эти статусы транзакций относятся к услугам, для которых мы не предлагалиболее 3 лет.Поскольку в торговой учетной записи Authorize.Net хранится история только 2-3 лет, вы не увидите, что эти статусы действительно возвращаются при любой нормальной работе.
- pendingFinalSettlement
- pendingSettlement
- updateSettlement
- chargeback
- возврат платежа
- авторизованныйВерсия возврата

...