Как я могу узнать, была ли транзакция, совершенная пользователем, урегулирована или неурегулирована в authorize.net. Я использую AIM. Я хочу пройти кодирование. Когда транзакция завершена, и я не могу найти статус транзакции. Но я хочу узнать, идет ли она на расчетную или неурегулированную транзакцию. Заранее спасибо.
Как узнать, что транзакция урегулирована/не урегулирована в Authorize.net?
Ответы (5)
Вы не можете получить эту информацию с помощью кодирования, поскольку никакие предложения API Authorize.Net не позволяют этого. Это можно сделать только через панель управления. Когда вы обрабатываете транзакцию и она утверждается, вы можете предположить, что транзакция не урегулирована. Транзакции рассчитываются один раз в день, обычно около полуночи по тихоокеанскому времени. После этого можно считать, что транзакция завершена.
По состоянию на 16 марта 2011 г. авторизация.net выпустила два новых вызова API сведений о транзакциях, getUnsettledTransactionList и getBatchStatistics.
getUnsettledTransactionList возвращает до 1000 неурегулированных транзакций за вызов, возвращая самые последние транзакции. Информация, возвращаемая в ответе, будет такой же, как и при вызове getTransactionList.
getBatchStatistics возвращает статистику для одной партии, такую как состояние и время расчетов, количество списаний, количество отклонений и т. д.
Для получения дополнительной информации ознакомьтесь с руководством по XML и руководством по SOAP.
На момент написания PHP SDK имеет версию 1.1.6 и не имеет этой функции, встроенной в TD API, однако, если вы посмотрите на представленную выше документацию, а также этой страницы-примера вы увидите, что получить список неурегулированных транзакций на самом деле возможно.
Я перешел по этой ссылке 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;
но я получаю это сообщение об ошибке.
Аутентификация пользователя не удалась из-за недопустимых значений аутентификации.
Как указано в ответе @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;
http://developer.authorize.net/api/transaction_details/ — это API, который вы ищете за.