feat(config): 更新开发和生产环境配置

- 修改开发环境前端URL从localhost改为公网地址
- 更新PayPal Webhook URL使用公网地址配置
- 在生产环境配置中添加服务器端口和应用配置
- 添加PayPal支付配置的详细注释说明
- 简化ERP用户管理API文档格式,移除冗余说明
- 移除PayPal订单生命周期和Webhook指南文档
- 优化PayPal Webhook配置文档内容

fix(order): 修复订单创建和库存管理并发问题

- 实现SELECT FOR UPDATE锁定SKU记录防止超卖
- 添加库存扣减原子操作确保并发安全
- 简化日志输出,移除冗余调试信息
- 添加订单取消功能并恢复库存
- 优化订单查询和状态更新逻辑

feat(mapper): 添加库存扣减和恢复功能

- 实现deductStock方法用于扣减库存
- 添加restoreStock方法用于恢复库存
- 实现selectByIdForUpdate方法用于悲观锁
- 为Mapper接口添加必要的注解支持
This commit is contained in:
2025-12-26 10:54:01 +08:00
parent f8d116f9a3
commit 2d9a9c3668
19 changed files with 1379 additions and 1329 deletions

View File

@@ -1,101 +1,44 @@
# PayPal Webhook 配置说明
# PayPal Webhook 配置
## 内网穿透配置
当前使用内网穿透服务cpolar将本地服务暴露到公网
- **内网地址**: `http://localhost:8082`
- **公网地址**: `https://2646b437.r33.cpolar.top`
- **Webhook URL**: `https://2646b437.r33.cpolar.top/api/paypal/webhook`
## 配置文件
Webhook URL 已配置在 `application-dev.yml` 中:
```yaml
paypal:
webhook-url: https://2646b437.r33.cpolar.top/api/paypal/webhook
```
## PayPal 控制台配置步骤
## 配置步骤
1. **登录 PayPal 开发者控制台**
- 沙箱环境https://developer.paypal.com/dashboard/
- 使用你的 PayPal 开发者账号登录
- 选择你的沙箱应用
2. **选择应用**
- 进入 "My Apps & Credentials"
- 选择你的沙箱应用Sandbox App
3. **配置 Webhook**
- 在应用详情页面,找到 "Webhooks" 部分
- 点击 "Add Webhook" 或 "Edit Webhook"
- 输入 Webhook URL: `https://2646b437.r33.cpolar.top/api/paypal/webhook`
- 选择要监听的事件类型:
2. **配置 Webhook**
- 进入应用详情页面,找到 "Webhooks" 部分
- 点击 "Add Webhook"
- 输入 Webhook URL: `https://你的域名/api/paypal/webhook`
- 选择事件类型:
- `PAYMENT.CAPTURE.COMPLETED` - 支付捕获完成
- `PAYMENT.CAPTURE.DENIED` - 支付捕获被拒绝
- `PAYMENT.CAPTURE.REFUNDED` - 支付退款
- `CHECKOUT.ORDER.APPROVED` - 订单已批准
- `CHECKOUT.ORDER.COMPLETED` - 订单已完成
- `CHECKOUT.ORDER.CANCELLED` - 订单已取消
- 保存配置
- `CHECKOUT.ORDER.DECLINED` - 订单被拒绝
4. **获取 Webhook ID**
- 配置完成后,PayPal 会生成一个 Webhook ID
- 将此 Webhook ID 配置到 `application-dev.yml` 中的 `paypal.webhook-id`
3. **获取 Webhook ID**
- 配置完成后,获取 Webhook ID
- 配置到 `application-dev.yml` 中的 `paypal.webhook-id`
## 配置文件
```yaml
paypal:
webhook-url: https://你的域名/api/paypal/webhook
webhook-id: YOUR_WEBHOOK_ID
```
## 注意事项
1. **内网穿透地址变化**
- 免费版 cpolar 的地址可能会变化
- 如果地址变化需要
- 更新 `application-dev.yml` 中的 `webhook-url`
- 在 PayPal 控制台更新 Webhook URL
- **生产环境必须启用签名验证**
- **必须使用 HTTPS**
- 内网穿透地址变化需要更新配置
2. **HTTPS 要求**
- PayPal Webhook 要求使用 HTTPS
- cpolar 提供的地址默认支持 HTTPS
3. **测试 Webhook**
- 在 PayPal 控制台可以测试 Webhook
- 选择 "Send test event" 发送测试事件
- 检查后端日志确认是否收到事件
4. **生产环境**
- 生产环境需要使用固定的域名
- 建议使用自己的域名配置 SSL 证书
- 更新 `application-prod.yml` 中的 `webhook-url`
## 验证配置
启动应用后,查看日志中的 PayPal 配置信息:
## 本地测试
使用内网穿透工具(如 ngrok 或 cpolar
```bash
ngrok http 8082
```
═══════════════════════════════════════════════════════════
PayPal配置加载验证:
- Client ID: ✅ 已配置 (...)
- Client Secret: ✅ 已配置 (...)
- Mode: sandbox
- Enabled: true
- Base URL: https://api-m.sandbox.paypal.com
- Webhook URL: ✅ https://2646b437.r33.cpolar.top/api/paypal/webhook
═══════════════════════════════════════════════════════════
```
如果 Webhook URL 显示为 "❌ 未配置",请检查配置文件。
## 后端接口
Webhook 回调接口路径:`/api/paypal/webhook`
- **方法**: POST
- **路径**: `/api/paypal/webhook`
- **完整URL**: `https://2646b437.r33.cpolar.top/api/paypal/webhook`
## 前端配置
前端不需要修改,因为:
- 前端使用 `window.location.origin` 自动获取当前域名
- 用户访问的是前端地址,不是后端地址
- 支付成功/取消回调使用前端路由,不涉及 Webhook
将生成的HTTPS地址配置到PayPal Webhook URL。