PAYATHON 2026

Cardinal Commerce 报告为何显示 Action "None Available"

支付老李

明确结论

Action 显示为 "None Available",通常说明 Cardinal Commerce 管理后台没有为这笔交易提供后续操作,例如重试、继续认证、取消或退款。这个提示本身不代表交易成功、失败或被拒绝,也不能用来判断是否已经扣款。

排查时,应查看交易状态、3-D Secure 认证结果、错误信息,以及支付网关或收单行的处理记录。如果 Cardinal Commerce 只负责身份认证,那么认证完成并不等于支付完成。是否实际扣款,需要到支付网关或收单系统中确认。

为什么会出现 "None Available"

常见原因有:

  • 交易已经进入终态,后台不再允许继续操作。
  • 认证流程没有正常开始,没有可继续执行的步骤。
  • 交易在初始化、设备数据收集、跳转或回调阶段中断。
  • 当前账号只有查询权限,无权执行相关操作。
  • 交易来自测试环境、批量导入或仅作为记录保存,后台没有对应的操作入口。
  • Cardinal Commerce 只处理了 3-D Secure 认证,支付授权由其他系统完成。
  • 报表记录不完整,或者交易还没有完成异步更新。
  • 交易已经超过后台允许操作的时间窗口。

具体含义会因 Cardinal Commerce 产品、门户版本、商户配置和报表类型而有所不同,不能把 "None Available" 直接理解为某个固定的官方交易状态。

建议的排查步骤

1. 查看真正的状态字段

打开交易详情,不要只看 Action 列。优先检查以下信息,实际字段名称可能随集成版本而变化:

  • Transaction ID
  • Order ID / Merchant Reference
  • Transaction Status
  • Authentication Status
  • Error Number / Error Description
  • ECI
  • CAVV、AAV 或其他认证值
  • 交易创建时间和最后更新时间
  • 3-D Secure 版本
  • Challenge 或 Frictionless 流程结果
  • Processor / Gateway Response

如果报表只显示摘要信息,可以导出详细报告,或者进入单笔交易详情页面查看。

2. 区分认证结果和支付结果

Cardinal Commerce 常用于 3-D Secure 身份认证。完整的支付链路通常如下:

订单创建
  → Cardinal Commerce 进行 3-D Secure 认证
  → 商户后端获得认证结果
  → 商户向支付网关或收单行发起授权
  → 网关返回 approved、declined 或 error

实际处理中可能出现这些情况:

  • Cardinal 认证成功,但商户没有发起支付授权。
  • Cardinal 认证成功,但支付授权被银行拒绝。
  • Cardinal 认证失败,商户根据策略停止支付。
  • Cardinal 没有返回完整的认证结果,但商户进行了非 3DS 授权。
  • Cardinal 中有交易记录,支付网关中却没有对应记录。

是否最终扣款,应以支付网关、收单行或处理器的授权及结算记录为准。

3. 使用关联标识串联日志

可以用以下标识查询各个系统的日志:

merchantOrderId / orderId
Cardinal transactionId
paymentGatewayTransactionId
processorReference
timestamp
amount
currency

查询时需要确认:

  • 是否使用了正确的生产或测试环境。
  • 金额和币种是否一致。
  • 时间是否受时区影响。
  • 同一订单是否有过多次认证或支付尝试。
  • Cardinal Transaction ID 是否正确保存到了订单记录中。

4. 检查前端认证流程

如果使用浏览器端 3-D Secure 集成,需要检查:

  • Cardinal SDK 或脚本是否成功加载。
  • 初始化请求是否成功。
  • JWT 或其他初始化凭证是否有效。
  • 认证调用是否真正执行。
  • 浏览器是否阻止了第三方 Cookie、弹窗或重定向。
  • Challenge 页面是否被用户关闭。
  • 认证完成回调是否触发。
  • 回调结果是否成功传到商户后端。

浏览器开发者工具中的 Console 和 Network 面板通常能帮助定位脚本错误、超时、跨域错误或被取消的请求。

5. 检查服务端处理

服务端需要确认:

  • 是否收到认证完成通知或前端回调。
  • 是否验证了回调内容。
  • 是否把认证数据附加到支付授权请求中。
  • 是否因为超时、异常或业务规则跳过了支付请求。
  • 是否记录了支付网关的原始响应。
  • 是否存在异步任务失败或重复消费。

日志记录示例

下面的代码只用于说明需要记录哪些关联信息,不代表 Cardinal Commerce 的正式 API。字段名称应替换为实际集成中使用的字段。

function logPaymentFlow({
  orderId,
  cardinalTransactionId,
  authenticationStatus,
  eci,
  paymentGatewayTransactionId,
  gatewayStatus,
  errorCode,
  errorMessage
}) {
  console.info("payment_flow", {
    orderId,
    cardinalTransactionId,
    authenticationStatus,
    eci,
    paymentGatewayTransactionId,
    gatewayStatus,
    errorCode,
    errorMessage,
    recordedAt: new Date().toISOString()
  });
}

服务端也可以根据订单号查询本地保存的处理记录:

SELECT
    order_id,
    cardinal_transaction_id,
    authentication_status,
    payment_gateway_transaction_id,
    gateway_status,
    error_code,
    created_at,
    updated_at
FROM payment_attempts
WHERE order_id = ?
ORDER BY created_at DESC;

如果一个订单查出多条记录,需要逐条核对。用户刷新页面或重新提交时,可能会产生多次认证和授权尝试。

如何判断实际发生了什么

可以根据下面的情况初步归类:

Cardinal 记录支付网关记录可能情况
有成功认证结果授权成功认证和支付均已完成
有成功认证结果授权失败认证成功,但支付被拒绝或处理失败
有成功认证结果无授权记录商户后端可能没有发起支付
有失败或错误结果无授权记录认证失败后流程被停止
有不完整记录无授权记录页面中断、超时或回调未执行
无完整认证结果有授权记录可能走了非 3DS、降级或其他支付路径

这些情况只能作为排查方向,最终仍要结合交易详情和各系统日志判断。

何时联系 Cardinal Commerce 支持

如果交易详情提供的信息不足,或者报表与接口日志不一致,可以向 Cardinal Commerce 支持团队提供:

  • Merchant ID,但不要发送密钥。
  • Cardinal Transaction ID。
  • 商户订单号。
  • 交易发生时间和明确的时区。
  • 金额和币种。
  • 使用的环境。
  • 报表名称及相关截图。
  • 认证或错误状态。
  • 对应支付网关的处理结果。

不要提交完整卡号、CVV、JWT、API Secret、Session ID 或未经脱敏的持卡人信息。Cardinal 支持可以解释其系统中的认证记录,但要确认支付是否完成授权、捕获或结算,通常还需要支付网关或收单行协助。

注意事项

对 "None Available" 最稳妥的理解是“当前报表页面没有可用操作”,而不是“交易没有结果”。不要仅凭这一列重新扣款或要求用户再次支付,以免产生重复授权。应先通过订单号和 Transaction ID 核对 Cardinal、商户后端和支付网关三方记录,再决定是否需要重试。

备注:内容仅供参考。