JSAPI支付扫码后提示非支付宝官方网页,如何配置域名白名单?
结论
域名白名单一般不在“我的应用”的通用开发设置中,而是在对应支付产品的签约或配置页面。请先确认应用已签约并开通 JSAPI 支付,再到支付宝开放平台或商家平台进入该产品的配置页面,查找“安全域名”“业务域名”或“域名白名单”等选项。
如果二维码中只是普通网页 URL,支付宝显示“非支付宝官方网页,请确认是否继续”,可能只是客户端针对外部网页给出的安全提醒,未必能通过配置支付产品的域名白名单彻底消除。正确的 JSAPI 支付流程是由服务端创建交易,再由支付宝客户端内的页面调用支付 JSAPI,不能直接把普通网页地址作为支付二维码。
为什么在“我的应用”里找不到
通常有以下几种原因:
- 应用尚未签约或开通 JSAPI 支付,所以没有对应的产品配置入口。
- 当前打开的是应用的“开发设置”,域名配置实际位于“产品绑定”“能力管理”或“已签约产品”中。
- 登录账号不是应用管理员或签约商户账号,无权查看或修改产品配置。
- 应用类型不符合产品要求。例如,当前进入的是小程序应用,实际使用的却是网页或移动应用。
- 支付宝控制台改版后,相关配置可能显示为“安全域名”“业务域名”或“H5 域名”,未必直接叫“域名白名单”。
配置步骤
控制台菜单可能随平台版本调整。查找时应按业务层级进入对应产品,不要只停留在“开发设置”页面。
- 登录支付宝开放平台,进入目标应用。
- 核对应用的
APPID,确认它与服务端请求中的app_id一致。 - 打开“产品绑定”“能力管理”或类似页面。
- 确认应用已绑定并开通 JSAPI 支付。
- 点击 JSAPI 支付对应的“配置”“详情”或“开发配置”。
- 查找“安全域名”“业务域名”或“域名白名单”。
- 填写实际承载支付页面的域名,例如:
pay.example.com
- 保存配置。如果平台要求审核,请等待审核通过或配置生效后再测试。
- 在支付宝客户端中重新打开支付页面,避免旧页面或缓存干扰测试。
如果开放平台应用中仍找不到入口,可以使用签约商户账号登录支付宝商家平台,在“产品中心”“已签约产品”中查找 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>
交易创建接口、参数名称和前端调用方式,请以当前签约产品的官方接入文档为准。不要在浏览器端保存应用私钥,也不要让前端直接拼装应由服务端发起的支付请求。
仍然出现提示时如何排查
配置完成后仍然显示“非支付宝官方网页”时,可以按以下顺序检查:
- 扫码后进入的是支付入口,还是普通网页 URL。
- 当前页面是否确实在支付宝客户端内运行。
- 地址栏中的实际域名是否与白名单完全一致。
- 页面是否经过短链接、二维码平台、CDN、网关或第三方登录页跳转。
- JSAPI 支付绑定的应用
APPID是否与服务端请求一致。 - 签约商户
PID、应用主体和实际收款主体是否对应。 - 域名配置是否已保存、通过审核并正式生效。
- 当前账号是否有权管理该应用及其签约产品。
如果扫码后打开的是普通 HTTPS 网页,安全确认页可能来自支付宝客户端的外链风险提示,并非 JSAPI 支付接口报错。此时,即使配置了支付域名,也无法保证提示一定消失。
可以把二维码内容、完整跳转链路、应用 APPID、签约产品状态和客户端提示截图提交给支付宝技术支持,请其判断问题来自域名校验、外链安全策略还是产品权限。提交材料时,不要公开应用私钥、用户身份信息或完整支付凭证。
备注:内容仅供参考。
