docs(guide): 添加PayPal配置检查和客户订单表创建说明

- 创建PAYPAL_CONFIG_CHECK.md文档,提供PayPal配置错误的解决方案
- 添加mt-pay/database/README_CUSTOMER_ORDER.md文档,说明客户订单表创建方法
- 提供详细的数据库表结构和SQL脚本执行指南
- 包含配置文件格式要求和调试方法说明
This commit is contained in:
2025-12-23 16:03:24 +08:00
parent 48dc5acddc
commit ca5e88cdf1
4 changed files with 5167 additions and 0 deletions

68
PAYPAL_CONFIG_CHECK.md Normal file
View File

@@ -0,0 +1,68 @@
# PayPal配置检查指南
## 错误信息
```
Username must not be null
```
这个错误表示PayPal的`clientId`Client ID配置为空。
## 问题原因
Spring Boot的`@ConfigurationProperties`在绑定配置时,需要确保:
1. 配置文件中的属性名格式正确
2. 配置类能够正确加载
3. 配置文件被正确读取
## 解决方案
### 1. 检查配置文件
确保 `application-dev.yml` 中有以下配置:
```yaml
paypal:
client-id: AdGYUZpvLuHR30dybOApvM-RNB1pVKtd74SVfh-6TK52xV-1JEBddHVMCWuDdyyHri4DXd4kABBi7Icb
client-secret: ENblspyRmwsOU_PWFurlhEYUF5Da6aYKl0pjK4ehm7p3R5aSqvbpaF_YsIIs8v0ty1c9WJu15XP-Fe_1
mode: sandbox
enabled: true
```
### 2. 检查Spring Boot配置
确保主应用类或配置类启用了配置属性绑定。
### 3. 重启应用
修改配置后,**必须重启应用**才能生效。
### 4. 验证配置加载
启动应用后检查日志中是否有PayPal配置相关的错误信息。
## 配置属性映射
Spring Boot会自动将以下格式进行映射
- `client-id` (kebab-case) → `clientId` (camelCase)
- `client-secret` (kebab-case) → `clientSecret` (camelCase)
## 调试方法
如果配置仍然无法加载,可以:
1. **添加启动日志**:在`PayPalProperties`类中添加`@PostConstruct`方法打印配置值
2. **检查环境变量**:确认使用的是`dev`环境(`spring.profiles.active=dev`
3. **检查配置文件位置**:确保`application-dev.yml``src/main/resources`目录下
## 临时解决方案
如果配置仍然无法加载,可以在代码中临时硬编码(仅用于测试):
```java
// 仅用于测试,生产环境必须使用配置文件
if (clientId == null) {
clientId = "AdGYUZpvLuHR30dybOApvM-RNB1pVKtd74SVfh-6TK52xV-1JEBddHVMCWuDdyyHri4DXd4kABBi7Icb";
clientSecret = "ENblspyRmwsOU_PWFurlhEYUF5Da6aYKl0pjK4ehm7p3R5aSqvbpaF_YsIIs8v0ty1c9WJu15XP-Fe_1";
}
```

File diff suppressed because it is too large Load Diff

3655
logs/mt-pay.2025-12-23.log Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,111 @@
# 客户订单表创建说明
## 问题
如果遇到错误:`Table 'mtpay.customer_order' doesn't exist`
说明数据库中没有 `customer_order`需要执行SQL脚本创建。
## 解决方案
### 方法1使用MySQL客户端执行推荐
1. 连接到数据库:
```bash
mysql -h rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com -P 3306 -u mtkj2025 -p mtpay
```
2. 执行SQL脚本
```sql
source E:/MTKJPAY/mt-pay/database/customer_order_schema.sql
```
或者直接复制SQL内容执行
```sql
CREATE TABLE `customer_order` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`order_no` VARCHAR(64) NOT NULL UNIQUE COMMENT '订单号(全局唯一)',
`product_id` BIGINT NOT NULL COMMENT '商品ID',
`product_name` VARCHAR(500) NOT NULL COMMENT '商品名称',
`sku_id` BIGINT NOT NULL COMMENT 'SKU ID',
`sku_name` VARCHAR(500) NOT NULL COMMENT 'SKU名称/描述',
`quantity` INT NOT NULL COMMENT '购买数量',
`unit_price` DECIMAL(10, 2) NOT NULL COMMENT '单价',
`total_amount` DECIMAL(10, 2) NOT NULL COMMENT '订单总金额',
`currency` VARCHAR(3) NOT NULL COMMENT '货币代码',
`status` VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '订单状态PENDING-待支付PAID-已支付SHIPPED-已发货COMPLETED-已完成CANCELLED-已取消',
-- 客户信息
`customer_name` VARCHAR(100) NOT NULL COMMENT '客户姓名',
`customer_phone` VARCHAR(20) NOT NULL COMMENT '客户电话',
`customer_email` VARCHAR(100) COMMENT '客户邮箱',
-- 收货地址
`shipping_name` VARCHAR(100) NOT NULL COMMENT '收货人姓名',
`shipping_phone` VARCHAR(20) NOT NULL COMMENT '收货人电话',
`shipping_country` VARCHAR(50) NOT NULL COMMENT '收货国家',
`shipping_state` VARCHAR(50) COMMENT '收货州/省',
`shipping_city` VARCHAR(50) NOT NULL COMMENT '收货城市',
`shipping_street` VARCHAR(200) NOT NULL COMMENT '收货街道地址',
`shipping_postcode` VARCHAR(20) COMMENT '收货邮编',
-- 支付信息
`payment_order_id` BIGINT COMMENT '关联的支付订单ID',
`payment_status` VARCHAR(20) DEFAULT 'UNPAID' COMMENT '支付状态UNPAID-未支付PAID-已支付FAILED-支付失败',
-- 备注
`remark` VARCHAR(500) COMMENT '订单备注',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_order_no` (`order_no`),
KEY `idx_product_id` (`product_id`),
KEY `idx_status` (`status`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='客户订单表';
```
### 方法2使用数据库管理工具
使用Navicat、DBeaver、MySQL Workbench等工具
1. 连接到数据库 `mtpay`
2. 打开SQL编辑器
3. 复制 `customer_order_schema.sql` 文件内容
4. 执行SQL脚本
### 方法3使用命令行Windows PowerShell
```powershell
# 读取SQL文件内容
$sql = Get-Content "E:\MTKJPAY\mt-pay\database\customer_order_schema.sql" -Raw
# 执行SQL需要先安装mysql客户端
mysql -h rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com -P 3306 -u mtkj2025 -p mtpay -e $sql
```
## 验证
执行完成后,可以验证表是否创建成功:
```sql
-- 查看表是否存在
SHOW TABLES LIKE 'customer_order';
-- 查看表结构
DESC customer_order;
-- 或者
SHOW CREATE TABLE customer_order;
```
## 注意事项
1. 确保数据库连接信息正确
2. 确保有创建表的权限
3. 如果表已存在,可以先删除再创建:
```sql
DROP TABLE IF EXISTS `customer_order`;
```
然后重新执行创建脚本