我如何在authorize.net中找到用户进行的交易是已结算还是未结算。我正在使用AIM。我想通过编码。当交易完成时,我找不到交易状态。但我想知道它是进行已结算还是未结算的交易。提前致谢。
5 回答
您无法通过编码获取此信息,因为没有 API Authorize.Net 提供允许这样做。它只能通过控制面板完成。当您处理交易并获得批准时,您可以假设交易未结算。交易通常在太平洋时间午夜左右每天结算一次。之后,您可以假设交易已结算。
自 2011 年 3 月 16 日起,authorize.net 发布了对 Transaction Details API 的两个新调用,getUnsettledTransactionList 和 getBatchStatistics。
getUnsettledTransactionList 每次调用最多返回 1,000 个未结算的交易,返回最近的交易。响应中返回的信息将与 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
or getBatchStatistics
,但您也可以检查您的交易截止时间设置为。
登录到您的 Authorize.net 管理员,点击账户 > 交易截止时间
我的帐户设置为太平洋夏令时间下午 4:00,因此您可以将交易时间与截止时间进行比较。就像是:
$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;