一、支付宝接入流程简介

第三方支付已成为互联网业务的标配,但支付业务风险高、资质要求严,绝大多数企业选择接入成熟的第三方支付产品。国内持有支付牌照的公司仅200余家,支付宝作为行业领导者,提供了完善的开放平台供开发者接入。

1.1 支付宝开放平台

支付宝提供两个主要开放平台:

  • 支付宝商家中心:面向商家,提供商户管理功能

  • 支付宝开放平台:面向开发者,提供API和SDK接入能力

本文重点讲解基于支付宝开放平台的技术接入。

平台入口:https://open.alipay.com/


二、支付宝接入应用场景

2.1 丰富的支付场景

支付宝支持多种支付场景,包括但不限于:

  • 当面付(扫码支付)

  • 电脑网站支付

  • 手机网站支付

  • APP支付

  • 小程序支付

2.2 当面付场景解析

当面付有两种典型模式:

  1. 用户出示付款码:商家扫描用户支付宝付款码

  2. 商家出示收款码:用户扫描商家二维码完成支付

当前电商项目采用第二种模式:用户下单后,系统生成支付宝收款二维码,用户使用支付宝APP扫码完成支付。

官方文档:https://opendocs.alipay.com/open/194/105072


三、支付宝沙箱环境与正式环境

3.1 沙箱环境介绍

支付宝为开发者提供免费的沙箱环境,用于测试和调试,避免在正式环境产生实际资金流水。

沙箱环境地址:https://openhome.alipay.com/develop/sandbox/app

3.2 关键参数说明

沙箱环境提供以下关键测试参数:

  • PID(商户号):商家账户唯一标识

  • APPID:应用唯一标识

  • 支付宝公钥:用于验签

  • 应用公钥/私钥:用于加签

3.3 沙箱版支付宝APP

支付宝提供专门的沙箱版支付宝APP,用于模拟支付流程。开发者需下载并安装到测试手机。

下载地址:https://open.alipay.com/develop/sandbox/tool

3.4 环境差异说明

重要提醒:沙箱环境与正式环境的接口存在差异,沙箱测试通过后,仍需在正式环境重新测试验收。


四、当面付应用测试接入实战

4.1 示例项目准备

支付宝官方提供了丰富的SDK和Demo,本文以当面付Demo为例进行讲解。

4.1.1 项目结构

text

AlipayDemo/
├── src/main/java/com/example/demo/
│   ├── config/AlipayConfig.java    # 电脑网站支付配置
│   └── f2f/Main.java               # 当面付主程序
└── resources/
    └── zfbinfo.properties          # 当面付配置文件
4.1.2 关键配置项

当面付配置文件(zfbinfo.properties)

properties

# 应用ID
app_id=2021000116691234
# 商户PID
pid=2088621912341234
# 支付宝网关(沙箱环境)
open_api_domain=https://openapi.alipaydev.com/gateway.do
# 支付宝公钥
alipay_public_key=MIIBIjANBqkqhiG9w0BAQEFAASC...
# 应用私钥
private_key=MIIEvQIBADANBqkqhiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7g9Wk...

电脑网站支付配置(AlipayConfig.java)
配置项类似,但需注意网关地址的区别。

4.2 RSA非对称加密机制

支付宝采用双向RSA非对称加密保证交易安全:

  1. 应用请求支付宝:使用应用私钥加签,支付宝使用应用公钥验签

  2. 支付宝响应应用:使用支付宝私钥加签,应用使用支付宝公钥验签

密钥生成工具

下载地址:https://opendocs.alipay.com/common/02kij

密钥配置流程

  1. 生成应用公私钥对

  2. 上传应用公钥到支付宝开放平台

  3. 获取支付宝公钥并配置到应用中

  4. 保存应用私钥用于请求加签

4.3 代码调整与运行

4.3.1 修改二维码生成路径

Main.java第435行附近,修改二维码保存路径:

java

// 需要修改为运行机器上的路径
String filePath = String.format("D:/alipay/qr-%s.png", response.getOutTradeNo());
log.info("filePath:" + filePath);
ZxingUtils.getQRCodeImage(response.getQRCode(), 256, filePath);

注意:确保目标目录(如D:/alipay/)已提前创建。

4.3.2 运行测试

执行Main.java,控制台输出预下单成功日志:

text

19:26:18.367 [main] INFO com.example.f2f.Main - 支付宝预下单成功:)
19:26:18.367 [main] INFO com.example.f2f.Main - code:10000,msg:Success
19:26:18.367 [main] INFO com.example.f2f.Main - body: {"alipay_trade_precreate_response": {...}}
19:26:18.367 [main] INFO com.example.f2f.Main - filePath:D:/alipay/qr-tradeprecreate16632411762145609885.png
4.3.3 扫码支付测试
  1. 在指定目录找到生成的二维码图片

  2. 使用沙箱版支付宝APP扫码

  3. 在沙箱环境查看买卖双方余额变化,确认交易完成


五、支付流程设计与优化

5.1 电商支付流程设计

当前电商项目的支付流程基于以下设计:

  1. 订单创建:用户提交订单,系统生成唯一订单号

  2. 支付触发:调用支付宝预下单接口,获取支付二维码

  3. 页面展示:前端展示二维码,用户扫码支付

  4. 异步通知:支付宝回调通知支付结果

  5. 状态同步:更新订单状态,触发后续业务逻辑

5.2 订单超时回退机制

项目采用RocketMQ事务消息实现订单支付超时回退:

  • 支付超时(如30分钟未支付)

  • 系统自动取消订单

  • 释放库存等预留资源

  • 通知用户支付超时

5.3 优化建议

  1. 支付状态轮询:前端定时查询支付状态,避免过度依赖异步通知

  2. 支付结果页优化:支付完成后跳转至独立结果页,避免主从延迟问题

  3. 重试机制:对支付宝回调失败的情况,建立重试队列

  4. 对账系统:每日定时与支付宝对账,确保数据一致性


六、总结与注意事项

6.1 接入流程总结

  1. 注册开发者账号:访问支付宝开放平台

  2. 创建应用:获取APPID

  3. 配置密钥:生成RSA密钥对,上传公钥

  4. 签约产品:在商家中心签约所需支付产品

  5. 开发集成:根据文档集成SDK,测试沙箱环境

  6. 上线验收:迁移到正式环境,重新测试验收

6.2 注意事项

  1. 环境隔离:沙箱环境仅用于测试,正式环境需重新申请配置

  2. 密钥安全:应用私钥务必妥善保管,禁止提交到代码仓库

  3. 异步通知:必须支持支付宝的异步通知,并正确处理幂等性

  4. 超时设置:合理设置支付超时时间,避免资源长期占用

  5. 监控告警:建立支付成功率、响应时间等监控指标

6.3 扩展学习

  1. 多支付渠道:考虑集成微信支付、银联支付等

  2. 分账功能:平台型电商需考虑分账、结算功能

  3. 跨境支付:如需服务海外用户,考虑接入跨境支付方案

  4. 资金安全:建立风控系统,防范欺诈交易

支付宝支付接入是电商系统的关键环节,需要综合考虑功能完整性、用户体验和系统稳定性。

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐