不查询 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,但仅用于电子支票。

  1. 调用 getUnsettledTransactionListRequest
  2. 如果是卡交易且未出现在 getUnsettledTransactionListRequest 结果中,则假设已结算并支付佣金。
  3. 如果它是银行交易并且未出现在 getUnsettledTransactionListRequest 中,则为该特定 eCheck 交易调用 getTransactionDetailsRequest 以查明真实状态(FDS 待审核、FDS 审核失败、审核中等)。

这将大大减少对数据库中每个未结算交易调用 getTransactionDetailsRequest 的次数。

这是授权状态:

https://account.authorize.net/help/Miscellaneous/Pop-up_Terms/ALL/Transaction_Status.htm