如何在authorize.net中查找用户进行的交易是已结算还是未结算。我正在使用AIM。 我希望通过编码。当交易完成后我无法找到交易状态。但我想知道它是否适用于已结算或未结算的交易。 提前谢谢。
答案 0 :(得分:6)
您无法通过编码获取此信息,因为没有API Authorize.Net提供此功能。它只能通过控制面板完成。处理交易并获得批准后,您可以认为交易尚未结算。交易每天通常在太平洋时间午夜左右结算一次。之后,您可以假定交易已经结算。
答案 1 :(得分:6)
截至2011年11月16日,authorize.net发布了两个对Transaction Details API的新调用,getUnsettledTransactionList和getBatchStatistics。
getUnsettledTransactionList每次调用最多返回1,000个未结算的事务,返回最近的事务。响应中返回的信息与getTransactionList调用中返回的信息相同。
getBatchStatistics返回单个批次的批次统计信息,如结算状态和时间,费用计数,拒绝计数等。
有关详细信息,请查看XML指南和SOAP指南。
在撰写本文时,PHP SDK的版本为1.1.6,并且没有在TD api中内置此功能,但是如果您查看上面提供的文档以及this example page,您将会看到获得未结算交易的清单实际上是可能的。
答案 2 :(得分:2)
我已按照此链接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;
但我收到此错误消息。
由于身份验证值无效,用户身份验证失败。
答案 3 :(得分:1)
正如@ cwd的回答所述,了解交易是否已经解决的最可靠方法是致电getUnsettledTransactionList
或getBatchStatistics
,但您也可以查看交易截止的内容 - 关闭时间设置为。
登录您的Authorize.net管理员,点击帐户&gt;交易截止时间
我的帐户设置为下午4: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;
答案 4 :(得分:0)