编辑 | blame | 历史 | 原始文档

支付模块集成使用指南

本支付模块支持两种使用方式:**独立运行** 和 组件集成


方式一:独立运行

1. 编译打包

cd dryad-payment
mvn clean package

编译后会生成两个jar文件:
- dryad-payment-1.0.0.jar - 普通jar,供其他项目依赖
- dryad-payment-1.0.0-exec.jar - 可执行jar,用于独立运行

2. 运行服务

java -jar target/dryad-payment-1.0.0-exec.jar

3. 访问接口

服务启动后,可以直接访问:
- 健康检查: http://localhost:8080/api/health
- 微信支付: http://localhost:8080/api/pay/wechat/native
- 支付宝支付: http://localhost:8080/api/pay/alipay/precreate


方式二:作为组件集成到其他项目

1. 安装到本地Maven仓库

首先将支付模块安装到本地仓库:

cd dryad-payment
mvn clean install

2. 在主项目中添加依赖

在你的主项目 pom.xml 中添加:

<dependencies>
    <!-- 支付模块 -->
    <dependency>
        <groupId>com.ruoyi</groupId>
        <artifactId>dryad-payment</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

3. 配置支付参数

在主项目的 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 * * ?"

4. 配置数据库

在主项目的 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

5. 启动主项目

启动你的主项目,控制台会显示:

=================================
支付模块已启用
=================================

6. 使用支付功能

支付模块的所有接口会自动注册到主项目中,可以直接调用:

@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 后会生成:

  1. dryad-payment-1.0.0.jar
  • 普通jar包
  • 用于被其他项目依赖
  • 不包含Spring Boot启动器
  1. dryad-payment-1.0.0-exec.jar
  • 可执行jar包
  • 用于独立运行
  • 包含所有依赖
  1. dryad-payment-1.0.0-sources.jar
  • 源码jar包
  • 便于开发时查看源码

Maven命令

# 编译
mvn clean compile

# 打包(生成jar)
mvn clean package

# 安装到本地仓库
mvn clean install

# 跳过测试打包
mvn clean package -DskipTests

# 部署到远程仓库(需配置)
mvn clean deploy

最佳实践

1. 配置管理

建议将敏感配置(密钥等)放在配置中心或环境变量中:

payment:
  wechat:
    mchKey: ${WECHAT_MCH_KEY}  # 从环境变量读取
  alipay:
    privateKey: ${ALIPAY_PRIVATE_KEY}

2. 多环境配置

创建不同环境的配置文件:

  • application-dev.yml - 开发环境(沙箱)
  • application-prod.yml - 生产环境
# application-dev.yml
payment:
  alipay:
    serverUrl: https://openapi.alipaydev.com/gateway.do  # 沙箱环境

3. 日志配置

在主项目中可以单独配置支付模块的日志级别:

logging:
  level:
    com.ruoyi.payment: DEBUG  # 支付模块详细日志

4. 数据库隔离

如果主项目和支付模块使用不同数据库,需要配置多数据源。


常见问题

Q1: 集成后提示找不到Bean?

A: 确保主项目的启动类包路径在 com.ruoyi 或其子包下,或者手动添加扫描:

@SpringBootApplication
@ComponentScan(basePackages = {"com.ruoyi.main", "com.ruoyi.payment"})
public class MainApplication {
    // ...
}

Q2: 接口路径冲突?

A: 如果主项目也有 /api/pay 路径,建议修改支付模块的 @RequestMapping 路径。

Q3: 配置不生效?

A: 检查配置文件格式,确保:
- YAML缩进正确(2个空格)
- 属性名称正确
- 配置文件名称正确(application.yml)

Q4: 数据库表冲突?

A: 支付模块的表都以 pay_ 开头,一般不会冲突。如需修改表名,请修改实体类的 @TableName 注解。


技术支持

如有问题,请查看:
- 接口文档: API接口文档.md
- 设计文档: doc/设计方案.md
- 源码注释: 代码中包含详细注释