不查询 getSettledBatchListRequest 得到 Authorize.net 笔结算交易
Get Authorize.net settled transactions without querying getSettledBatchListRequest
我的客户正在切换到 Authorize.Net。他每天执行大约 400 笔交易,佣金通过上线支付,但仅在交易完成后才进行。
为此,我创建一个对象,带上最近7天所有未结算的交易,一一查询:
let payload =
{
getTransactionDetailsRequest: {
merchantAuthentication: {
name: processor.name,
transactionKey: processor.key
},
transId: transaction.authorizeId
}
}
const response = await axios.post(process.env.AUTHENDPOINT, (payload), { headers: { 'Content-Type': 'application/json' } });
我正在测试模式,查询 50 笔交易需要很长时间;所以这行不通。
然后我切换到 getSettledBatchListRequest,它带来了类似于此的响应:
{
"batchList": [
{
"batchId": "12329641",
"settlementTimeUTC": "2021-12-16T00:18:04Z",
"settlementTimeLocal": "2021-12-15T16:18:04",
"settlementState": "settledSuccessfully",
"paymentMethod": "eCheck"
},
{
"batchId": "12332812",
"settlementTimeUTC": "2021-12-16T02:26:14Z",
"settlementTimeLocal": "2021-12-15T18:26:14",
"settlementState": "settledSuccessfully",
"paymentMethod": "creditCard",
"marketType": "eCommerce",
"product": "Card Not Present"
},
{
"batchId": "12333336",
"settlementTimeUTC": "2021-12-17T00:18:26Z",
"settlementTimeLocal": "2021-12-16T16:18:26",
"settlementState": "settledSuccessfully",
"paymentMethod": "eCheck"
},
问题是 getSettledBatchListRequest 迫使我进行第二个查询 (getTransactionListRequest),以利用通过 getSettledBatchListRequest 获得的 batchId 获取 transId。
问题是:有没有一种方法可以把所有结算的交易都带在一个timeframe内,不需要batchId,只需要一个date range;或者用不同的方法来完成我需要的(在我这边将交易标记为 SETTLED)?
谢谢。
你无路可退。 Authorize 没有 API 用于将已结算的交易与 tranId 一起列出。我不知道他们为什么不提供这样的简单 API。
我猜你带来了最后 7 天的电子支票原因,这是有道理的,因为最多需要 6 天才能结清(通常只有 3 天,但它会在银行支付),问题是通常 CC 或 DC 交易一旦他们被接受就顺利通过。
因此,如果电子支票是您检查交易的原因,那么我之前说过的一个很好的方案是使用 getUnsettledTransactionListRequest 并假设 CC 交易是即时设置的;然后继续单独使用 getTransactionDetailsRequest,但仅用于电子支票。
- 调用 getUnsettledTransactionListRequest
- 如果是卡交易且未出现在 getUnsettledTransactionListRequest 结果中,则假设已结算并支付佣金。
- 如果它是银行交易并且未出现在 getUnsettledTransactionListRequest 中,则为该特定 eCheck 交易调用 getTransactionDetailsRequest 以查明真实状态(FDS 待审核、FDS 审核失败、审核中等)。
这将大大减少对数据库中每个未结算交易调用 getTransactionDetailsRequest 的次数。
这是授权状态:
https://account.authorize.net/help/Miscellaneous/Pop-up_Terms/ALL/Transaction_Status.htm
我的客户正在切换到 Authorize.Net。他每天执行大约 400 笔交易,佣金通过上线支付,但仅在交易完成后才进行。
为此,我创建一个对象,带上最近7天所有未结算的交易,一一查询:
let payload =
{
getTransactionDetailsRequest: {
merchantAuthentication: {
name: processor.name,
transactionKey: processor.key
},
transId: transaction.authorizeId
}
}
const response = await axios.post(process.env.AUTHENDPOINT, (payload), { headers: { 'Content-Type': 'application/json' } });
我正在测试模式,查询 50 笔交易需要很长时间;所以这行不通。
然后我切换到 getSettledBatchListRequest,它带来了类似于此的响应:
{
"batchList": [
{
"batchId": "12329641",
"settlementTimeUTC": "2021-12-16T00:18:04Z",
"settlementTimeLocal": "2021-12-15T16:18:04",
"settlementState": "settledSuccessfully",
"paymentMethod": "eCheck"
},
{
"batchId": "12332812",
"settlementTimeUTC": "2021-12-16T02:26:14Z",
"settlementTimeLocal": "2021-12-15T18:26:14",
"settlementState": "settledSuccessfully",
"paymentMethod": "creditCard",
"marketType": "eCommerce",
"product": "Card Not Present"
},
{
"batchId": "12333336",
"settlementTimeUTC": "2021-12-17T00:18:26Z",
"settlementTimeLocal": "2021-12-16T16:18:26",
"settlementState": "settledSuccessfully",
"paymentMethod": "eCheck"
},
问题是 getSettledBatchListRequest 迫使我进行第二个查询 (getTransactionListRequest),以利用通过 getSettledBatchListRequest 获得的 batchId 获取 transId。
问题是:有没有一种方法可以把所有结算的交易都带在一个timeframe内,不需要batchId,只需要一个date range;或者用不同的方法来完成我需要的(在我这边将交易标记为 SETTLED)?
谢谢。
你无路可退。 Authorize 没有 API 用于将已结算的交易与 tranId 一起列出。我不知道他们为什么不提供这样的简单 API。
我猜你带来了最后 7 天的电子支票原因,这是有道理的,因为最多需要 6 天才能结清(通常只有 3 天,但它会在银行支付),问题是通常 CC 或 DC 交易一旦他们被接受就顺利通过。
因此,如果电子支票是您检查交易的原因,那么我之前说过的一个很好的方案是使用 getUnsettledTransactionListRequest 并假设 CC 交易是即时设置的;然后继续单独使用 getTransactionDetailsRequest,但仅用于电子支票。
- 调用 getUnsettledTransactionListRequest
- 如果是卡交易且未出现在 getUnsettledTransactionListRequest 结果中,则假设已结算并支付佣金。
- 如果它是银行交易并且未出现在 getUnsettledTransactionListRequest 中,则为该特定 eCheck 交易调用 getTransactionDetailsRequest 以查明真实状态(FDS 待审核、FDS 审核失败、审核中等)。
这将大大减少对数据库中每个未结算交易调用 getTransactionDetailsRequest 的次数。
这是授权状态:
https://account.authorize.net/help/Miscellaneous/Pop-up_Terms/ALL/Transaction_Status.htm