java项目对接微信与支付宝支付需使用官方sdk完成统一下单、异步通知处理及签名验证,严禁手写http和签名逻辑;须配置商户密钥、证书等参数,通过sdk调用下单接口返回前端唤起支付,并严格校验回调签名与幂等性。

Java 项目对接微信与支付宝支付,核心是调用各自官方 SDK 发起统一下单、处理异步通知、验证签名并更新订单状态。不建议手写 HTTP 请求和签名逻辑,应优先使用官方或社区维护的成熟 SDK。
一、准备工作:开通账号与获取密钥
微信支付需注册微信支付商户平台,开通 JSAPI 支付(公众号/小程序)或 Native 支付(扫码),获取:
- 商户号(mch_id)
- 公众号 AppID(appid)
- APIv3 密钥(用于平台证书解密和回调验签)
- 微信支付平台证书(需定期下载更新)
支付宝需入驻开放平台,创建应用,获取:
- APPID(app_id)
- 商户私钥(merchant_private_key)
- 支付宝公钥(用于验签,可选,SDK 通常自动处理)
- 网关地址(沙箱用 https://openapi.alipaydev.com/gateway.do,正式用 https://openapi.alipay.com/gateway.do)
二、集成 SDK 与关键配置
推荐使用官方 SDK,避免签名、加解密、证书管理等低级错误:
-
微信支付 v3:使用
weixin-java-pay(WxJava),Maven 引入:
com.github.wechatpay-apiv3
wechatpay-apache-httpclient
0.4.12 -
支付宝:使用
alipay-sdk-java,Maven 引入:
com.alipay.sdk
alipay-sdk-java
4.42.57.ALL
配置类中注入必要参数(如 Spring Boot 中用 @ConfigurationProperties 统一管理),注意敏感信息(私钥、密钥)不要硬编码,建议从 Nacos、Vault 或环境变量加载。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
三、统一下单与前端唤起支付
服务端调用下单接口,返回参数给前端唤起对应支付控件:
-
微信 Native 支付:调用
transactions/native接口,返回code_url(二维码链接),前端生成二维码供用户扫码;
JSAPI 支付则需传openid,返回prepay_id,再按微信规范拼接签名后传给 JS 调用WXJSSDK。 -
支付宝当面付(扫码):调用
alipay.trade.precreate,返回qr_code字符串,前端生成二维码;
APP 支付调用alipay.trade.app.pay,返回加密后的字符串(orderString),由客户端 SDK 解析唤起支付宝 App。
注意:所有请求必须携带正确签名,微信 v3 使用平台证书 + APIv3 密钥生成 Authorization 头;支付宝使用 RSA2 签名,SDK 自动完成。
四、处理异步通知与幂等性保障
支付结果以异步通知形式由微信/支付宝服务器 POST 到你配置的 notify_url,这是唯一可信的结果来源:
-
微信回调:v3 接口返回 JSON 加密体,需用平台证书解密,并用官方工具验证响应头
Wechatpay-Timestamp、Wechatpay-Nonce和Wechatpay-Signature;成功处理后必须返回 HTTP 200 + 空响应体,否则会重试。 -
支付宝回调:POST 表单数据,含
notify_id(需调用alipay.notify.verify接口二次校验)、out_trade_no、trade_status(重点关注TRADE_SUCCESS或TRADE_FINISHED);验签通过后返回success字符串,否则返回fail。
务必在通知处理中加入:
- 订单状态判断(防止重复通知)
- 数据库事务 + 乐观锁或分布式锁(如 Redis setnx)保证幂等
- 日志记录完整请求与响应,便于对账排查
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










