本支付模块支持两种使用方式:**独立运行** 和 组件集成。
cd dryad-payment
mvn clean package
编译后会生成两个jar文件:
- dryad-payment-1.0.0.jar - 普通jar,供其他项目依赖
- dryad-payment-1.0.0-exec.jar - 可执行jar,用于独立运行
java -jar target/dryad-payment-1.0.0-exec.jar
服务启动后,可以直接访问:
- 健康检查: http://localhost:8080/api/health
- 微信支付: http://localhost:8080/api/pay/wechat/native
- 支付宝支付: http://localhost:8080/api/pay/alipay/precreate
首先将支付模块安装到本地仓库:
cd dryad-payment
mvn clean install
在你的主项目 pom.xml 中添加:
<dependencies>
<!-- 支付模块 -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>dryad-payment</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
在主项目的 application.yml 中添加支付配置:
# 支付模块配置
payment:
# 启用支付模块
enabled: true
# 微信支付配置
wechat:
appId: wx70f6a7346ee842xx
mchId: 1573728xxx
mchKey: Xz0ClPK3f5sCeT6SGa1vpVmyUFcbpxxx
notifyUrl: https://api.966120.com/api/pay/notify/wechat
signType: MD5
# 支付宝配置
alipay:
appId: 2021xxxxxxxxxxxxx
privateKey: MIIEvQIBADANBgkqhki...
alipayPublicKey: MIIBIjANBgkqhki...
serverUrl: https://openapi.alipay.com/gateway.do
notifyUrl: https://api.966120.com/api/pay/notify/alipay
signType: RSA2
# 业务回调配置
business:
callbackSignSecret: your-hmac-secret-key-here
callbackRetryMaxCount: 10
callbackRetryIntervals: 0,1,5,15,60
# 二维码配置
qrcode:
size: 300
format: PNG
# 对账配置
reconciliation:
enabled: true
cron: "0 0 2 * * ?"
在主项目的 application.yml 中配置数据库连接:
spring:
datasource:
url: jdbc:mysql://localhost:3306/dryad_payment?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
执行支付模块的数据库脚本:
mysql -u root -p < dryad-payment/src/main/resources/sql/schema.sql
启动你的主项目,控制台会显示:
=================================
支付模块已启用
=================================
支付模块的所有接口会自动注册到主项目中,可以直接调用:
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private PaymentService paymentService;
@PostMapping("/pay")
public AjaxResult createPayment(@RequestBody OrderDTO order) {
PaymentRequest request = new PaymentRequest();
request.setBizOrderId(order.getOrderNo());
request.setAmount(order.getAmount());
request.setSubject(order.getSubject());
request.setCallbackUrl("https://your-domain.com/order/notify");
PaymentResponse response = paymentService.createWechatNativePayment(request);
return AjaxResult.success(response);
}
}
如果某个环境不需要支付功能,可以通过配置禁用:
payment:
enabled: false # 禁用支付模块
如果需要修改接口路径,可以在主项目中配置:
server:
servlet:
context-path: /api # 主项目统一前缀
支付接口会自动添加此前缀,例如:
- /api/api/pay/wechat/native
主项目的配置会覆盖支付模块的默认配置,例如修改端口:
server:
port: 9090 # 主项目端口
执行 mvn clean package 后会生成:
# 编译
mvn clean compile
# 打包(生成jar)
mvn clean package
# 安装到本地仓库
mvn clean install
# 跳过测试打包
mvn clean package -DskipTests
# 部署到远程仓库(需配置)
mvn clean deploy
建议将敏感配置(密钥等)放在配置中心或环境变量中:
payment:
wechat:
mchKey: ${WECHAT_MCH_KEY} # 从环境变量读取
alipay:
privateKey: ${ALIPAY_PRIVATE_KEY}
创建不同环境的配置文件:
application-dev.yml - 开发环境(沙箱)application-prod.yml - 生产环境# application-dev.yml
payment:
alipay:
serverUrl: https://openapi.alipaydev.com/gateway.do # 沙箱环境
在主项目中可以单独配置支付模块的日志级别:
logging:
level:
com.ruoyi.payment: DEBUG # 支付模块详细日志
如果主项目和支付模块使用不同数据库,需要配置多数据源。
A: 确保主项目的启动类包路径在 com.ruoyi 或其子包下,或者手动添加扫描:
@SpringBootApplication
@ComponentScan(basePackages = {"com.ruoyi.main", "com.ruoyi.payment"})
public class MainApplication {
// ...
}
A: 如果主项目也有 /api/pay 路径,建议修改支付模块的 @RequestMapping 路径。
A: 检查配置文件格式,确保:
- YAML缩进正确(2个空格)
- 属性名称正确
- 配置文件名称正确(application.yml)
A: 支付模块的表都以 pay_ 开头,一般不会冲突。如需修改表名,请修改实体类的 @TableName 注解。
如有问题,请查看:
- 接口文档: API接口文档.md
- 设计文档: doc/设计方案.md
- 源码注释: 代码中包含详细注释