Kamixitong/docs/testing_guide.md
2025-12-12 11:35:14 +08:00

284 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 支付宝支付功能测试指南
## 测试环境准备
### 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. 及时处理异常订单