免费

支付宝H5支付接入指南

支付宝手机网站支付(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支付详细说明文档。