支付宝手机网站支付(Wap支付)是支付宝为移动端网页提供的支付解决方案。本文详细介绍支付宝H5支付的接入流程、接口对接和代码实现。
什么是支付宝手机网站支付?
支付宝手机网站支付是支付宝提供的移动端网页支付产品,适用于手机浏览器(非支付宝客户端)中的网站。用户在商户网站选择商品后,通过跳转到支付宝收银台完成支付。
接入准备
1. 注册支付宝商家账号
访问 b.alipay.com,注册并完成实名认证。
2. 创建应用
在"开发者中心"创建应用,应用类型选择"移动应用"或"网页&移动应用"。
3. 开通手机网站支付能力
在应用详情页中添加能力"手机网站支付"。
4. 配置密钥
生成 RSA2 密钥对,上传应用公钥到支付宝,获取支付宝公钥用于验签。
5. 配置回调地址
在应用管理中配置支付回调地址(notify_url 和 return_url)。
核心接口
支付宝H5支付的核心接口是 alipay.trade.wap.pay。
接口参数
{
"out_trade_no": "20260920123456", // 商户订单号
"product_code": "QUICK_WAP_WAY", // 产品码(固定)
"total_amount": "99.00", // 订单金额(元)
"subject": "智源论坛付费课程", // 订单标题
"body": "Vue3组合式API完全指南", // 订单描述
}
Java 示例代码
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradeWapPayRequest;
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(NOTIFY_URL);
request.setReturnUrl(RETURN_URL);
request.setBizContent("{" +
"\"out_trade_no\":\"" + outTradeNo + "\"," +
"\"total_amount\":\"99.00\"," +
"\"subject\":\"智源论坛付费课程\"," +
"\"product_code\":\"QUICK_WAP_WAY\"" +
"}");
String formHtml = alipayClient.pageExecute(request).getBody();
// 返回 formHtml,浏览器自动提交跳转到支付宝收银台
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(formHtml);
异步通知处理
@PostMapping("/api/pay/alipay/notify")
public String alipayNotify(HttpServletRequest request) throws Exception {
Map<String, String> params = new HashMap<>();
Map<String, String[]> requestParams = request.getParameterMap();
for (String name : requestParams.keySet()) {
String[] values = requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
params.put(name, valueStr);
}
// 验签
boolean signVerified = AlipaySignature.rsaCheckV1(
params, ALIPAY_PUBLIC_KEY, "UTF-8", "RSA2"
);
if (!signVerified) {
return "fail";
}
// 处理订单逻辑
String outTradeNo = params.get("out_trade_no");
String tradeStatus = params.get("trade_status");
if ("TRADE_SUCCESS".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)) {
// 标记订单为已支付
orderService.markAsPaid(outTradeNo);
}
return "success";
}
测试环境
支付宝提供沙箱环境用于联调测试:
- 网关地址:
https://openapi.alipaydev.com/gateway.do - 沙箱账号:可在沙箱后台获取
- 沙箱 APPID:与应用 ID 不同
常见问题
Q1:支付宝和微信支付的区别?
A:支付宝侧重电商、支付场景;微信支付侧重社交、小额支付场景。两者覆盖用户群体有重叠但不完全相同,建议同时接入。
Q2:支付后多久到账?
A:T+1 工作日结算到对公账户。可申请实时到账功能。
Q3:费率?
A:标准费率 0.6%,根据行业和交易额可能有所调整。
总结
支付宝H5支付是移动端网站支付的重要方案,其开发流程相对简洁,文档完善,是商业网站支付集成的优选。
更多详细内容请参考 支付宝H5支付详细说明文档。