PAYATHON 2026

支付宝访问 pay.btsq.cn 仍提示“即将离开支付宝”如何解决?

支付小周

结论

“您即将离开支付宝”通常不代表域名备案失败,也不等于支付宝安全中心拦截了风险网址。

这段提示的意思是,当前页面将从支付宝客户端跳转到支付宝体系外的第三方网站。即使 pay.btsq.cn 已完成备案、相关应用配置了白名单,安全申诉也已通过,支付宝仍可能显示离站安全提醒。安全中心申诉通常只能解除风险网址拦截,不能保证关闭客户端的外链提示。

如果页面属于支付流程,应使用对应支付产品提供的官方跳转方式,同时核对实际访问地址、应用绑定关系和完整的重定向链。前端代码无法可靠地强制关闭这类提示。

为什么解除拦截后仍然提示

先要分清风险拦截和离站提醒:

  • 风险拦截:支付宝认为页面可能存在欺诈、恶意跳转或其他安全风险,并可能禁止用户继续访问。这类问题通常需要向支付宝安全中心申诉。
  • 离站提醒:页面仍可继续访问,但支付宝会明确告知用户即将进入第三方网站。这通常属于客户端的安全交互策略。

题目中的提示包含“若继续访问,请注意您的账号和资金安全”,而且允许用户继续访问,因此更像是离站提醒。

备案、应用白名单和安全申诉处理的并不是同一类问题:

  1. ICP 备案只能说明网站具备相应的备案信息,不会让网站自动获得支付宝客户端的免提示资格。
  2. 应用白名单通常只对指定应用、产品、接口或业务域名有效,未必覆盖聊天消息、生活号、二维码和普通 H5 链接等全部入口。
  3. 安全申诉可以解除风险判定,但不会改变支付宝针对普通外部链接设置的统一提醒策略。
  4. 如果白名单绑定了特定 app_id,通过其他应用、其他商户或普通浏览器入口访问时,可能无法命中这项配置。

建议的排查步骤

1. 确认提示出现在哪个入口

分别记录以下信息:

  • 支付宝客户端版本和手机系统;
  • 链接是从聊天消息、二维码、生活号、小程序还是支付结果页打开;
  • 首次打开的完整 URL;
  • 最终落地页 URL;
  • 是否经过短链接、CDN、网关或第三方收银台;
  • 出现问题时使用的 app_id、商户账号和支付产品。

即使域名相同,从不同入口打开时,客户端也可能采用不同的安全策略。因此,不能仅根据“域名已经加白”就认定所有场景都应该免提示。

2. 检查完整重定向链

白名单配置了 pay.btsq.cn,不代表跳转过程中经过的其他域名也已配置。需要重点检查:

  • HTTP 是否跳转到 HTTPS;
  • 是否先经过短链接域名;
  • 是否跳转到裸域名、其他子域名或第三方域名;
  • return_url、quit_url 等参数是否指向其他域名;
  • 是否存在多次 301、302 或 JavaScript 跳转;
  • 页面资源异常时是否会进入备用域名。

例如,在下面的流程中,只配置 pay.btsq.cn 可能还不够:

https://pay.btsq.cn/order/123
    -> https://short.example.com/abc
    -> https://cashier.example.net/pay
    -> https://pay.btsq.cn/result

入口页面、支付页面和支付后的回跳地址应尽量使用经过核验的 HTTPS 域名,并减少不必要的跨域跳转。

3. 核对支付宝开放平台配置

登录实际发起业务的支付宝开放平台应用,逐项检查:

  • 当前使用的 app_id 是否与配置白名单的应用一致;
  • 使用的支付产品是否适合当前页面场景;
  • 应用是否已经上线,而不是仍处于开发或审核状态;
  • 业务域名、授权回调地址等配置是否填写了准确的主机名;
  • 生产环境是否误用了沙箱应用或另一套商户配置;
  • 域名配置变更是否已经通过审核并正式生效。

pay.btsq.cn、www.pay.btsq.cn 和 btsq.cn 是三个不同的主机名。配置其中一个,不代表另外两个会自动生效。

不同接入产品的配置项名称可能不同,应以当前支付产品的开放平台控制台和官方接入文档为准。

4. 使用官方支付入口

如果这是支付宝支付页面,不建议用普通外链模拟收银台跳转。应按照当前支付产品的要求调用接口和唤起支付,由服务端生成支付宝认可的支付请求。

下面的示例只用于说明服务端发起支付并设置同步回跳地址的基本结构。具体接口名称和参数需要结合实际产品核对:

AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();

request.setReturnUrl("https://pay.btsq.cn/payment/result");
request.setNotifyUrl("https://pay.btsq.cn/api/alipay/notify");

request.setBizContent("""
{
  "out_trade_no": "ORDER_202609090001",
  "total_amount": "100.00",
  "subject": "订单支付",
  "product_code": "FAST_INSTANT_TRADE_PAY"
}
""");

AlipayTradePagePayResponse response = alipayClient.pageExecute(request);

if (response.isSuccess()) {
    String paymentForm = response.getBody();
    // 将支付宝返回的表单响应给浏览器
}

示例中的订单号、金额和产品代码只用于展示结构,不能直接用于生产环境。移动端 H5 支付、小程序支付和电脑网站支付所使用的产品及调用方式不同,不能混用。

5. 不要用前端脚本反复跳转

下面这类代码无法消除支付宝客户端的离站提示。连续跨域跳转还可能增加触发风控的概率:

window.location.href = "https://pay.btsq.cn/payment";
window.open("https://pay.btsq.cn/payment", "_blank");

修改 User-Agent、嵌套 iframe、多次使用 302、借助短链接或动态更换域名,也不适合用来绕过提醒。这些做法不稳定,还可能触发更严格的安全检查。

6. 带完整证据提交工单

如果已经确认该域名用于签约支付业务,并且按照对应产品的官方流程打开后仍出现异常提示,应通过支付宝开放平台提交技术工单,而不是反复进行网址安全申诉。

提交时建议附上:

  • app_id 和商户 PID;
  • 所使用的支付产品;
  • 完整测试 URL;
  • 入口路径和复现步骤;
  • 页面截图或录屏;
  • 手机系统和支付宝客户端版本;
  • 完整重定向链;
  • 域名白名单配置截图;
  • 安全申诉结果和申诉编号;
  • 问题发生时间及相关支付宝请求号。

需要请技术支持确认三个问题:该场景是否支持免除离站提示,当前白名单是否成功命中,以及具体由哪一次跳转触发了提示。

服务端应做的安全检查

如果付款页允许通过参数指定回跳地址,服务端应限制目标域名,防止形成开放重定向。开放重定向会带来安全风险,也可能影响平台对该域名的信任判断。

private static final Set<String> ALLOWED_HOSTS = Set.of(
    "pay.btsq.cn"
);

public static URI validateReturnUrl(String value) {
    URI uri = URI.create(value);

    if (!"https".equalsIgnoreCase(uri.getScheme())) {
        throw new IllegalArgumentException("Only HTTPS URLs are allowed");
    }

    String host = uri.getHost();
    if (host == null || !ALLOWED_HOSTS.contains(host.toLowerCase())) {
        throw new IllegalArgumentException("Return URL host is not allowed");
    }

    return uri;
}

不要只判断字符串前缀:

// 错误示例:可能放过 https://pay.btsq.cn.example.com/
returnUrl.startsWith("https://pay.btsq.cn");

还应检查页面中是否存在未经验证的 redirect、returnUrl、callback、url 等参数,防止第三方利用该域名跳转到其他网站。

注意事项

  • HTTPS 证书必须有效,证书中的域名要与实际主机名一致。
  • 支付结果应以服务端异步通知和主动查询为准,不能只根据浏览器同步回跳页面判断支付是否成功。
  • 不要在 URL 中传递身份证号、手机号、令牌或其他敏感数据。
  • 不要频繁更换域名、使用公共短链接,或添加没有业务必要的中间跳转。
  • 如果支付宝确认该文案属于客户端统一的外链安全提醒,业务方就无法通过网页代码将其关闭,只能保留这项交互,或者改用支付宝支持的官方承载场景。
  • 白名单的适用范围取决于实际接入产品和应用配置。如果缺少 app_id、入口方式及跳转链等信息,无法断定某项白名单一定能取消提示。

备注:内容仅供参考。