Kamixitong/docs/testing_guide.md

284 lines
5.6 KiB
Markdown
Raw Permalink Normal View History

2025-12-12 11:35:14 +08:00
# 支付宝支付功能测试指南
## 测试环境准备
### 1. 安装依赖
```bash
pip install -r requirements.txt
```
### 2. 初始化数据库
```bash
flask db upgrade
```
### 3. 创建测试数据
在管理后台创建:
- 测试产品
- 测试套餐
- 设置套餐库存
## 测试步骤
### 1. 配置支付宝沙箱环境(推荐)
**使用支付宝沙箱环境进行测试:**
1. 登录[支付宝开放平台](https://open.alipay.com/)
2. 进入沙箱环境
3. 创建应用并获取测试参数
4. 配置环境变量:
```bash
export ALIPAY_APP_ID="沙箱APP_ID"
export ALIPAY_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
export ALIPAY_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
export ALIPAY_ALIPAY_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
export ALIPAY_GATEWAY="https://openapi.alipaydev.com/gateway.do"
```
### 2. 测试订单创建
**API测试**
```bash
curl -X POST http://localhost:5000/api/v1/user/orders \
-H "Content-Type: application/json" \
-d '{
"product_id": "产品ID",
"package_id": "套餐ID",
"contact_person": "测试用户",
"phone": "13800138000",
"quantity": 1
}'
```
**预期响应:**
```json
{
"success": true,
"message": "订单创建成功",
"data": {
"order_number": "ORD123456789",
"amount": 99.00
}
}
```
### 3. 测试支付宝支付
**API测试**
```bash
curl -X POST http://localhost:5000/api/v1/user/pay/alipay \
-H "Content-Type: application/json" \
-d '{
"order_number": "ORD123456789",
"payment_type": "pc"
}'
```
**预期响应:**
```json
{
"success": true,
"message": "支付链接创建成功",
"data": {
"payment_url": "https://openapi.alipaydev.com/gateway.do?...",
"order_number": "ORD123456789",
"amount": 99.00
}
}
```
### 4. 测试支付结果页面
**浏览器访问:**
```
http://localhost:5000/payment/result?order_number=ORD123456789
```
**预期结果:**
- 显示"正在处理..."页面
- 订单信息正确显示
- 每3秒自动查询一次订单状态
### 5. 测试支付流程
1. 访问购买页面:`http://localhost:5000/user/licenses/purchase`
2. 选择产品和套餐
3. 填写联系信息
4. 点击"立即支付"
5. 在支付宝沙箱环境中完成支付
6. 查看支付结果页面
## 功能测试检查清单
### ✅ 订单创建
- [ ] 订单成功写入数据库
- [ ] 订单号生成正确
- [ ] 订单金额计算正确
- [ ] 库存检查正常
### ✅ 支付链接生成
- [ ] PC端支付链接生成正常
- [ ] 移动端支付链接生成正常
- [ ] 支付参数正确传递
- [ ] 异步通知URL配置正确
### ✅ 支付宝异步通知
- [ ] 收到支付宝通知
- [ ] 签名验证通过
- [ ] 订单状态更新
- [ ] 许可证生成
- [ ] 操作日志记录
### ✅ 支付结果页面
- [ ] 支付成功页面显示正确
- [ ] 许可证密钥显示正确
- [ ] 支付成功信息显示正确
- [ ] 复制功能正常
### ✅ 订单查询
- [ ] 能够查询订单状态
- [ ] 订单信息显示正确
- [ ] 状态流转正确
## 常见问题排查
### 1. 订单创建失败
**检查项:**
- [ ] 产品和套餐是否存在
- [ ] 套餐是否启用
- [ ] 套餐库存是否充足
- [ ] 数据库连接是否正常
### 2. 支付链接生成失败
**检查项:**
- [ ] 支付宝配置是否正确
- [ ] 订单是否存在
- [ ] 订单状态是否为"待支付"
- [ ] 日志文件是否有错误信息
### 3. 异步通知未收到
**检查项:**
- [ ] 异步通知URL是否可访问
- [ ] 防火墙是否拦截
- [ ] 支付宝配置是否正确
- [ ] 日志文件中是否有通知记录
### 4. 许可证未生成
**检查项:**
- [ ] 异步通知是否正常处理
- [ ] LicenseGenerator类是否正常
- [ ] 数据库连接是否正常
- [ ] 日志文件是否有错误信息
## 测试数据
### 示例订单数据
```json
{
"product_id": "PROD_TEST_001",
"package_id": "PKG_MONTHLY",
"contact_person": "测试用户",
"phone": "13800138000",
"quantity": 1
}
```
### 示例套餐数据
```json
{
"name": "月卡套餐",
"price": 99.00,
"duration": 30,
"max_devices": 3,
"stock": 100
}
```
## 日志查看
### 实时查看日志
```bash
tail -f logs/kamaxitong.log
```
### 搜索特定订单日志
```bash
grep "ORD123456789" logs/kamaxitong.log
```
### 搜索支付宝通知日志
```bash
grep "ALIPAY_NOTIFY" logs/kamaxitong.log
```
## 性能测试
### 并发测试
使用工具如 `ab``wrk` 进行并发测试:
```bash
ab -n 100 -c 10 -H "Content-Type: application/json" \
-p test_data.json \
http://localhost:5000/api/v1/user/orders
```
### 数据库压力测试
检查数据库连接池配置:
```python
# config.py
SQLALCHEMY_ENGINE_OPTIONS = {
"pool_size": 10, # 连接池大小
"max_overflow": 20, # 最大溢出连接数
"pool_recycle": 3600, # 连接回收时间
}
```
## 安全测试
### 1. 签名验证测试
- 修改异步通知参数
- 验证签名验证是否正常
- 检查非法通知是否被拒绝
### 2. 金额篡改测试
- 修改异步通知中的金额
- 验证金额检查是否正常
- 检查篡改金额的订单是否被拒绝
### 3. 订单重复通知测试
- 多次发送相同的异步通知
- 验证订单状态是否正确处理
- 检查重复通知不会重复生成许可证
## 总结
完成以上测试后,支付宝支付功能即可投入使用。在生产环境中,请注意:
1. 使用HTTPS协议
2. 定期备份数据库
3. 监控日志文件
4. 定期检查订单状态
5. 及时处理异常订单