支付宝云开发的出口 IP 是什么?如何配置地图和支付白名单?
明确结论
支付宝云开发没有适用于所有应用和地域的统一出口 IP。需要加入白名单的地址,应以当前云环境控制台显示的“出口 IP”或“固定出口 IP”为准。
配置白名单前,先确认请求的发起位置:
- 地图或支付接口由云函数、云托管服务直接请求:添加该云环境的公网出口 IP。
- 地图服务由支付宝小程序客户端直接调用:通常需要配置小程序
AppId、安全域名,或地图服务商要求的应用标识,不要填写用户手机的 IP。 - 服务端部署在其他云服务器:添加实际服务器的公网出口 IP,不要使用支付宝云开发的出口 IP。
- 支付平台没有明确要求配置 IP 白名单:不要自行添加,应按照对应接口文档配置应用公钥、证书和回调地址等信息。
如何查询出口 IP
先在支付宝云开发控制台中查看当前环境的网络配置、环境详情或出口网络信息。不同产品版本的菜单名称可能不同,请以控制台实际显示的内容为准。
如果控制台没有直接显示出口 IP,可以在云函数或云托管服务中请求公网 IP 查询接口,确认第三方服务看到的来源地址。
const https = require('https');
function getPublicIp() {
return new Promise((resolve, reject) => {
https.get('https://api.ipify.org?format=json', (res) => {
let body = '';
res.on('data', (chunk) => {
body += chunk;
});
res.on('end', () => {
try {
resolve(JSON.parse(body).ip);
} catch (error) {
reject(error);
}
});
}).on('error', reject);
});
}
exports.main = async () => {
const ip = await getPublicIp();
return {
outboundIp: ip
};
};
这段代码必须在实际发起地图或支付请求的同一云环境中运行。在本地电脑、小程序模拟器或其他服务器上测得的 IP,不能代表云开发环境的出口 IP。
公网 IP 查询服务只能用于辅助排查。正式配置时,仍应以支付宝云开发控制台提供的出口 IP 列表为准。
配置地图服务白名单
如果地图接口由云函数调用,请在地图服务商控制台中找到对应的应用或 Key,将云开发环境的所有出口 IP 加入服务端 IP 白名单。例如,控制台显示:
203.0.113.10
203.0.113.11
这两个地址都要添加,不能只添加当前测试请求使用的地址。如果第三方平台要求使用 CIDR 格式,可以分别填写:
203.0.113.10/32
203.0.113.11/32
这些地址仅用于展示格式,并非真实的支付宝云开发出口 IP。
如果地图 SDK 运行在支付宝小程序客户端,应选择地图服务商提供的小程序端或客户端 Key,并按要求绑定 AppId、包信息或安全域名。由于请求可能直接从用户设备发出,配置云开发出口 IP 通常不会生效。
配置支付服务白名单
支付接口是否需要配置 IP 白名单,要看具体支付产品和接口的要求。常规支付宝开放平台接口通常还需要正确配置:
- 应用
AppId - 应用私钥和支付宝公钥,或支付宝公钥证书
- 签名算法
- 异步通知地址
notify_url - 应用网关或授权信息
- 对应产品的签约权限
只有支付服务后台或接口文档明确提供“服务器 IP 白名单”配置项时,才需要将实际调用接口的云环境出口 IP 全部加入白名单。
服务端调用支付宝接口时,常见的初始化形式如下:
const AlipaySdk = require('alipay-sdk').default;
const alipaySdk = new AlipaySdk({
appId: process.env.ALIPAY_APP_ID,
privateKey: process.env.ALIPAY_PRIVATE_KEY,
alipayPublicKey: process.env.ALIPAY_PUBLIC_KEY,
gateway: 'https://openapi.alipay.com/gateway.do'
});
IP 白名单不能代替签名和证书配置。即使出口 IP 已加入白名单,只要私钥、公钥、证书、AppId 或签名参数有误,请求仍会失败。
配置后的验证方法
配置完成后,从真实云环境发起一次请求,并检查第三方服务返回的信息:
- 确认请求由目标云函数或云托管实例发起。
- 记录当前环境、请求时间和出口 IP。
- 检查地图或支付平台的白名单,确认其中包含控制台列出的所有出口 IP。
- 等待白名单配置生效,具体时间以第三方平台的说明为准。
- 根据错误码判断问题属于 IP 限制、签名错误、权限不足还是参数错误。
如果测试时有时成功、有时提示 IP 未授权,通常是因为该环境有多个出口 IP,而白名单中只添加了一部分。
注意事项
- 不要直接使用网上历史帖子中的固定 IP。出口地址可能随地域、环境或产品架构而变化。
- 测试、预发和生产环境的出口 IP 可能不同,需要分别配置。
- 控制台公布的出口 IP 列表应一次性全部加入白名单。
- 如果出口 IP 会动态变化,应先为云服务配置固定公网出口能力,再设置第三方白名单。
- 不要将
0.0.0.0/0加入白名单,否则来源限制将失去安全意义。 - 修改云环境的地域、网络、网关或部署方式后,需要重新核对出口 IP。
- 支付密钥应保存在服务端环境变量或密钥管理服务中,不能写入小程序前端代码。
notify_url必须是支付平台可从公网访问的 HTTPS 地址。它和出口 IP 白名单是两个不同的配置项。
备注:内容仅供参考。
