优化邮件发送功能和支付宝支付诊断

- 修复邮件服务区域配置(改为ap-hongkong)
- 增强支付宝支付错误诊断和日志
- 修复代码质量问题(OrderService、ImageToVideoTask)
- 添加支付宝支付问题排查文档
- 增加详细的错误诊断信息
This commit is contained in:
AIGC Developer
2025-11-03 13:20:30 +08:00
parent b5bbd8841e
commit 149b201300
15 changed files with 1264 additions and 121 deletions

View File

@@ -0,0 +1,144 @@
# 支付宝支付问题诊断指南
## 当前问题
根据日志显示支付宝API调用出现 **"Read timed out"** 错误。
## 可能的原因
### 1. 网络连接问题
- **网络延迟过高**从本地到支付宝沙箱服务器openapi.alipaydev.com的网络延迟可能超过60秒
- **网络不稳定**:网络连接可能间歇性中断
### 2. 支付宝沙箱环境问题
- **服务响应慢**:支付宝沙箱环境可能响应较慢或不稳定
- **服务暂时不可用**:沙箱环境可能正在维护
### 3. 防火墙或代理问题
- **防火墙阻止**本地防火墙可能阻止对支付宝API的访问
- **代理服务器配置**:如果使用代理,可能需要配置代理设置
### 4. ngrok隧道问题
- **隧道过期**ngrok免费隧道可能已过期或不可用
- **通知URL不可达**支付宝无法访问通知URL可能导致超时
## 诊断步骤
### 1. 检查网络连接
```powershell
# 测试能否连接到支付宝沙箱服务器
ping openapi.alipaydev.com
# 测试DNS解析
nslookup openapi.alipaydev.com
```
### 2. 检查ngrok隧道
```powershell
# 检查ngrok是否运行
Get-Process -Name ngrok -ErrorAction SilentlyContinue
# 访问ngrok控制面板查看隧道状态
# 浏览器打开: http://127.0.0.1:4040
```
### 3. 测试网络可达性
```powershell
# 使用PowerShell测试HTTPS连接
$url = "https://openapi.alipaydev.com/gateway.do"
try {
$response = Invoke-WebRequest -Uri $url -Method GET -TimeoutSec 10
Write-Host "连接成功: $($response.StatusCode)"
} catch {
Write-Host "连接失败: $($_.Exception.Message)"
}
```
### 4. 检查防火墙设置
确保防火墙允许以下连接:
- 出站连接:`openapi.alipaydev.com:443`
- 如果有ngrok确保ngrok可访问
## 解决方案
### 方案1: 增加超时时间(已实施)
已在代码中将超时时间从30秒增加到60秒
- 连接超时60秒
- 读取超时60秒
### 方案2: 检查ngrok配置
1. **确认ngrok隧道运行**
```bash
ngrok http 8080
```
2. **更新配置文件中的URL**
```properties
alipay.notify-url=https://YOUR-NGROK-URL/api/payments/alipay/notify
alipay.return-url=https://YOUR-NGROK-URL/api/payments/alipay/return
```
3. **重新编译并重启服务**
### 方案3: 使用代理或VPN
如果网络环境限制了对支付宝服务器的访问:
1. 配置HTTP代理
2. 或使用VPN连接到支持的地区
### 方案4: 检查支付宝沙箱配置
1. **登录支付宝开放平台**https://open.alipay.com/
2. **检查应用配置**
- 应用ID是否正确
- 密钥是否正确
- 网关地址是否为沙箱地址:`https://openapi.alipaydev.com/gateway.do`
### 方案5: 测试开发模式
如果暂时无法连接到支付宝,可以考虑:
1. 在开发环境中模拟支付宝响应
2. 或暂时跳过支付功能进行其他功能的测试
## 当前配置
根据 `application-dev.properties`
```properties
alipay.app-id=9021000157616562
alipay.gateway-url=https://openapi.alipaydev.com/gateway.do
alipay.charset=UTF-8
alipay.sign-type=RSA2
alipay.notify-url=https://curtly-aphorismatic-ginger.ngrok-free.dev/api/payments/alipay/notify
alipay.return-url=https://curtly-aphorismatic-ginger.ngrok-free.dev/api/payments/alipay/return
```
## 日志分析
错误日志示例:
```
Read timed out
```
这通常表示:
- 网络连接建立成功
- 但服务器在60秒内没有响应
- 可能是服务器负载高或网络延迟
## 建议的排查顺序
1.**检查网络连接**ping openapi.alipaydev.com
2.**检查ngrok隧道**:确认隧道是否运行
3.**查看详细日志**:重启服务后查看新增的诊断信息
4. ⚠️ **如果问题持续**:考虑使用代理或联系支付宝技术支持
## 下一步
重新编译项目后,尝试创建支付订单,查看新的诊断日志输出,这将提供更详细的错误信息和解决建议。