PAYATHON 2026

JSAPI支付扫码后提示非支付宝官方网页,如何配置域名白名单?

支付阿杰

结论

域名白名单一般不在“我的应用”的通用开发设置中,而是在对应支付产品的签约或配置页面。请先确认应用已签约并开通 JSAPI 支付,再到支付宝开放平台或商家平台进入该产品的配置页面,查找“安全域名”“业务域名”或“域名白名单”等选项。

如果二维码中只是普通网页 URL,支付宝显示“非支付宝官方网页,请确认是否继续”,可能只是客户端针对外部网页给出的安全提醒,未必能通过配置支付产品的域名白名单彻底消除。正确的 JSAPI 支付流程是由服务端创建交易,再由支付宝客户端内的页面调用支付 JSAPI,不能直接把普通网页地址作为支付二维码。

为什么在“我的应用”里找不到

通常有以下几种原因:

  • 应用尚未签约或开通 JSAPI 支付,所以没有对应的产品配置入口。
  • 当前打开的是应用的“开发设置”,域名配置实际位于“产品绑定”“能力管理”或“已签约产品”中。
  • 登录账号不是应用管理员或签约商户账号,无权查看或修改产品配置。
  • 应用类型不符合产品要求。例如,当前进入的是小程序应用,实际使用的却是网页或移动应用。
  • 支付宝控制台改版后,相关配置可能显示为“安全域名”“业务域名”或“H5 域名”,未必直接叫“域名白名单”。

配置步骤

控制台菜单可能随平台版本调整。查找时应按业务层级进入对应产品,不要只停留在“开发设置”页面。

  1. 登录支付宝开放平台,进入目标应用。
  2. 核对应用的 APPID,确认它与服务端请求中的 app_id 一致。
  3. 打开“产品绑定”“能力管理”或类似页面。
  4. 确认应用已绑定并开通 JSAPI 支付。
  5. 点击 JSAPI 支付对应的“配置”“详情”或“开发配置”。
  6. 查找“安全域名”“业务域名”或“域名白名单”。
  7. 填写实际承载支付页面的域名,例如:
pay.example.com
  1. 保存配置。如果平台要求审核,请等待审核通过或配置生效后再测试。
  2. 在支付宝客户端中重新打开支付页面,避免旧页面或缓存干扰测试。

如果开放平台应用中仍找不到入口,可以使用签约商户账号登录支付宝商家平台,在“产品中心”“已签约产品”中查找 JSAPI 支付的产品配置。部分设置属于商户签约维度,不在应用维度中管理。

域名应该怎样填写

一般只需填写纯域名,不要包含协议、路径、端口或通配符,除非控制台输入框明确支持这些格式。

正确示例:

pay.example.com

常见错误:

https://pay.example.com
https://pay.example.com/order/pay
pay.example.com:8080
*.example.com

配置时还需注意:

  • example.com 和 pay.example.com 通常会被视为两个不同的域名。
  • 如果页面发生跳转,中间页和最终支付页的域名都可能参与安全校验。
  • 测试环境和生产环境使用不同域名时,需要分别配置。
  • 尽量使用 HTTPS,并确保网站证书有效,证书中的域名也要匹配。
  • 生产支付不要使用 IP 地址、临时隧道域名或频繁变化的测试域名。

JSAPI 支付调用示例

服务端先调用支付宝交易创建接口并取得 trade_no,然后由支付宝客户端内的页面通过 AlipayJSBridge 发起支付。

<script>
function ready(callback) {
  if (window.AlipayJSBridge) {
    callback();
  } else {
    document.addEventListener('AlipayJSBridgeReady', callback, false);
  }
}

ready(function () {
  AlipayJSBridge.call(
    'tradePay',
    {
      tradeNO: '服务端创建交易后返回的 trade_no'
    },
    function (result) {
      console.log(result);
    }
  );
});
</script>

交易创建接口、参数名称和前端调用方式,请以当前签约产品的官方接入文档为准。不要在浏览器端保存应用私钥,也不要让前端直接拼装应由服务端发起的支付请求。

仍然出现提示时如何排查

配置完成后仍然显示“非支付宝官方网页”时,可以按以下顺序检查:

  1. 扫码后进入的是支付入口,还是普通网页 URL。
  2. 当前页面是否确实在支付宝客户端内运行。
  3. 地址栏中的实际域名是否与白名单完全一致。
  4. 页面是否经过短链接、二维码平台、CDN、网关或第三方登录页跳转。
  5. JSAPI 支付绑定的应用 APPID 是否与服务端请求一致。
  6. 签约商户 PID、应用主体和实际收款主体是否对应。
  7. 域名配置是否已保存、通过审核并正式生效。
  8. 当前账号是否有权管理该应用及其签约产品。

如果扫码后打开的是普通 HTTPS 网页,安全确认页可能来自支付宝客户端的外链风险提示,并非 JSAPI 支付接口报错。此时,即使配置了支付域名,也无法保证提示一定消失。

可以把二维码内容、完整跳转链路、应用 APPID、签约产品状态和客户端提示截图提交给支付宝技术支持,请其判断问题来自域名校验、外链安全策略还是产品权限。提交材料时,不要公开应用私钥、用户身份信息或完整支付凭证。

备注:内容仅供参考。