第一次提交
This commit is contained in:
284
docs/testing_guide.md
Normal file
284
docs/testing_guide.md
Normal file
@@ -0,0 +1,284 @@
|
||||
# 支付宝支付功能测试指南
|
||||
|
||||
## 测试环境准备
|
||||
|
||||
### 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. 及时处理异常订单
|
||||
Reference in New Issue
Block a user