悠悠楠杉
Java实现支付宝支付接口完整对接指南
一、前期准备工作
对接支付宝支付前需要完成以下基础配置:
注册开发者账号
访问支付宝开放平台,完成企业实名认证(个人开发者可用于测试,但部分功能受限)。创建应用并获取关键信息
- APPID:应用唯一标识
- 应用私钥(private_key)
- 支付宝公钥(alipaypublickey)
配置沙箱环境
支付宝提供沙箱测试环境,可通过「开发中心 >研发服务」获取测试用的买家账号和金额。
java
// 基础配置示例
public class AlipayConfig {
public static String APP_ID = "202100xxxxxx";
public static String APP_PRIVATE_KEY = "MIIEvQIBADANB...";
public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqh...";
}
二、集成支付宝SDK
1. 添加Maven依赖
xml
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.35.0.ALL</version>
</dependency>
2. 初始化客户端
java
AlipayClient alipayClient = new DefaultAlipayClient(
"https://openapi.alipaydev.com/gateway.do", // 沙箱环境地址
AlipayConfig.APP_ID,
AlipayConfig.APP_PRIVATE_KEY,
"json",
"UTF-8",
AlipayConfig.ALIPAY_PUBLIC_KEY,
"RSA2"
);
三、实现支付核心逻辑
1. 创建支付请求
java
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
request.setReturnUrl("https://yourdomain.com/return"); // 同步通知地址
request.setNotifyUrl("https://yourdomain.com/notify"); // 异步通知地址
JSONObject bizContent = new JSONObject();
bizContent.put("outtradeno", "ORDER123456"); // 商户订单号
bizContent.put("totalamount", 88.88); // 金额
bizContent.put("subject", "VIP会员年费"); // 订单标题
bizContent.put("productcode", "FASTINSTANTTRADEPAY");
request.setBizContent(bizContent.toString());
String form = alipayClient.pageExecute(request).getBody();
2. 处理异步通知
java
Map<String,String> params = // 获取请求参数
boolean signVerified = AlipaySignature.rsaCheckV1(
params,
AlipayConfig.ALIPAYPUBLICKEY,
"UTF-8",
"RSA2");
if(signVerified) {
String tradeStatus = params.get("tradestatus");
if("TRADESUCCESS".equals(tradeStatus)) {
// 更新订单状态
String outTradeNo = params.get("outtradeno");
orderService.updateOrderStatus(outTradeNo, "PAID");
}
return "success"; // 必须返回success
}
四、常见问题解决方案
验签失败
- 检查公私钥是否匹配
- 确认使用的签名算法(RSA2)
- 注意参数编码必须为UTF-8
交易状态不同步
建议以异步通知为准,同步通知仅作页面跳转使用沙箱测试金额限制
单笔金额需 ≤ 5000元,日限额 ≤ 50000元
五、上线注意事项
将网关地址改为正式环境:
https://openapi.alipay.com/gateway.do
申请HTTPS证书并配置在回调域名
添加交易安全策略:
- 订单号唯一性校验
- 金额二次确认
- IP白名单限制
完整代码示例已上传GitHub:github.com/example/alipay-demo
提示:支付接口涉及资金交易,建议对接完成后进行多场景测试,包括网络中断、重复支付等异常情况处理。