PAYATHON 2026

支付页面一直显示“系统繁忙”,无法正常付款怎么办?

支付阿杰

结论

支付页面一直显示“系统繁忙”,不一定是银行卡或账户出了问题。更常见的原因包括支付链接失效、订单状态异常、浏览器或网络环境干扰,以及商户或支付渠道临时故障。

先不要连续提交。确认是否已经扣款,再更换浏览器或网络重新发起支付。如果仍然失败,请保存订单号、失败时间和页面截图,让商户根据支付请求号向支付渠道查询具体错误。

常见原因

支付链接或订单已经失效

部分支付页面有有效期。如果页面打开太久、重复使用旧链接,或者订单已经关闭或支付成功,页面可能统一显示“系统繁忙”。

返回订单页面刷新状态,再从“重新支付”入口生成新的支付链接,不要继续刷新原页面。

浏览器或网络环境异常

浏览器禁用了 Cookie、脚本被拦截、缓存数据发生冲突,或者正在使用代理、VPN 和受限的公司网络,都可能让支付页面无法正常初始化或跳转。

支付渠道临时不可用

银行、第三方支付平台或商户支付接口可能正在维护、受到限流或发生短时故障。前几天能够正常付款,只能说明当时的支付链路可用,不能说明当前服务状态没有变化。

商户端支付参数有误

如果所有用户都无法付款,或者问题出现在系统发布、证书更新或域名变更之后,应检查以下项目:

  • 商户号、应用 ID 和支付产品权限
  • API 密钥或证书是否过期
  • 支付金额、币种和订单号格式
  • 回调地址是否可以从公网访问
  • 签名算法、时间戳和服务器时间
  • 支付域名、来源域名或 IP 白名单
  • 同一订单号是否被重复提交

用户可以尝试的解决步骤

  1. 先查询订单和扣款状态。结果尚未确认时不要反复付款,以免重复扣款。
  2. 关闭当前支付页面,回到订单详情页重新发起支付。
  3. 使用浏览器无痕模式,或者清除该站点的缓存和 Cookie。
  4. 暂时关闭广告拦截插件、代理和 VPN。
  5. 在 Wi-Fi 和移动网络之间切换,排除网络限制。
  6. 更换浏览器、设备或支付方式后再次尝试。
  7. 等待几分钟再重试。如果长时间没有恢复,请联系商户客服。

反馈问题时,请提供订单号、发生时间、支付方式、错误截图以及是否已经扣款。不要向客服发送银行卡号、短信验证码、支付密码或完整证件号码等敏感信息。

商户或开发人员的排查方法

先根据订单号查找创建支付请求时的服务端日志,确认支付接口是否成功返回。不要仅凭前端显示的“系统繁忙”判断原因,因为这段文案可能对应多种底层错误。

建议记录以下信息:

  • 商户订单号
  • 支付渠道请求号
  • 请求时间和响应耗时
  • HTTP 状态码
  • 渠道错误码和错误信息
  • 签名验证结果
  • 回调接收及处理结果

日志中的令牌、密钥、银行卡号和个人信息需要脱敏。

async function createPayment(order) {
  const startedAt = Date.now();

  try {
    const response = await paymentClient.create({
      outTradeNo: order.orderNo,
      amount: order.amount,
      currency: order.currency,
      notifyUrl: process.env.PAYMENT_NOTIFY_URL
    });

    console.info("payment.create", {
      orderNo: order.orderNo,
      requestId: response.requestId,
      status: response.status,
      durationMs: Date.now() - startedAt
    });

    return response;
  } catch (error) {
    console.error("payment.create.failed", {
      orderNo: order.orderNo,
      requestId: error.requestId,
      httpStatus: error.status,
      errorCode: error.code,
      message: error.message,
      durationMs: Date.now() - startedAt
    });

    throw error;
  }
}

这里的 paymentClient.create、字段名称和返回结构只是通用示例,实际实现应以所接入支付平台的 SDK 或 API 文档为准。

如果创建支付接口已经成功,但支付页面仍然报错,可以继续检查浏览器开发者工具中的网络请求,查看失败请求的 URL、HTTP 状态码和响应内容。遇到 4xx 错误时,先检查请求参数、签名和权限;遇到 5xx 或超时时,则需要结合支付渠道的服务状态和请求号排查。

最终支付结果必须通过服务端查询接口或异步通知确认,不能只根据浏览器的跳转结果判断付款是否成功。

const payment = await paymentClient.query({
  outTradeNo: orderNo
});

if (payment.status === "SUCCESS") {
  await markOrderAsPaid(orderNo, payment.transactionId);
} else if (payment.status === "PROCESSING") {
  // 保持订单处理中,稍后再次查询
} else {
  // 根据渠道返回的状态决定是否允许重新支付
}

注意事项

  • 确认订单状态之前,不要创建多个相同订单或连续发起扣款。
  • 不要将 API 密钥、私钥或完整支付响应直接输出到前端。
  • 不要只返回“系统繁忙”。服务端应保留具体错误码,并向用户提供可以直接执行的提示,例如“订单已失效,请重新下单”。
  • 多名用户同时遇到问题时,先排查商户配置、证书、接口变更和支付渠道状态。
  • 只有个别用户失败时,先排查其浏览器、网络、账户风控和支付方式限制。
  • 已经扣款但订单仍显示未支付时,不要再次付款。应凭订单号和支付流水号进行对账。

备注:内容仅供参考。