Как узнать, что транзакция урегулирована/не урегулирована в Authorize.net?

Как я могу узнать, была ли транзакция, совершенная пользователем, урегулирована или неурегулирована в authorize.net. Я использую AIM. Я хочу пройти кодирование. Когда транзакция завершена, и я не могу найти статус транзакции. Но я хочу узнать, идет ли она на расчетную или неурегулированную транзакцию. Заранее спасибо.


person svk    schedule 06.07.2010    source источник
comment
Эх, прошло много времени с тех пор, как я вручную реализовал обработку кредитных карт через Authorize.net, но я не припоминаю ни одного типа урегулированного/неурегулированного имущества. Обычно вы отправляете шлюзу запрос на обработку платежа (со всей информацией CC), а затем он возвращает код состояния, который сообщает вам, прошел ли платеж или не прошел. Поскольку это кредитная карта, а не вкладка, средства переводятся со счета покупателя на ваш практически мгновенно.   -  person Lèse majesté    schedule 06.07.2010
comment
Исправление, в дополнение к pass/fail/error есть 4-й код ответа, но он никогда не должен появляться в стандартной настройке. Это происходит, когда вы принимаете частичные платежи или если вы настроили свою учетную запись так, что вам нужно просматривать и утверждать каждую транзакцию вручную. См. подраздел в Разделе 4, озаглавленный Коды причин ответа...: developer.authorize.net/guides/AIM.   -  person Lèse majesté    schedule 06.07.2010
comment
Спасибо за ваши быстрые ответы ... Я пройду через это.   -  person svk    schedule 06.07.2010


Ответы (5)


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

person John Conde    schedule 06.07.2010
comment
А, я этого не знал. Что именно это означает, когда транзакция не рассчитана? Деньги с покупателя еще не списаны? Или это просто означает, что средства находятся между счетом покупателя и счетом продавца (например, удерживаются Authorize.net)? - person Lèse majesté; 06.07.2010
comment
Чтобы упростить процесс обработки транзакций для всех участников (продавца, эквайера, процессингового банка), транзакции обрабатываются пакетами один раз в день. Неурегулированная транзакция имеет средства, удерживаемые на кредитной карте держателя карты для продавца, у которого была совершена покупка. После того, как эта транзакция будет урегулирована, средства снимаются с держателя карты и переводятся продавцу. Как только код подтверждения дается для транзакции, с точки зрения продавца, транзакция завершена, и они могут рассчитывать на получение этих денег в течение 2-3 рабочих дней в зависимости от типа карты. - person John Conde; 06.07.2010
comment
Спасибо, Джон Конде. Я сомневаюсь, что через 12 часов это неурегулированная транзакция (т.е. если она не прошла проверку, когда через нее проходят сотрудники банка (я не знаю, возникнет ли такая ситуация или нет)) есть ли какие-либо возможности сообщить продавцу, чтобы он сделал возврат (неудержанный) суммы для пользователя. - person svk; 07.07.2010
comment
Неурегулированный означает, что он просто не представлен для оплаты вам. Как только одобрение дано, оно не может не пройти проверку или что-то еще, потому что больше проверка не выполняется. - person John Conde; 07.07.2010
comment
Это неправильно (по крайней мере уже). developer.authorize.net/api/transaction_details позволяет просматривать сведения о транзакции, в том числе о том, была ли она поселился. - person Joe Van Dyk; 28.11.2012

По состоянию на 16 марта 2011 г. авторизация.net выпустила два новых вызова API сведений о транзакциях, getUnsettledTransactionList и getBatchStatistics.

getUnsettledTransactionList возвращает до 1000 неурегулированных транзакций за вызов, возвращая самые последние транзакции. Информация, возвращаемая в ответе, будет такой же, как и при вызове getTransactionList.

getBatchStatistics возвращает статистику для одной партии, такую ​​как состояние и время расчетов, количество списаний, количество отклонений и т. д.

Для получения дополнительной информации ознакомьтесь с руководством по XML и руководством по SOAP.

На момент написания PHP SDK имеет версию 1.1.6 и не имеет этой функции, встроенной в TD API, однако, если вы посмотрите на представленную выше документацию, а также этой страницы-примера вы увидите, что получить список неурегулированных транзакций на самом деле возможно.

с этой страницы

person cwd    schedule 20.09.2011

Я перешел по этой ссылке http://developer.authorize.net/api/transaction_details/ и получить этот код оттуда,

<?php
require_once "anet_php_sdk/AuthorizeNet.php";
define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN");
define("AUTHORIZENET_TRANSACTION_KEY", "YOURKEY");

// Get Settled Batch List
$request = new AuthorizeNetTD;
$response = $request->getSettledBatchList();
echo count($response->xml->batchList->batch) . " batches\n";
foreach ($response->xml->batchList->batch as $batch) {
    echo "Batch ID: " . $batch->batchId . "\n";
}

// Get Transaction Details
$transactionId = "12345";
$response = $request->getTransactionDetails($transactionId);
echo $response->xml->transaction->transactionStatus;

но я получаю это сообщение об ошибке.

Аутентификация пользователя не удалась из-за недопустимых значений аутентификации.

person Musaddiq Khan    schedule 18.12.2013

Как указано в ответе @cwd, самый надежный способ узнать, завершена ли транзакция, — это позвонить getUnsettledTransactionList или getBatchStatistics, но вы также можете просто проверить, какое значение установлено для вашего Время окончания транзакции.

Войдите в систему администратора Authorize.net, нажмите «Учетная запись» > «Время окончания транзакции».

В моей учетной записи установлено значение 16:00 PDT, поэтому вы можете просто сравнить время транзакции с временем отключения. Что-то вроде:

$createdTime = new DateTime($charge['createdTime']);

// starting point for settle time
$settleTime = new DateTime($createdTime->format('Y-m-d') . ' 16:00:00');
$now = new DateTime();

// if card was charged after settle time for 
// that day, move settle time to the next day
if ($createdTime > $settleTime) {
    $settleTime->add(new DateInterval('P1D'));
}

if ($now > $settleTime) $settled = true;
person thealexbaron    schedule 31.08.2016

http://developer.authorize.net/api/transaction_details/ — это API, который вы ищете за.

person Joe Van Dyk    schedule 28.11.2012