使用 H5 支付需要在支付宝后台配置业务域名吗?
结论
支付宝 H5 支付通常不需要单独配置”业务域名”。
如果接入支付宝开放平台的手机网站支付,例如调用 alipay.trade.wap.pay 创建支付页面,商户服务端生成支付请求后,让用户跳转到支付宝收银台即可。与微信内网页支付不同,当前网站域名一般不需要加入业务域名白名单。
应用上线、能力签约或安全审核时,支付宝后台可能要求填写网站地址、经营信息等资料。这些资料用于应用审核,并不是支付接口的域名白名单。开放平台的规则可能调整,具体应以对应应用后台的提示为准。
接入步骤
1. 开通手机网站支付能力
在支付宝开放平台创建网页或移动应用,完成签约并开通手机网站支付能力。
需要准备:
app_id- 应用私钥
- 支付宝公钥或支付宝公钥证书
- 支付异步通知地址
notify_url - 支付完成后的页面跳转地址
return_url
2. 在服务端创建支付请求
服务端必须使用商户私钥为支付请求签名。不要把应用私钥保存在前端 JavaScript 中,也不要直接在前端拼装签名参数。
下面是支付宝 Java SDK 的一种常见调用方式:
AlipayClient alipayClient = new DefaultAlipayClient(
"https://openapi.alipay.com/gateway.do",
APP_ID,
APP_PRIVATE_KEY,
"json",
"UTF-8",
ALIPAY_PUBLIC_KEY,
"RSA2"
);
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
request.setNotifyUrl("https://pay.example.com/alipay/notify");
request.setReturnUrl("https://www.example.com/payment/result");
request.setBizContent("""
{
"out_trade_no": "ORDER_202609090001",
"total_amount": "99.00",
"subject": "订单支付",
"product_code": "QUICK_WAP_WAY"
}
""");
AlipayTradeWapPayResponse response = alipayClient.pageExecute(request);
if (response.isSuccess()) {
String paymentForm = response.getBody();
// 将 paymentForm 返回给浏览器,由浏览器提交并跳转到支付宝收银台
} else {
// 记录错误码和错误信息,避免只向用户显示“支付失败”
}
不同 SDK 版本的构造方法和证书模式配置可能有差异,请以项目当前使用的支付宝 SDK 接口为准。
3. 让浏览器进入支付宝收银台
服务端取得的 response.getBody() 通常是一段自动提交的 HTML 表单。可以将它直接输出给浏览器,也可以按照所用 SDK 的接入方式完成页面跳转。
不要把支付网关请求改为未经签名的前端请求。这种做法既不安全,也无法通过支付宝验签。
4. 处理异步通知
支付宝会将支付结果通知发送到 notify_url。这个地址不需要配置为前端”业务域名”,但支付宝服务器必须能够通过公网访问它。
处理通知时,至少要完成以下操作:
- 使用支付宝公钥或证书验证签名。
- 校验
app_id、out_trade_no、total_amount、seller_id等关键字段。 - 确认交易状态符合业务要求。
- 通过幂等逻辑更新订单,避免重复通知被重复处理。
- 处理成功后,按照接口要求返回
success。
不能只根据 return_url 判断支付是否成功。用户可能关闭页面,网络也可能中断,跳转参数还可能被伪造。订单的最终状态应以验签后的异步通知或主动查单结果为准。
哪些情况可能涉及域名配置
以下情况与普通 H5 收银台跳转不同,可能需要配置域名:
- 应用审核要求填写网站地址或经营网址;
- 使用支付宝客户端内的 JSAPI、生活号、小程序等能力;
- 使用第三方支付插件或聚合支付平台,且平台另有域名白名单;
- 页面受到 CSP、跨域策略、WebView 跳转限制或应用内浏览器限制;
notify_url、return_url使用了无法通过公网访问的内网地址;- 支付宝后台针对当前应用类型明确提供了域名或 URL 配置项。
如果后台确实出现”业务域名”、“安全域名”或”授权回调地址”等配置项,应先确认它对应哪项产品能力。OAuth 回调域名、JSAPI 安全域名和 H5 支付通知地址不是一回事。
注意事项
- 生产环境建议使用稳定的 HTTPS 域名。
notify_url应直接接收服务器通知,不要指向需要登录或输入验证码的页面。- 本地开发地址、局域网 IP 和
localhost通常无法接收支付宝服务器发送的异步通知。 return_url只用于改善用户付款后的页面体验,不能作为可靠的到账凭证。- 更换域名后,应一并检查通知地址、跳转地址、防火墙、反向代理和证书配置。
- 如果手机网站支付能力尚未签约,或应用审核尚未通过,即使域名可以正常访问,支付接口也未必能够使用。
备注:内容仅供参考。
